c_src: update for 0.4
[nit.git] / c_src / nitc._tables.c
index 35d3ec1..536d1d8 100644 (file)
@@ -7,24 +7,27 @@
 #include "parser_prod._sep.h"
 #include "lexer._sep.h"
 #include "parser_nodes._sep.h"
+#include "location._sep.h"
 #include "standard._sep.h"
 #include "environ._sep.h"
 #include "symbol._sep.h"
-#include "hash._sep.h"
 #include "string._sep.h"
-#include "array._sep.h"
+#include "collection._sep.h"
+#include "range._sep.h"
 #include "abstract_collection._sep.h"
 #include "kernel._sep.h"
-#include "time._sep.h"
+#include "list._sep.h"
 #include "sorter._sep.h"
+#include "array._sep.h"
+#include "hash_collection._sep.h"
+#include "hash._sep.h"
+#include "time._sep.h"
 #include "file._sep.h"
 #include "stream._sep.h"
 #include "string_search._sep.h"
 #include "exec._sep.h"
-#include "list._sep.h"
-#include "range._sep.h"
 #include "math._sep.h"
-#include "parser_tables._sep.h"
+#include "tables._sep.h"
 #include "mmloader._sep.h"
 #include "metamodel._sep.h"
 #include "vararg._sep.h"
 #include "partial_order._sep.h"
 #include "virtualtype._sep.h"
 #include "opts._sep.h"
+#include "icode_generation._sep.h"
+#include "icode._sep.h"
+#include "icode_tools._sep.h"
+#include "icode_builder._sep.h"
+#include "icode_base._sep.h"
 #include "typing._sep.h"
-#include "escape._sep.h"
-#include "control_flow._sep.h"
+#include "scope._sep.h"
+#include "flow._sep.h"
+#include "primitive_info._sep.h"
+#include "nit_version._sep.h"
 #include "compiling._sep.h"
-#include "compiling_global._sep.h"
-#include "compiling_methods._sep.h"
+#include "icode_generator._sep.h"
 #include "compiling_base._sep.h"
 #include "utils._sep.h"
+#include "program._sep.h"
+#include "compiling_writer._sep.h"
+#include "analysis._sep.h"
+#include "icode_dump._sep.h"
+#include "allocate_iregister_slots._sep.h"
+#include "inline_methods._sep.h"
+#include "cha_analysis._sep.h"
+#include "reachable_method_analysis._sep.h"
+#include "rta_analysis._sep.h"
+#include "instantiated_type_analysis._sep.h"
+#include "reachable_as_init_impl._sep.h"
+#include "reachable_as_init._sep.h"
+#include "reachable_from_init_method_analysis_impl._sep.h"
+#include "reachable_from_init_method_analysis._sep.h"
+#include "dead_method_removal._sep.h"
+#include "inline_get_and_set._sep.h"
+#include "remove_out_of_init_get_test._sep.h"
+#include "compiling_global._sep.h"
+#include "table_computation._sep.h"
+#include "compiling_icode._sep.h"
 #include "nitc._sep.h"
 #include <nit_common.h>
+static const char * const LOCATE_INIT_ATTRIBUTES__NitCompiler = "init var of NitCompiler";
+void INIT_ATTRIBUTES__NitCompiler(val_t p0);
+typedef void (*INIT_ATTRIBUTES__NitCompiler_t)(val_t p0);
+val_t NEW_NitCompiler(void);
+static const char * const LOCATE_CHECKNEW_NitCompiler = "check new NitCompiler";
+void CHECKNEW_NitCompiler(val_t p0);
+typedef void (*CHECKNEW_NitCompiler_t)(val_t p0);
+static const char * const LOCATE_NEW_NitCompiler_nitc___NitCompiler___init = "new NitCompiler nitc::NitCompiler::init";
+val_t NEW_NitCompiler_nitc___NitCompiler___init(void);
+typedef val_t (*NEW_NitCompiler_nitc___NitCompiler___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__Sys = "init var of Sys";
+void INIT_ATTRIBUTES__Sys(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Sys_t)(val_t p0);
+val_t NEW_Sys(void);
+static const char * const LOCATE_CHECKNEW_Sys = "check new Sys";
+void CHECKNEW_Sys(val_t p0);
+typedef void (*CHECKNEW_Sys_t)(val_t p0);
+static const char * const LOCATE_NEW_Sys_kernel___Sys___init = "new Sys kernel::Sys::init";
+val_t NEW_Sys_kernel___Sys___init(void);
+typedef val_t (*NEW_Sys_kernel___Sys___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__Container = "init var of Container";
+void INIT_ATTRIBUTES__Container(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Container_t)(val_t p0);
+val_t NEW_Container(void);
+static const char * const LOCATE_CHECKNEW_Container = "check new Container";
+void CHECKNEW_Container(val_t p0);
+typedef void (*CHECKNEW_Container_t)(val_t p0);
+static const char * const LOCATE_NEW_Container_abstract_collection___Container___init = "new Container abstract_collection::Container::init";
+val_t NEW_Container_abstract_collection___Container___init(val_t p0);
+typedef val_t (*NEW_Container_abstract_collection___Container___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ContainerIterator = "init var of ContainerIterator";
+void INIT_ATTRIBUTES__ContainerIterator(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ContainerIterator_t)(val_t p0);
+val_t NEW_ContainerIterator(void);
+static const char * const LOCATE_CHECKNEW_ContainerIterator = "check new ContainerIterator";
+void CHECKNEW_ContainerIterator(val_t p0);
+typedef void (*CHECKNEW_ContainerIterator_t)(val_t p0);
+static const char * const LOCATE_NEW_ContainerIterator_abstract_collection___ContainerIterator___init = "new ContainerIterator abstract_collection::ContainerIterator::init";
+val_t NEW_ContainerIterator_abstract_collection___ContainerIterator___init(val_t p0);
+typedef val_t (*NEW_ContainerIterator_abstract_collection___ContainerIterator___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__CoupleMapIterator = "init var of CoupleMapIterator";
+void INIT_ATTRIBUTES__CoupleMapIterator(val_t p0);
+typedef void (*INIT_ATTRIBUTES__CoupleMapIterator_t)(val_t p0);
+val_t NEW_CoupleMapIterator(void);
+static const char * const LOCATE_CHECKNEW_CoupleMapIterator = "check new CoupleMapIterator";
+void CHECKNEW_CoupleMapIterator(val_t p0);
+typedef void (*CHECKNEW_CoupleMapIterator_t)(val_t p0);
+static const char * const LOCATE_NEW_CoupleMapIterator_abstract_collection___CoupleMapIterator___init = "new CoupleMapIterator abstract_collection::CoupleMapIterator::init";
+val_t NEW_CoupleMapIterator_abstract_collection___CoupleMapIterator___init(val_t p0);
+typedef val_t (*NEW_CoupleMapIterator_abstract_collection___CoupleMapIterator___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__Couple = "init var of Couple";
+void INIT_ATTRIBUTES__Couple(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Couple_t)(val_t p0);
+val_t NEW_Couple(void);
+static const char * const LOCATE_CHECKNEW_Couple = "check new Couple";
+void CHECKNEW_Couple(val_t p0);
+typedef void (*CHECKNEW_Couple_t)(val_t p0);
+static const char * const LOCATE_NEW_Couple_abstract_collection___Couple___init = "new Couple abstract_collection::Couple::init";
+val_t NEW_Couple_abstract_collection___Couple___init(val_t p0, val_t p1);
+typedef val_t (*NEW_Couple_abstract_collection___Couple___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__Range = "init var of Range";
+void INIT_ATTRIBUTES__Range(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Range_t)(val_t p0);
+val_t NEW_Range(void);
+static const char * const LOCATE_CHECKNEW_Range = "check new Range";
+void CHECKNEW_Range(val_t p0);
+typedef void (*CHECKNEW_Range_t)(val_t p0);
+static const char * const LOCATE_NEW_Range_range___Range___init = "new Range range::Range::init";
+val_t NEW_Range_range___Range___init(val_t p0, val_t p1);
+typedef val_t (*NEW_Range_range___Range___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_Range_range___Range___without_last = "new Range range::Range::without_last";
+val_t NEW_Range_range___Range___without_last(val_t p0, val_t p1);
+typedef val_t (*NEW_Range_range___Range___without_last_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__IteratorRange = "init var of IteratorRange";
+void INIT_ATTRIBUTES__IteratorRange(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IteratorRange_t)(val_t p0);
+val_t NEW_IteratorRange(void);
+static const char * const LOCATE_CHECKNEW_IteratorRange = "check new IteratorRange";
+void CHECKNEW_IteratorRange(val_t p0);
+typedef void (*CHECKNEW_IteratorRange_t)(val_t p0);
+static const char * const LOCATE_NEW_IteratorRange_range___IteratorRange___init = "new IteratorRange range::IteratorRange::init";
+val_t NEW_IteratorRange_range___IteratorRange___init(val_t p0);
+typedef val_t (*NEW_IteratorRange_range___IteratorRange___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__List = "init var of List";
+void INIT_ATTRIBUTES__List(val_t p0);
+typedef void (*INIT_ATTRIBUTES__List_t)(val_t p0);
+val_t NEW_List(void);
+static const char * const LOCATE_CHECKNEW_List = "check new List";
+void CHECKNEW_List(val_t p0);
+typedef void (*CHECKNEW_List_t)(val_t p0);
+static const char * const LOCATE_NEW_List_list___List___init = "new List list::List::init";
+val_t NEW_List_list___List___init(void);
+typedef val_t (*NEW_List_list___List___init_t)(void);
+static const char * const LOCATE_NEW_List_list___List___from = "new List list::List::from";
+val_t NEW_List_list___List___from(val_t p0);
+typedef val_t (*NEW_List_list___List___from_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ListIterator = "init var of ListIterator";
+void INIT_ATTRIBUTES__ListIterator(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ListIterator_t)(val_t p0);
+val_t NEW_ListIterator(void);
+static const char * const LOCATE_CHECKNEW_ListIterator = "check new ListIterator";
+void CHECKNEW_ListIterator(val_t p0);
+typedef void (*CHECKNEW_ListIterator_t)(val_t p0);
+static const char * const LOCATE_NEW_ListIterator_list___ListIterator___init = "new ListIterator list::ListIterator::init";
+val_t NEW_ListIterator_list___ListIterator___init(val_t p0);
+typedef val_t (*NEW_ListIterator_list___ListIterator___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ListNode = "init var of ListNode";
+void INIT_ATTRIBUTES__ListNode(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ListNode_t)(val_t p0);
+val_t NEW_ListNode(void);
+static const char * const LOCATE_CHECKNEW_ListNode = "check new ListNode";
+void CHECKNEW_ListNode(val_t p0);
+typedef void (*CHECKNEW_ListNode_t)(val_t p0);
+static const char * const LOCATE_NEW_ListNode_list___ListNode___init = "new ListNode list::ListNode::init";
+val_t NEW_ListNode_list___ListNode___init(val_t p0);
+typedef val_t (*NEW_ListNode_list___ListNode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AbstractArrayRead = "init var of AbstractArrayRead";
+void INIT_ATTRIBUTES__AbstractArrayRead(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AbstractArrayRead_t)(val_t p0);
+val_t NEW_AbstractArrayRead(void);
+static const char * const LOCATE_CHECKNEW_AbstractArrayRead = "check new AbstractArrayRead";
+void CHECKNEW_AbstractArrayRead(val_t p0);
+typedef void (*CHECKNEW_AbstractArrayRead_t)(val_t p0);
+static const char * const LOCATE_NEW_AbstractArrayRead_array___AbstractArrayRead___init = "new AbstractArrayRead array::AbstractArrayRead::init";
+val_t NEW_AbstractArrayRead_array___AbstractArrayRead___init(void);
+typedef val_t (*NEW_AbstractArrayRead_array___AbstractArrayRead___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__AbstractArray = "init var of AbstractArray";
+void INIT_ATTRIBUTES__AbstractArray(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AbstractArray_t)(val_t p0);
+val_t NEW_AbstractArray(void);
+static const char * const LOCATE_CHECKNEW_AbstractArray = "check new AbstractArray";
+void CHECKNEW_AbstractArray(val_t p0);
+typedef void (*CHECKNEW_AbstractArray_t)(val_t p0);
+static const char * const LOCATE_NEW_AbstractArray_array___AbstractArrayRead___init = "new AbstractArray array::AbstractArrayRead::init";
+val_t NEW_AbstractArray_array___AbstractArrayRead___init(void);
+typedef val_t (*NEW_AbstractArray_array___AbstractArrayRead___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__Array = "init var of Array";
+void INIT_ATTRIBUTES__Array(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Array_t)(val_t p0);
+val_t NEW_Array(void);
+static const char * const LOCATE_CHECKNEW_Array = "check new Array";
+void CHECKNEW_Array(val_t p0);
+typedef void (*CHECKNEW_Array_t)(val_t p0);
+static const char * const LOCATE_NEW_Array_array___Array___with_capacity = "new Array array::Array::with_capacity";
+val_t NEW_Array_array___Array___with_capacity(val_t p0);
+typedef val_t (*NEW_Array_array___Array___with_capacity_t)(val_t p0);
+static const char * const LOCATE_NEW_Array_array___Array___init = "new Array array::Array::init";
+val_t NEW_Array_array___Array___init(void);
+typedef val_t (*NEW_Array_array___Array___init_t)(void);
+static const char * const LOCATE_NEW_Array_array___Array___filled_with = "new Array array::Array::filled_with";
+val_t NEW_Array_array___Array___filled_with(val_t p0, val_t p1);
+typedef val_t (*NEW_Array_array___Array___filled_with_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_Array_array___Array___with_items = "new Array array::Array::with_items";
+val_t NEW_Array_array___Array___with_items(val_t p0);
+typedef val_t (*NEW_Array_array___Array___with_items_t)(val_t p0);
+static const char * const LOCATE_NEW_Array_array___Array___with_native = "new Array array::Array::with_native";
+val_t NEW_Array_array___Array___with_native(val_t p0, val_t p1);
+typedef val_t (*NEW_Array_array___Array___with_native_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ArrayIterator = "init var of ArrayIterator";
+void INIT_ATTRIBUTES__ArrayIterator(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ArrayIterator_t)(val_t p0);
+val_t NEW_ArrayIterator(void);
+static const char * const LOCATE_CHECKNEW_ArrayIterator = "check new ArrayIterator";
+void CHECKNEW_ArrayIterator(val_t p0);
+typedef void (*CHECKNEW_ArrayIterator_t)(val_t p0);
+static const char * const LOCATE_NEW_ArrayIterator_array___ArrayIterator___init = "new ArrayIterator array::ArrayIterator::init";
+val_t NEW_ArrayIterator_array___ArrayIterator___init(val_t p0);
+typedef val_t (*NEW_ArrayIterator_array___ArrayIterator___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ArraySet = "init var of ArraySet";
+void INIT_ATTRIBUTES__ArraySet(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ArraySet_t)(val_t p0);
+val_t NEW_ArraySet(void);
+static const char * const LOCATE_CHECKNEW_ArraySet = "check new ArraySet";
+void CHECKNEW_ArraySet(val_t p0);
+typedef void (*CHECKNEW_ArraySet_t)(val_t p0);
+static const char * const LOCATE_NEW_ArraySet_array___ArraySet___init = "new ArraySet array::ArraySet::init";
+val_t NEW_ArraySet_array___ArraySet___init(void);
+typedef val_t (*NEW_ArraySet_array___ArraySet___init_t)(void);
+static const char * const LOCATE_NEW_ArraySet_array___ArraySet___with_capacity = "new ArraySet array::ArraySet::with_capacity";
+val_t NEW_ArraySet_array___ArraySet___with_capacity(val_t p0);
+typedef val_t (*NEW_ArraySet_array___ArraySet___with_capacity_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ArraySetIterator = "init var of ArraySetIterator";
+void INIT_ATTRIBUTES__ArraySetIterator(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ArraySetIterator_t)(val_t p0);
+val_t NEW_ArraySetIterator(void);
+static const char * const LOCATE_CHECKNEW_ArraySetIterator = "check new ArraySetIterator";
+void CHECKNEW_ArraySetIterator(val_t p0);
+typedef void (*CHECKNEW_ArraySetIterator_t)(val_t p0);
+static const char * const LOCATE_NEW_ArraySetIterator_array___ArraySetIterator___init = "new ArraySetIterator array::ArraySetIterator::init";
+val_t NEW_ArraySetIterator_array___ArraySetIterator___init(val_t p0);
+typedef val_t (*NEW_ArraySetIterator_array___ArraySetIterator___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ArrayMap = "init var of ArrayMap";
+void INIT_ATTRIBUTES__ArrayMap(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ArrayMap_t)(val_t p0);
+val_t NEW_ArrayMap(void);
+static const char * const LOCATE_CHECKNEW_ArrayMap = "check new ArrayMap";
+void CHECKNEW_ArrayMap(val_t p0);
+typedef void (*CHECKNEW_ArrayMap_t)(val_t p0);
+static const char * const LOCATE_NEW_ArrayMap_array___ArrayMap___init = "new ArrayMap array::ArrayMap::init";
+val_t NEW_ArrayMap_array___ArrayMap___init(void);
+typedef val_t (*NEW_ArrayMap_array___ArrayMap___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__AbstractSorter = "init var of AbstractSorter";
+void INIT_ATTRIBUTES__AbstractSorter(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AbstractSorter_t)(val_t p0);
+val_t NEW_AbstractSorter(void);
+static const char * const LOCATE_CHECKNEW_AbstractSorter = "check new AbstractSorter";
+void CHECKNEW_AbstractSorter(val_t p0);
+typedef void (*CHECKNEW_AbstractSorter_t)(val_t p0);
+static const char * const LOCATE_NEW_AbstractSorter_sorter___AbstractSorter___init = "new AbstractSorter sorter::AbstractSorter::init";
+val_t NEW_AbstractSorter_sorter___AbstractSorter___init(void);
+typedef val_t (*NEW_AbstractSorter_sorter___AbstractSorter___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__ComparableSorter = "init var of ComparableSorter";
+void INIT_ATTRIBUTES__ComparableSorter(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ComparableSorter_t)(val_t p0);
+val_t NEW_ComparableSorter(void);
+static const char * const LOCATE_CHECKNEW_ComparableSorter = "check new ComparableSorter";
+void CHECKNEW_ComparableSorter(val_t p0);
+typedef void (*CHECKNEW_ComparableSorter_t)(val_t p0);
+static const char * const LOCATE_NEW_ComparableSorter_sorter___ComparableSorter___init = "new ComparableSorter sorter::ComparableSorter::init";
+val_t NEW_ComparableSorter_sorter___ComparableSorter___init(void);
+typedef val_t (*NEW_ComparableSorter_sorter___ComparableSorter___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__HashCollection = "init var of HashCollection";
+void INIT_ATTRIBUTES__HashCollection(val_t p0);
+typedef void (*INIT_ATTRIBUTES__HashCollection_t)(val_t p0);
+val_t NEW_HashCollection(void);
+static const char * const LOCATE_CHECKNEW_HashCollection = "check new HashCollection";
+void CHECKNEW_HashCollection(val_t p0);
+typedef void (*CHECKNEW_HashCollection_t)(val_t p0);
+static const char * const LOCATE_NEW_HashCollection_hash_collection___HashCollection___init = "new HashCollection hash_collection::HashCollection::init";
+val_t NEW_HashCollection_hash_collection___HashCollection___init(void);
+typedef val_t (*NEW_HashCollection_hash_collection___HashCollection___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__HashNode = "init var of HashNode";
+void INIT_ATTRIBUTES__HashNode(val_t p0);
+typedef void (*INIT_ATTRIBUTES__HashNode_t)(val_t p0);
+val_t NEW_HashNode(void);
+static const char * const LOCATE_CHECKNEW_HashNode = "check new HashNode";
+void CHECKNEW_HashNode(val_t p0);
+typedef void (*CHECKNEW_HashNode_t)(val_t p0);
+static const char * const LOCATE_NEW_HashNode_hash_collection___HashNode___init = "new HashNode hash_collection::HashNode::init";
+val_t NEW_HashNode_hash_collection___HashNode___init(val_t p0);
+typedef val_t (*NEW_HashNode_hash_collection___HashNode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__HashMap = "init var of HashMap";
+void INIT_ATTRIBUTES__HashMap(val_t p0);
+typedef void (*INIT_ATTRIBUTES__HashMap_t)(val_t p0);
+val_t NEW_HashMap(void);
+static const char * const LOCATE_CHECKNEW_HashMap = "check new HashMap";
+void CHECKNEW_HashMap(val_t p0);
+typedef void (*CHECKNEW_HashMap_t)(val_t p0);
+static const char * const LOCATE_NEW_HashMap_hash_collection___HashMap___init = "new HashMap hash_collection::HashMap::init";
+val_t NEW_HashMap_hash_collection___HashMap___init(void);
+typedef val_t (*NEW_HashMap_hash_collection___HashMap___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__HashMapNode = "init var of HashMapNode";
+void INIT_ATTRIBUTES__HashMapNode(val_t p0);
+typedef void (*INIT_ATTRIBUTES__HashMapNode_t)(val_t p0);
+val_t NEW_HashMapNode(void);
+static const char * const LOCATE_CHECKNEW_HashMapNode = "check new HashMapNode";
+void CHECKNEW_HashMapNode(val_t p0);
+typedef void (*CHECKNEW_HashMapNode_t)(val_t p0);
+static const char * const LOCATE_NEW_HashMapNode_hash_collection___HashMapNode___init = "new HashMapNode hash_collection::HashMapNode::init";
+val_t NEW_HashMapNode_hash_collection___HashMapNode___init(val_t p0, val_t p1);
+typedef val_t (*NEW_HashMapNode_hash_collection___HashMapNode___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__HashMapIterator = "init var of HashMapIterator";
+void INIT_ATTRIBUTES__HashMapIterator(val_t p0);
+typedef void (*INIT_ATTRIBUTES__HashMapIterator_t)(val_t p0);
+val_t NEW_HashMapIterator(void);
+static const char * const LOCATE_CHECKNEW_HashMapIterator = "check new HashMapIterator";
+void CHECKNEW_HashMapIterator(val_t p0);
+typedef void (*CHECKNEW_HashMapIterator_t)(val_t p0);
+static const char * const LOCATE_NEW_HashMapIterator_hash_collection___HashMapIterator___init = "new HashMapIterator hash_collection::HashMapIterator::init";
+val_t NEW_HashMapIterator_hash_collection___HashMapIterator___init(val_t p0);
+typedef val_t (*NEW_HashMapIterator_hash_collection___HashMapIterator___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__HashSet = "init var of HashSet";
+void INIT_ATTRIBUTES__HashSet(val_t p0);
+typedef void (*INIT_ATTRIBUTES__HashSet_t)(val_t p0);
+val_t NEW_HashSet(void);
+static const char * const LOCATE_CHECKNEW_HashSet = "check new HashSet";
+void CHECKNEW_HashSet(val_t p0);
+typedef void (*CHECKNEW_HashSet_t)(val_t p0);
+static const char * const LOCATE_NEW_HashSet_hash_collection___HashSet___init = "new HashSet hash_collection::HashSet::init";
+val_t NEW_HashSet_hash_collection___HashSet___init(void);
+typedef val_t (*NEW_HashSet_hash_collection___HashSet___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__HashSetNode = "init var of HashSetNode";
+void INIT_ATTRIBUTES__HashSetNode(val_t p0);
+typedef void (*INIT_ATTRIBUTES__HashSetNode_t)(val_t p0);
+val_t NEW_HashSetNode(void);
+static const char * const LOCATE_CHECKNEW_HashSetNode = "check new HashSetNode";
+void CHECKNEW_HashSetNode(val_t p0);
+typedef void (*CHECKNEW_HashSetNode_t)(val_t p0);
+static const char * const LOCATE_NEW_HashSetNode_hash_collection___HashSetNode___init = "new HashSetNode hash_collection::HashSetNode::init";
+val_t NEW_HashSetNode_hash_collection___HashSetNode___init(val_t p0);
+typedef val_t (*NEW_HashSetNode_hash_collection___HashSetNode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__HashSetIterator = "init var of HashSetIterator";
+void INIT_ATTRIBUTES__HashSetIterator(val_t p0);
+typedef void (*INIT_ATTRIBUTES__HashSetIterator_t)(val_t p0);
+val_t NEW_HashSetIterator(void);
+static const char * const LOCATE_CHECKNEW_HashSetIterator = "check new HashSetIterator";
+void CHECKNEW_HashSetIterator(val_t p0);
+typedef void (*CHECKNEW_HashSetIterator_t)(val_t p0);
+static const char * const LOCATE_NEW_HashSetIterator_hash_collection___HashSetIterator___init = "new HashSetIterator hash_collection::HashSetIterator::init";
+val_t NEW_HashSetIterator_hash_collection___HashSetIterator___init(val_t p0);
+typedef val_t (*NEW_HashSetIterator_hash_collection___HashSetIterator___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__String = "init var of String";
+void INIT_ATTRIBUTES__String(val_t p0);
+typedef void (*INIT_ATTRIBUTES__String_t)(val_t p0);
+val_t NEW_String(void);
+static const char * const LOCATE_CHECKNEW_String = "check new String";
+void CHECKNEW_String(val_t p0);
+typedef void (*CHECKNEW_String_t)(val_t p0);
+static const char * const LOCATE_NEW_String_string___String___with_native = "new String string::String::with_native";
+val_t NEW_String_string___String___with_native(val_t p0, val_t p1);
+typedef val_t (*NEW_String_string___String___with_native_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_String_string___String___from_cstring = "new String string::String::from_cstring";
+val_t NEW_String_string___String___from_cstring(val_t p0);
+typedef val_t (*NEW_String_string___String___from_cstring_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__Buffer = "init var of Buffer";
+void INIT_ATTRIBUTES__Buffer(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Buffer_t)(val_t p0);
+val_t NEW_Buffer(void);
+static const char * const LOCATE_CHECKNEW_Buffer = "check new Buffer";
+void CHECKNEW_Buffer(val_t p0);
+typedef void (*CHECKNEW_Buffer_t)(val_t p0);
+static const char * const LOCATE_NEW_Buffer_string___Buffer___init = "new Buffer string::Buffer::init";
+val_t NEW_Buffer_string___Buffer___init(void);
+typedef val_t (*NEW_Buffer_string___Buffer___init_t)(void);
+static const char * const LOCATE_NEW_Buffer_string___Buffer___from = "new Buffer string::Buffer::from";
+val_t NEW_Buffer_string___Buffer___from(val_t p0);
+typedef val_t (*NEW_Buffer_string___Buffer___from_t)(val_t p0);
+static const char * const LOCATE_NEW_Buffer_string___Buffer___with_capacity = "new Buffer string::Buffer::with_capacity";
+val_t NEW_Buffer_string___Buffer___with_capacity(val_t p0);
+typedef val_t (*NEW_Buffer_string___Buffer___with_capacity_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__StringCapable = "init var of StringCapable";
+void INIT_ATTRIBUTES__StringCapable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__StringCapable_t)(val_t p0);
+val_t NEW_StringCapable(void);
+static const char * const LOCATE_CHECKNEW_StringCapable = "check new StringCapable";
+void CHECKNEW_StringCapable(val_t p0);
+typedef void (*CHECKNEW_StringCapable_t)(val_t p0);
+static const char * const LOCATE_NEW_StringCapable_string___StringCapable___init = "new StringCapable string::StringCapable::init";
+val_t NEW_StringCapable_string___StringCapable___init(void);
+typedef val_t (*NEW_StringCapable_string___StringCapable___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__Symbol = "init var of Symbol";
+void INIT_ATTRIBUTES__Symbol(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Symbol_t)(val_t p0);
+val_t NEW_Symbol(void);
+static const char * const LOCATE_CHECKNEW_Symbol = "check new Symbol";
+void CHECKNEW_Symbol(val_t p0);
+typedef void (*CHECKNEW_Symbol_t)(val_t p0);
+static const char * const LOCATE_NEW_Symbol_symbol___Symbol___init = "new Symbol symbol::Symbol::init";
+val_t NEW_Symbol_symbol___Symbol___init(val_t p0);
+typedef val_t (*NEW_Symbol_symbol___Symbol___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IOS = "init var of IOS";
+void INIT_ATTRIBUTES__IOS(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IOS_t)(val_t p0);
+val_t NEW_IOS(void);
+static const char * const LOCATE_CHECKNEW_IOS = "check new IOS";
+void CHECKNEW_IOS(val_t p0);
+typedef void (*CHECKNEW_IOS_t)(val_t p0);
+static const char * const LOCATE_NEW_IOS_stream___IOS___init = "new IOS stream::IOS::init";
+val_t NEW_IOS_stream___IOS___init(void);
+typedef val_t (*NEW_IOS_stream___IOS___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__IStream = "init var of IStream";
+void INIT_ATTRIBUTES__IStream(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IStream_t)(val_t p0);
+val_t NEW_IStream(void);
+static const char * const LOCATE_CHECKNEW_IStream = "check new IStream";
+void CHECKNEW_IStream(val_t p0);
+typedef void (*CHECKNEW_IStream_t)(val_t p0);
+static const char * const LOCATE_NEW_IStream_stream___IOS___init = "new IStream stream::IOS::init";
+val_t NEW_IStream_stream___IOS___init(void);
+typedef val_t (*NEW_IStream_stream___IOS___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__OStream = "init var of OStream";
+void INIT_ATTRIBUTES__OStream(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OStream_t)(val_t p0);
+val_t NEW_OStream(void);
+static const char * const LOCATE_CHECKNEW_OStream = "check new OStream";
+void CHECKNEW_OStream(val_t p0);
+typedef void (*CHECKNEW_OStream_t)(val_t p0);
+static const char * const LOCATE_NEW_OStream_stream___IOS___init = "new OStream stream::IOS::init";
+val_t NEW_OStream_stream___IOS___init(void);
+typedef val_t (*NEW_OStream_stream___IOS___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__BufferedIStream = "init var of BufferedIStream";
+void INIT_ATTRIBUTES__BufferedIStream(val_t p0);
+typedef void (*INIT_ATTRIBUTES__BufferedIStream_t)(val_t p0);
+val_t NEW_BufferedIStream(void);
+static const char * const LOCATE_CHECKNEW_BufferedIStream = "check new BufferedIStream";
+void CHECKNEW_BufferedIStream(val_t p0);
+typedef void (*CHECKNEW_BufferedIStream_t)(val_t p0);
+static const char * const LOCATE_NEW_BufferedIStream_stream___IOS___init = "new BufferedIStream stream::IOS::init";
+val_t NEW_BufferedIStream_stream___IOS___init(void);
+typedef val_t (*NEW_BufferedIStream_stream___IOS___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__IOStream = "init var of IOStream";
+void INIT_ATTRIBUTES__IOStream(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IOStream_t)(val_t p0);
+val_t NEW_IOStream(void);
+static const char * const LOCATE_CHECKNEW_IOStream = "check new IOStream";
+void CHECKNEW_IOStream(val_t p0);
+typedef void (*CHECKNEW_IOStream_t)(val_t p0);
+static const char * const LOCATE_NEW_IOStream_stream___IOS___init = "new IOStream stream::IOS::init";
+val_t NEW_IOStream_stream___IOS___init(void);
+typedef val_t (*NEW_IOStream_stream___IOS___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__FDStream = "init var of FDStream";
+void INIT_ATTRIBUTES__FDStream(val_t p0);
+typedef void (*INIT_ATTRIBUTES__FDStream_t)(val_t p0);
+val_t NEW_FDStream(void);
+static const char * const LOCATE_CHECKNEW_FDStream = "check new FDStream";
+void CHECKNEW_FDStream(val_t p0);
+typedef void (*CHECKNEW_FDStream_t)(val_t p0);
+static const char * const LOCATE_NEW_FDStream_stream___FDStream___init = "new FDStream stream::FDStream::init";
+val_t NEW_FDStream_stream___FDStream___init(val_t p0);
+typedef val_t (*NEW_FDStream_stream___FDStream___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__FDIStream = "init var of FDIStream";
+void INIT_ATTRIBUTES__FDIStream(val_t p0);
+typedef void (*INIT_ATTRIBUTES__FDIStream_t)(val_t p0);
+val_t NEW_FDIStream(void);
+static const char * const LOCATE_CHECKNEW_FDIStream = "check new FDIStream";
+void CHECKNEW_FDIStream(val_t p0);
+typedef void (*CHECKNEW_FDIStream_t)(val_t p0);
+static const char * const LOCATE_NEW_FDIStream_stream___FDIStream___init = "new FDIStream stream::FDIStream::init";
+val_t NEW_FDIStream_stream___FDIStream___init(val_t p0);
+typedef val_t (*NEW_FDIStream_stream___FDIStream___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__FDOStream = "init var of FDOStream";
+void INIT_ATTRIBUTES__FDOStream(val_t p0);
+typedef void (*INIT_ATTRIBUTES__FDOStream_t)(val_t p0);
+val_t NEW_FDOStream(void);
+static const char * const LOCATE_CHECKNEW_FDOStream = "check new FDOStream";
+void CHECKNEW_FDOStream(val_t p0);
+typedef void (*CHECKNEW_FDOStream_t)(val_t p0);
+static const char * const LOCATE_NEW_FDOStream_stream___FDOStream___init = "new FDOStream stream::FDOStream::init";
+val_t NEW_FDOStream_stream___FDOStream___init(val_t p0);
+typedef val_t (*NEW_FDOStream_stream___FDOStream___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__FDIOStream = "init var of FDIOStream";
+void INIT_ATTRIBUTES__FDIOStream(val_t p0);
+typedef void (*INIT_ATTRIBUTES__FDIOStream_t)(val_t p0);
+val_t NEW_FDIOStream(void);
+static const char * const LOCATE_CHECKNEW_FDIOStream = "check new FDIOStream";
+void CHECKNEW_FDIOStream(val_t p0);
+typedef void (*CHECKNEW_FDIOStream_t)(val_t p0);
+static const char * const LOCATE_NEW_FDIOStream_stream___FDIOStream___init = "new FDIOStream stream::FDIOStream::init";
+val_t NEW_FDIOStream_stream___FDIOStream___init(val_t p0);
+typedef val_t (*NEW_FDIOStream_stream___FDIOStream___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__Pattern = "init var of Pattern";
+void INIT_ATTRIBUTES__Pattern(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Pattern_t)(val_t p0);
+val_t NEW_Pattern(void);
+static const char * const LOCATE_CHECKNEW_Pattern = "check new Pattern";
+void CHECKNEW_Pattern(val_t p0);
+typedef void (*CHECKNEW_Pattern_t)(val_t p0);
+static const char * const LOCATE_NEW_Pattern_string_search___Pattern___init = "new Pattern string_search::Pattern::init";
+val_t NEW_Pattern_string_search___Pattern___init(void);
+typedef val_t (*NEW_Pattern_string_search___Pattern___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__BM_Pattern = "init var of BM_Pattern";
+void INIT_ATTRIBUTES__BM_Pattern(val_t p0);
+typedef void (*INIT_ATTRIBUTES__BM_Pattern_t)(val_t p0);
+val_t NEW_BM_Pattern(void);
+static const char * const LOCATE_CHECKNEW_BM_Pattern = "check new BM_Pattern";
+void CHECKNEW_BM_Pattern(val_t p0);
+typedef void (*CHECKNEW_BM_Pattern_t)(val_t p0);
+static const char * const LOCATE_NEW_BM_Pattern_string_search___BM_Pattern___init = "new BM_Pattern string_search::BM_Pattern::init";
+val_t NEW_BM_Pattern_string_search___BM_Pattern___init(val_t p0);
+typedef val_t (*NEW_BM_Pattern_string_search___BM_Pattern___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__Match = "init var of Match";
+void INIT_ATTRIBUTES__Match(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Match_t)(val_t p0);
+val_t NEW_Match(void);
+static const char * const LOCATE_CHECKNEW_Match = "check new Match";
+void CHECKNEW_Match(val_t p0);
+typedef void (*CHECKNEW_Match_t)(val_t p0);
+static const char * const LOCATE_NEW_Match_string_search___Match___init = "new Match string_search::Match::init";
+val_t NEW_Match_string_search___Match___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_Match_string_search___Match___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__FStream = "init var of FStream";
+void INIT_ATTRIBUTES__FStream(val_t p0);
+typedef void (*INIT_ATTRIBUTES__FStream_t)(val_t p0);
+val_t NEW_FStream(void);
+static const char * const LOCATE_CHECKNEW_FStream = "check new FStream";
+void CHECKNEW_FStream(val_t p0);
+typedef void (*CHECKNEW_FStream_t)(val_t p0);
+static const char * const LOCATE_NEW_FStream_stream___IOS___init = "new FStream stream::IOS::init";
+val_t NEW_FStream_stream___IOS___init(void);
+typedef val_t (*NEW_FStream_stream___IOS___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__IFStream = "init var of IFStream";
+void INIT_ATTRIBUTES__IFStream(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IFStream_t)(val_t p0);
+val_t NEW_IFStream(void);
+static const char * const LOCATE_CHECKNEW_IFStream = "check new IFStream";
+void CHECKNEW_IFStream(val_t p0);
+typedef void (*CHECKNEW_IFStream_t)(val_t p0);
+static const char * const LOCATE_NEW_IFStream_file___IFStream___open = "new IFStream file::IFStream::open";
+val_t NEW_IFStream_file___IFStream___open(val_t p0);
+typedef val_t (*NEW_IFStream_file___IFStream___open_t)(val_t p0);
+static const char * const LOCATE_NEW_IFStream_file___IFStream___init = "new IFStream file::IFStream::init";
+val_t NEW_IFStream_file___IFStream___init(void);
+typedef val_t (*NEW_IFStream_file___IFStream___init_t)(void);
+static const char * const LOCATE_NEW_IFStream_file___IFStream___without_file = "new IFStream file::IFStream::without_file";
+val_t NEW_IFStream_file___IFStream___without_file(void);
+typedef val_t (*NEW_IFStream_file___IFStream___without_file_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__OFStream = "init var of OFStream";
+void INIT_ATTRIBUTES__OFStream(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OFStream_t)(val_t p0);
+val_t NEW_OFStream(void);
+static const char * const LOCATE_CHECKNEW_OFStream = "check new OFStream";
+void CHECKNEW_OFStream(val_t p0);
+typedef void (*CHECKNEW_OFStream_t)(val_t p0);
+static const char * const LOCATE_NEW_OFStream_file___OFStream___open = "new OFStream file::OFStream::open";
+val_t NEW_OFStream_file___OFStream___open(val_t p0);
+typedef val_t (*NEW_OFStream_file___OFStream___open_t)(val_t p0);
+static const char * const LOCATE_NEW_OFStream_file___OFStream___init = "new OFStream file::OFStream::init";
+val_t NEW_OFStream_file___OFStream___init(void);
+typedef val_t (*NEW_OFStream_file___OFStream___init_t)(void);
+static const char * const LOCATE_NEW_OFStream_file___OFStream___without_file = "new OFStream file::OFStream::without_file";
+val_t NEW_OFStream_file___OFStream___without_file(void);
+typedef val_t (*NEW_OFStream_file___OFStream___without_file_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__Stdin = "init var of Stdin";
+void INIT_ATTRIBUTES__Stdin(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Stdin_t)(val_t p0);
+val_t NEW_Stdin(void);
+static const char * const LOCATE_CHECKNEW_Stdin = "check new Stdin";
+void CHECKNEW_Stdin(val_t p0);
+typedef void (*CHECKNEW_Stdin_t)(val_t p0);
+static const char * const LOCATE_NEW_Stdin_file___Stdin___init = "new Stdin file::Stdin::init";
+val_t NEW_Stdin_file___Stdin___init(void);
+typedef val_t (*NEW_Stdin_file___Stdin___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__Stdout = "init var of Stdout";
+void INIT_ATTRIBUTES__Stdout(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Stdout_t)(val_t p0);
+val_t NEW_Stdout(void);
+static const char * const LOCATE_CHECKNEW_Stdout = "check new Stdout";
+void CHECKNEW_Stdout(val_t p0);
+typedef void (*CHECKNEW_Stdout_t)(val_t p0);
+static const char * const LOCATE_NEW_Stdout_file___Stdout___init = "new Stdout file::Stdout::init";
+val_t NEW_Stdout_file___Stdout___init(void);
+typedef val_t (*NEW_Stdout_file___Stdout___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__Stderr = "init var of Stderr";
+void INIT_ATTRIBUTES__Stderr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Stderr_t)(val_t p0);
+val_t NEW_Stderr(void);
+static const char * const LOCATE_CHECKNEW_Stderr = "check new Stderr";
+void CHECKNEW_Stderr(val_t p0);
+typedef void (*CHECKNEW_Stderr_t)(val_t p0);
+static const char * const LOCATE_NEW_Stderr_file___Stderr___init = "new Stderr file::Stderr::init";
+val_t NEW_Stderr_file___Stderr___init(void);
+typedef val_t (*NEW_Stderr_file___Stderr___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__Process = "init var of Process";
+void INIT_ATTRIBUTES__Process(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Process_t)(val_t p0);
+val_t NEW_Process(void);
+static const char * const LOCATE_CHECKNEW_Process = "check new Process";
+void CHECKNEW_Process(val_t p0);
+typedef void (*CHECKNEW_Process_t)(val_t p0);
+static const char * const LOCATE_NEW_Process_exec___Process___init = "new Process exec::Process::init";
+val_t NEW_Process_exec___Process___init(val_t p0, val_t p1);
+typedef val_t (*NEW_Process_exec___Process___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_Process_exec___Process___init_ = "new Process exec::Process::init_";
+val_t NEW_Process_exec___Process___init_(val_t p0);
+typedef val_t (*NEW_Process_exec___Process___init__t)(val_t p0);
+static const char * const LOCATE_NEW_Process_exec___Process___execute = "new Process exec::Process::execute";
+val_t NEW_Process_exec___Process___execute(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_Process_exec___Process___execute_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__IProcess = "init var of IProcess";
+void INIT_ATTRIBUTES__IProcess(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IProcess_t)(val_t p0);
+val_t NEW_IProcess(void);
+static const char * const LOCATE_CHECKNEW_IProcess = "check new IProcess";
+void CHECKNEW_IProcess(val_t p0);
+typedef void (*CHECKNEW_IProcess_t)(val_t p0);
+static const char * const LOCATE_NEW_IProcess_exec___IProcess___init = "new IProcess exec::IProcess::init";
+val_t NEW_IProcess_exec___IProcess___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IProcess_exec___IProcess___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_IProcess_exec___IProcess___init_ = "new IProcess exec::IProcess::init_";
+val_t NEW_IProcess_exec___IProcess___init_(val_t p0);
+typedef val_t (*NEW_IProcess_exec___IProcess___init__t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__OProcess = "init var of OProcess";
+void INIT_ATTRIBUTES__OProcess(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OProcess_t)(val_t p0);
+val_t NEW_OProcess(void);
+static const char * const LOCATE_CHECKNEW_OProcess = "check new OProcess";
+void CHECKNEW_OProcess(val_t p0);
+typedef void (*CHECKNEW_OProcess_t)(val_t p0);
+static const char * const LOCATE_NEW_OProcess_exec___OProcess___init = "new OProcess exec::OProcess::init";
+val_t NEW_OProcess_exec___OProcess___init(val_t p0, val_t p1);
+typedef val_t (*NEW_OProcess_exec___OProcess___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_OProcess_exec___OProcess___init_ = "new OProcess exec::OProcess::init_";
+val_t NEW_OProcess_exec___OProcess___init_(val_t p0);
+typedef val_t (*NEW_OProcess_exec___OProcess___init__t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IOProcess = "init var of IOProcess";
+void INIT_ATTRIBUTES__IOProcess(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IOProcess_t)(val_t p0);
+val_t NEW_IOProcess(void);
+static const char * const LOCATE_CHECKNEW_IOProcess = "check new IOProcess";
+void CHECKNEW_IOProcess(val_t p0);
+typedef void (*CHECKNEW_IOProcess_t)(val_t p0);
+static const char * const LOCATE_NEW_IOProcess_exec___IOProcess___init = "new IOProcess exec::IOProcess::init";
+val_t NEW_IOProcess_exec___IOProcess___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IOProcess_exec___IOProcess___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_IOProcess_exec___IOProcess___init_ = "new IOProcess exec::IOProcess::init_";
+val_t NEW_IOProcess_exec___IOProcess___init_(val_t p0);
+typedef val_t (*NEW_IOProcess_exec___IOProcess___init__t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__Location = "init var of Location";
+void INIT_ATTRIBUTES__Location(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Location_t)(val_t p0);
+val_t NEW_Location(void);
+static const char * const LOCATE_CHECKNEW_Location = "check new Location";
+void CHECKNEW_Location(val_t p0);
+typedef void (*CHECKNEW_Location_t)(val_t p0);
+static const char * const LOCATE_NEW_Location_location___Location___init = "new Location location::Location::init";
+val_t NEW_Location_location___Location___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_Location_location___Location___init_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_NEW_Location_location___Location___with_file = "new Location location::Location::with_file";
+val_t NEW_Location_location___Location___with_file(val_t p0);
+typedef val_t (*NEW_Location_location___Location___with_file_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TEol = "init var of TEol";
+void INIT_ATTRIBUTES__TEol(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TEol_t)(val_t p0);
+val_t NEW_TEol(void);
+static const char * const LOCATE_CHECKNEW_TEol = "check new TEol";
+void CHECKNEW_TEol(val_t p0);
+typedef void (*CHECKNEW_TEol_t)(val_t p0);
+static const char * const LOCATE_NEW_TEol_lexer___TEol___init_tk = "new TEol lexer::TEol::init_tk";
+val_t NEW_TEol_lexer___TEol___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TEol_lexer___TEol___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TEol_parser_nodes___ANode___init = "new TEol parser_nodes::ANode::init";
+val_t NEW_TEol_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TEol_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TComment = "init var of TComment";
+void INIT_ATTRIBUTES__TComment(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TComment_t)(val_t p0);
+val_t NEW_TComment(void);
+static const char * const LOCATE_CHECKNEW_TComment = "check new TComment";
+void CHECKNEW_TComment(val_t p0);
+typedef void (*CHECKNEW_TComment_t)(val_t p0);
+static const char * const LOCATE_NEW_TComment_lexer___TComment___init_tk = "new TComment lexer::TComment::init_tk";
+val_t NEW_TComment_lexer___TComment___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TComment_lexer___TComment___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TComment_parser_nodes___ANode___init = "new TComment parser_nodes::ANode::init";
+val_t NEW_TComment_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TComment_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwmodule = "init var of TKwmodule";
+void INIT_ATTRIBUTES__TKwmodule(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwmodule_t)(val_t p0);
+val_t NEW_TKwmodule(void);
+static const char * const LOCATE_CHECKNEW_TKwmodule = "check new TKwmodule";
+void CHECKNEW_TKwmodule(val_t p0);
+typedef void (*CHECKNEW_TKwmodule_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwmodule_lexer___TKwmodule___init_tk = "new TKwmodule lexer::TKwmodule::init_tk";
+val_t NEW_TKwmodule_lexer___TKwmodule___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TKwmodule_lexer___TKwmodule___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TKwmodule_parser_nodes___ANode___init = "new TKwmodule parser_nodes::ANode::init";
+val_t NEW_TKwmodule_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwmodule_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwimport = "init var of TKwimport";
+void INIT_ATTRIBUTES__TKwimport(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwimport_t)(val_t p0);
+val_t NEW_TKwimport(void);
+static const char * const LOCATE_CHECKNEW_TKwimport = "check new TKwimport";
+void CHECKNEW_TKwimport(val_t p0);
+typedef void (*CHECKNEW_TKwimport_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwimport_lexer___TKwimport___init_tk = "new TKwimport lexer::TKwimport::init_tk";
+val_t NEW_TKwimport_lexer___TKwimport___init_tk(val_t p0);
+typedef val_t (*NEW_TKwimport_lexer___TKwimport___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwimport_parser_nodes___ANode___init = "new TKwimport parser_nodes::ANode::init";
+val_t NEW_TKwimport_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwimport_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwclass = "init var of TKwclass";
+void INIT_ATTRIBUTES__TKwclass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwclass_t)(val_t p0);
+val_t NEW_TKwclass(void);
+static const char * const LOCATE_CHECKNEW_TKwclass = "check new TKwclass";
+void CHECKNEW_TKwclass(val_t p0);
+typedef void (*CHECKNEW_TKwclass_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwclass_lexer___TKwclass___init_tk = "new TKwclass lexer::TKwclass::init_tk";
+val_t NEW_TKwclass_lexer___TKwclass___init_tk(val_t p0);
+typedef val_t (*NEW_TKwclass_lexer___TKwclass___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwclass_parser_nodes___ANode___init = "new TKwclass parser_nodes::ANode::init";
+val_t NEW_TKwclass_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwclass_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwabstract = "init var of TKwabstract";
+void INIT_ATTRIBUTES__TKwabstract(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwabstract_t)(val_t p0);
+val_t NEW_TKwabstract(void);
+static const char * const LOCATE_CHECKNEW_TKwabstract = "check new TKwabstract";
+void CHECKNEW_TKwabstract(val_t p0);
+typedef void (*CHECKNEW_TKwabstract_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwabstract_lexer___TKwabstract___init_tk = "new TKwabstract lexer::TKwabstract::init_tk";
+val_t NEW_TKwabstract_lexer___TKwabstract___init_tk(val_t p0);
+typedef val_t (*NEW_TKwabstract_lexer___TKwabstract___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwabstract_parser_nodes___ANode___init = "new TKwabstract parser_nodes::ANode::init";
+val_t NEW_TKwabstract_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwabstract_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwinterface = "init var of TKwinterface";
+void INIT_ATTRIBUTES__TKwinterface(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwinterface_t)(val_t p0);
+val_t NEW_TKwinterface(void);
+static const char * const LOCATE_CHECKNEW_TKwinterface = "check new TKwinterface";
+void CHECKNEW_TKwinterface(val_t p0);
+typedef void (*CHECKNEW_TKwinterface_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwinterface_lexer___TKwinterface___init_tk = "new TKwinterface lexer::TKwinterface::init_tk";
+val_t NEW_TKwinterface_lexer___TKwinterface___init_tk(val_t p0);
+typedef val_t (*NEW_TKwinterface_lexer___TKwinterface___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwinterface_parser_nodes___ANode___init = "new TKwinterface parser_nodes::ANode::init";
+val_t NEW_TKwinterface_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwinterface_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwenum = "init var of TKwenum";
+void INIT_ATTRIBUTES__TKwenum(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwenum_t)(val_t p0);
+val_t NEW_TKwenum(void);
+static const char * const LOCATE_CHECKNEW_TKwenum = "check new TKwenum";
+void CHECKNEW_TKwenum(val_t p0);
+typedef void (*CHECKNEW_TKwenum_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwenum_lexer___TKwenum___init_tk = "new TKwenum lexer::TKwenum::init_tk";
+val_t NEW_TKwenum_lexer___TKwenum___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TKwenum_lexer___TKwenum___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TKwenum_parser_nodes___ANode___init = "new TKwenum parser_nodes::ANode::init";
+val_t NEW_TKwenum_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwenum_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwspecial = "init var of TKwspecial";
+void INIT_ATTRIBUTES__TKwspecial(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwspecial_t)(val_t p0);
+val_t NEW_TKwspecial(void);
+static const char * const LOCATE_CHECKNEW_TKwspecial = "check new TKwspecial";
+void CHECKNEW_TKwspecial(val_t p0);
+typedef void (*CHECKNEW_TKwspecial_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwspecial_lexer___TKwspecial___init_tk = "new TKwspecial lexer::TKwspecial::init_tk";
+val_t NEW_TKwspecial_lexer___TKwspecial___init_tk(val_t p0);
+typedef val_t (*NEW_TKwspecial_lexer___TKwspecial___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwspecial_parser_nodes___ANode___init = "new TKwspecial parser_nodes::ANode::init";
+val_t NEW_TKwspecial_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwspecial_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwend = "init var of TKwend";
+void INIT_ATTRIBUTES__TKwend(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwend_t)(val_t p0);
+val_t NEW_TKwend(void);
+static const char * const LOCATE_CHECKNEW_TKwend = "check new TKwend";
+void CHECKNEW_TKwend(val_t p0);
+typedef void (*CHECKNEW_TKwend_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwend_lexer___TKwend___init_tk = "new TKwend lexer::TKwend::init_tk";
+val_t NEW_TKwend_lexer___TKwend___init_tk(val_t p0);
+typedef val_t (*NEW_TKwend_lexer___TKwend___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwend_parser_nodes___ANode___init = "new TKwend parser_nodes::ANode::init";
+val_t NEW_TKwend_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwend_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwmeth = "init var of TKwmeth";
+void INIT_ATTRIBUTES__TKwmeth(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwmeth_t)(val_t p0);
+val_t NEW_TKwmeth(void);
+static const char * const LOCATE_CHECKNEW_TKwmeth = "check new TKwmeth";
+void CHECKNEW_TKwmeth(val_t p0);
+typedef void (*CHECKNEW_TKwmeth_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwmeth_lexer___TKwmeth___init_tk = "new TKwmeth lexer::TKwmeth::init_tk";
+val_t NEW_TKwmeth_lexer___TKwmeth___init_tk(val_t p0);
+typedef val_t (*NEW_TKwmeth_lexer___TKwmeth___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwmeth_parser_nodes___ANode___init = "new TKwmeth parser_nodes::ANode::init";
+val_t NEW_TKwmeth_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwmeth_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwtype = "init var of TKwtype";
+void INIT_ATTRIBUTES__TKwtype(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwtype_t)(val_t p0);
+val_t NEW_TKwtype(void);
+static const char * const LOCATE_CHECKNEW_TKwtype = "check new TKwtype";
+void CHECKNEW_TKwtype(val_t p0);
+typedef void (*CHECKNEW_TKwtype_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwtype_lexer___TKwtype___init_tk = "new TKwtype lexer::TKwtype::init_tk";
+val_t NEW_TKwtype_lexer___TKwtype___init_tk(val_t p0);
+typedef val_t (*NEW_TKwtype_lexer___TKwtype___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwtype_parser_nodes___ANode___init = "new TKwtype parser_nodes::ANode::init";
+val_t NEW_TKwtype_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwtype_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwinit = "init var of TKwinit";
+void INIT_ATTRIBUTES__TKwinit(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwinit_t)(val_t p0);
+val_t NEW_TKwinit(void);
+static const char * const LOCATE_CHECKNEW_TKwinit = "check new TKwinit";
+void CHECKNEW_TKwinit(val_t p0);
+typedef void (*CHECKNEW_TKwinit_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwinit_lexer___TKwinit___init_tk = "new TKwinit lexer::TKwinit::init_tk";
+val_t NEW_TKwinit_lexer___TKwinit___init_tk(val_t p0);
+typedef val_t (*NEW_TKwinit_lexer___TKwinit___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwinit_parser_nodes___ANode___init = "new TKwinit parser_nodes::ANode::init";
+val_t NEW_TKwinit_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwinit_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwredef = "init var of TKwredef";
+void INIT_ATTRIBUTES__TKwredef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwredef_t)(val_t p0);
+val_t NEW_TKwredef(void);
+static const char * const LOCATE_CHECKNEW_TKwredef = "check new TKwredef";
+void CHECKNEW_TKwredef(val_t p0);
+typedef void (*CHECKNEW_TKwredef_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwredef_lexer___TKwredef___init_tk = "new TKwredef lexer::TKwredef::init_tk";
+val_t NEW_TKwredef_lexer___TKwredef___init_tk(val_t p0);
+typedef val_t (*NEW_TKwredef_lexer___TKwredef___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwredef_parser_nodes___ANode___init = "new TKwredef parser_nodes::ANode::init";
+val_t NEW_TKwredef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwredef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwis = "init var of TKwis";
+void INIT_ATTRIBUTES__TKwis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwis_t)(val_t p0);
+val_t NEW_TKwis(void);
+static const char * const LOCATE_CHECKNEW_TKwis = "check new TKwis";
+void CHECKNEW_TKwis(val_t p0);
+typedef void (*CHECKNEW_TKwis_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwis_lexer___TKwis___init_tk = "new TKwis lexer::TKwis::init_tk";
+val_t NEW_TKwis_lexer___TKwis___init_tk(val_t p0);
+typedef val_t (*NEW_TKwis_lexer___TKwis___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwis_parser_nodes___ANode___init = "new TKwis parser_nodes::ANode::init";
+val_t NEW_TKwis_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwis_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwdo = "init var of TKwdo";
+void INIT_ATTRIBUTES__TKwdo(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwdo_t)(val_t p0);
+val_t NEW_TKwdo(void);
+static const char * const LOCATE_CHECKNEW_TKwdo = "check new TKwdo";
+void CHECKNEW_TKwdo(val_t p0);
+typedef void (*CHECKNEW_TKwdo_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwdo_lexer___TKwdo___init_tk = "new TKwdo lexer::TKwdo::init_tk";
+val_t NEW_TKwdo_lexer___TKwdo___init_tk(val_t p0);
+typedef val_t (*NEW_TKwdo_lexer___TKwdo___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwdo_parser_nodes___ANode___init = "new TKwdo parser_nodes::ANode::init";
+val_t NEW_TKwdo_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwdo_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwreadable = "init var of TKwreadable";
+void INIT_ATTRIBUTES__TKwreadable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwreadable_t)(val_t p0);
+val_t NEW_TKwreadable(void);
+static const char * const LOCATE_CHECKNEW_TKwreadable = "check new TKwreadable";
+void CHECKNEW_TKwreadable(val_t p0);
+typedef void (*CHECKNEW_TKwreadable_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwreadable_lexer___TKwreadable___init_tk = "new TKwreadable lexer::TKwreadable::init_tk";
+val_t NEW_TKwreadable_lexer___TKwreadable___init_tk(val_t p0);
+typedef val_t (*NEW_TKwreadable_lexer___TKwreadable___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwreadable_parser_nodes___ANode___init = "new TKwreadable parser_nodes::ANode::init";
+val_t NEW_TKwreadable_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwreadable_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwwritable = "init var of TKwwritable";
+void INIT_ATTRIBUTES__TKwwritable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwwritable_t)(val_t p0);
+val_t NEW_TKwwritable(void);
+static const char * const LOCATE_CHECKNEW_TKwwritable = "check new TKwwritable";
+void CHECKNEW_TKwwritable(val_t p0);
+typedef void (*CHECKNEW_TKwwritable_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwwritable_lexer___TKwwritable___init_tk = "new TKwwritable lexer::TKwwritable::init_tk";
+val_t NEW_TKwwritable_lexer___TKwwritable___init_tk(val_t p0);
+typedef val_t (*NEW_TKwwritable_lexer___TKwwritable___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwwritable_parser_nodes___ANode___init = "new TKwwritable parser_nodes::ANode::init";
+val_t NEW_TKwwritable_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwwritable_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwvar = "init var of TKwvar";
+void INIT_ATTRIBUTES__TKwvar(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwvar_t)(val_t p0);
+val_t NEW_TKwvar(void);
+static const char * const LOCATE_CHECKNEW_TKwvar = "check new TKwvar";
+void CHECKNEW_TKwvar(val_t p0);
+typedef void (*CHECKNEW_TKwvar_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwvar_lexer___TKwvar___init_tk = "new TKwvar lexer::TKwvar::init_tk";
+val_t NEW_TKwvar_lexer___TKwvar___init_tk(val_t p0);
+typedef val_t (*NEW_TKwvar_lexer___TKwvar___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwvar_parser_nodes___ANode___init = "new TKwvar parser_nodes::ANode::init";
+val_t NEW_TKwvar_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwvar_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwintern = "init var of TKwintern";
+void INIT_ATTRIBUTES__TKwintern(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwintern_t)(val_t p0);
+val_t NEW_TKwintern(void);
+static const char * const LOCATE_CHECKNEW_TKwintern = "check new TKwintern";
+void CHECKNEW_TKwintern(val_t p0);
+typedef void (*CHECKNEW_TKwintern_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwintern_lexer___TKwintern___init_tk = "new TKwintern lexer::TKwintern::init_tk";
+val_t NEW_TKwintern_lexer___TKwintern___init_tk(val_t p0);
+typedef val_t (*NEW_TKwintern_lexer___TKwintern___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwintern_parser_nodes___ANode___init = "new TKwintern parser_nodes::ANode::init";
+val_t NEW_TKwintern_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwintern_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwextern = "init var of TKwextern";
+void INIT_ATTRIBUTES__TKwextern(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwextern_t)(val_t p0);
+val_t NEW_TKwextern(void);
+static const char * const LOCATE_CHECKNEW_TKwextern = "check new TKwextern";
+void CHECKNEW_TKwextern(val_t p0);
+typedef void (*CHECKNEW_TKwextern_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwextern_lexer___TKwextern___init_tk = "new TKwextern lexer::TKwextern::init_tk";
+val_t NEW_TKwextern_lexer___TKwextern___init_tk(val_t p0);
+typedef val_t (*NEW_TKwextern_lexer___TKwextern___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwextern_parser_nodes___ANode___init = "new TKwextern parser_nodes::ANode::init";
+val_t NEW_TKwextern_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwextern_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwprotected = "init var of TKwprotected";
+void INIT_ATTRIBUTES__TKwprotected(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwprotected_t)(val_t p0);
+val_t NEW_TKwprotected(void);
+static const char * const LOCATE_CHECKNEW_TKwprotected = "check new TKwprotected";
+void CHECKNEW_TKwprotected(val_t p0);
+typedef void (*CHECKNEW_TKwprotected_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwprotected_lexer___TKwprotected___init_tk = "new TKwprotected lexer::TKwprotected::init_tk";
+val_t NEW_TKwprotected_lexer___TKwprotected___init_tk(val_t p0);
+typedef val_t (*NEW_TKwprotected_lexer___TKwprotected___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwprotected_parser_nodes___ANode___init = "new TKwprotected parser_nodes::ANode::init";
+val_t NEW_TKwprotected_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwprotected_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwprivate = "init var of TKwprivate";
+void INIT_ATTRIBUTES__TKwprivate(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwprivate_t)(val_t p0);
+val_t NEW_TKwprivate(void);
+static const char * const LOCATE_CHECKNEW_TKwprivate = "check new TKwprivate";
+void CHECKNEW_TKwprivate(val_t p0);
+typedef void (*CHECKNEW_TKwprivate_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwprivate_lexer___TKwprivate___init_tk = "new TKwprivate lexer::TKwprivate::init_tk";
+val_t NEW_TKwprivate_lexer___TKwprivate___init_tk(val_t p0);
+typedef val_t (*NEW_TKwprivate_lexer___TKwprivate___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwprivate_parser_nodes___ANode___init = "new TKwprivate parser_nodes::ANode::init";
+val_t NEW_TKwprivate_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwprivate_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwintrude = "init var of TKwintrude";
+void INIT_ATTRIBUTES__TKwintrude(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwintrude_t)(val_t p0);
+val_t NEW_TKwintrude(void);
+static const char * const LOCATE_CHECKNEW_TKwintrude = "check new TKwintrude";
+void CHECKNEW_TKwintrude(val_t p0);
+typedef void (*CHECKNEW_TKwintrude_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwintrude_lexer___TKwintrude___init_tk = "new TKwintrude lexer::TKwintrude::init_tk";
+val_t NEW_TKwintrude_lexer___TKwintrude___init_tk(val_t p0);
+typedef val_t (*NEW_TKwintrude_lexer___TKwintrude___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwintrude_parser_nodes___ANode___init = "new TKwintrude parser_nodes::ANode::init";
+val_t NEW_TKwintrude_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwintrude_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwif = "init var of TKwif";
+void INIT_ATTRIBUTES__TKwif(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwif_t)(val_t p0);
+val_t NEW_TKwif(void);
+static const char * const LOCATE_CHECKNEW_TKwif = "check new TKwif";
+void CHECKNEW_TKwif(val_t p0);
+typedef void (*CHECKNEW_TKwif_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwif_lexer___TKwif___init_tk = "new TKwif lexer::TKwif::init_tk";
+val_t NEW_TKwif_lexer___TKwif___init_tk(val_t p0);
+typedef val_t (*NEW_TKwif_lexer___TKwif___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwif_parser_nodes___ANode___init = "new TKwif parser_nodes::ANode::init";
+val_t NEW_TKwif_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwif_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwthen = "init var of TKwthen";
+void INIT_ATTRIBUTES__TKwthen(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwthen_t)(val_t p0);
+val_t NEW_TKwthen(void);
+static const char * const LOCATE_CHECKNEW_TKwthen = "check new TKwthen";
+void CHECKNEW_TKwthen(val_t p0);
+typedef void (*CHECKNEW_TKwthen_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwthen_lexer___TKwthen___init_tk = "new TKwthen lexer::TKwthen::init_tk";
+val_t NEW_TKwthen_lexer___TKwthen___init_tk(val_t p0);
+typedef val_t (*NEW_TKwthen_lexer___TKwthen___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwthen_parser_nodes___ANode___init = "new TKwthen parser_nodes::ANode::init";
+val_t NEW_TKwthen_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwthen_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwelse = "init var of TKwelse";
+void INIT_ATTRIBUTES__TKwelse(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwelse_t)(val_t p0);
+val_t NEW_TKwelse(void);
+static const char * const LOCATE_CHECKNEW_TKwelse = "check new TKwelse";
+void CHECKNEW_TKwelse(val_t p0);
+typedef void (*CHECKNEW_TKwelse_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwelse_lexer___TKwelse___init_tk = "new TKwelse lexer::TKwelse::init_tk";
+val_t NEW_TKwelse_lexer___TKwelse___init_tk(val_t p0);
+typedef val_t (*NEW_TKwelse_lexer___TKwelse___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwelse_parser_nodes___ANode___init = "new TKwelse parser_nodes::ANode::init";
+val_t NEW_TKwelse_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwelse_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwwhile = "init var of TKwwhile";
+void INIT_ATTRIBUTES__TKwwhile(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwwhile_t)(val_t p0);
+val_t NEW_TKwwhile(void);
+static const char * const LOCATE_CHECKNEW_TKwwhile = "check new TKwwhile";
+void CHECKNEW_TKwwhile(val_t p0);
+typedef void (*CHECKNEW_TKwwhile_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwwhile_lexer___TKwwhile___init_tk = "new TKwwhile lexer::TKwwhile::init_tk";
+val_t NEW_TKwwhile_lexer___TKwwhile___init_tk(val_t p0);
+typedef val_t (*NEW_TKwwhile_lexer___TKwwhile___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwwhile_parser_nodes___ANode___init = "new TKwwhile parser_nodes::ANode::init";
+val_t NEW_TKwwhile_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwwhile_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwloop = "init var of TKwloop";
+void INIT_ATTRIBUTES__TKwloop(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwloop_t)(val_t p0);
+val_t NEW_TKwloop(void);
+static const char * const LOCATE_CHECKNEW_TKwloop = "check new TKwloop";
+void CHECKNEW_TKwloop(val_t p0);
+typedef void (*CHECKNEW_TKwloop_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwloop_lexer___TKwloop___init_tk = "new TKwloop lexer::TKwloop::init_tk";
+val_t NEW_TKwloop_lexer___TKwloop___init_tk(val_t p0);
+typedef val_t (*NEW_TKwloop_lexer___TKwloop___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwloop_parser_nodes___ANode___init = "new TKwloop parser_nodes::ANode::init";
+val_t NEW_TKwloop_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwloop_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwfor = "init var of TKwfor";
+void INIT_ATTRIBUTES__TKwfor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwfor_t)(val_t p0);
+val_t NEW_TKwfor(void);
+static const char * const LOCATE_CHECKNEW_TKwfor = "check new TKwfor";
+void CHECKNEW_TKwfor(val_t p0);
+typedef void (*CHECKNEW_TKwfor_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwfor_lexer___TKwfor___init_tk = "new TKwfor lexer::TKwfor::init_tk";
+val_t NEW_TKwfor_lexer___TKwfor___init_tk(val_t p0);
+typedef val_t (*NEW_TKwfor_lexer___TKwfor___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwfor_parser_nodes___ANode___init = "new TKwfor parser_nodes::ANode::init";
+val_t NEW_TKwfor_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwfor_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwin = "init var of TKwin";
+void INIT_ATTRIBUTES__TKwin(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwin_t)(val_t p0);
+val_t NEW_TKwin(void);
+static const char * const LOCATE_CHECKNEW_TKwin = "check new TKwin";
+void CHECKNEW_TKwin(val_t p0);
+typedef void (*CHECKNEW_TKwin_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwin_lexer___TKwin___init_tk = "new TKwin lexer::TKwin::init_tk";
+val_t NEW_TKwin_lexer___TKwin___init_tk(val_t p0);
+typedef val_t (*NEW_TKwin_lexer___TKwin___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwin_parser_nodes___ANode___init = "new TKwin parser_nodes::ANode::init";
+val_t NEW_TKwin_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwin_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwand = "init var of TKwand";
+void INIT_ATTRIBUTES__TKwand(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwand_t)(val_t p0);
+val_t NEW_TKwand(void);
+static const char * const LOCATE_CHECKNEW_TKwand = "check new TKwand";
+void CHECKNEW_TKwand(val_t p0);
+typedef void (*CHECKNEW_TKwand_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwand_lexer___TKwand___init_tk = "new TKwand lexer::TKwand::init_tk";
+val_t NEW_TKwand_lexer___TKwand___init_tk(val_t p0);
+typedef val_t (*NEW_TKwand_lexer___TKwand___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwand_parser_nodes___ANode___init = "new TKwand parser_nodes::ANode::init";
+val_t NEW_TKwand_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwand_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwor = "init var of TKwor";
+void INIT_ATTRIBUTES__TKwor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwor_t)(val_t p0);
+val_t NEW_TKwor(void);
+static const char * const LOCATE_CHECKNEW_TKwor = "check new TKwor";
+void CHECKNEW_TKwor(val_t p0);
+typedef void (*CHECKNEW_TKwor_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwor_lexer___TKwor___init_tk = "new TKwor lexer::TKwor::init_tk";
+val_t NEW_TKwor_lexer___TKwor___init_tk(val_t p0);
+typedef val_t (*NEW_TKwor_lexer___TKwor___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwor_parser_nodes___ANode___init = "new TKwor parser_nodes::ANode::init";
+val_t NEW_TKwor_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwor_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwnot = "init var of TKwnot";
+void INIT_ATTRIBUTES__TKwnot(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwnot_t)(val_t p0);
+val_t NEW_TKwnot(void);
+static const char * const LOCATE_CHECKNEW_TKwnot = "check new TKwnot";
+void CHECKNEW_TKwnot(val_t p0);
+typedef void (*CHECKNEW_TKwnot_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwnot_lexer___TKwnot___init_tk = "new TKwnot lexer::TKwnot::init_tk";
+val_t NEW_TKwnot_lexer___TKwnot___init_tk(val_t p0);
+typedef val_t (*NEW_TKwnot_lexer___TKwnot___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwnot_parser_nodes___ANode___init = "new TKwnot parser_nodes::ANode::init";
+val_t NEW_TKwnot_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwnot_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwreturn = "init var of TKwreturn";
+void INIT_ATTRIBUTES__TKwreturn(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwreturn_t)(val_t p0);
+val_t NEW_TKwreturn(void);
+static const char * const LOCATE_CHECKNEW_TKwreturn = "check new TKwreturn";
+void CHECKNEW_TKwreturn(val_t p0);
+typedef void (*CHECKNEW_TKwreturn_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwreturn_lexer___TKwreturn___init_tk = "new TKwreturn lexer::TKwreturn::init_tk";
+val_t NEW_TKwreturn_lexer___TKwreturn___init_tk(val_t p0);
+typedef val_t (*NEW_TKwreturn_lexer___TKwreturn___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwreturn_parser_nodes___ANode___init = "new TKwreturn parser_nodes::ANode::init";
+val_t NEW_TKwreturn_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwreturn_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwcontinue = "init var of TKwcontinue";
+void INIT_ATTRIBUTES__TKwcontinue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwcontinue_t)(val_t p0);
+val_t NEW_TKwcontinue(void);
+static const char * const LOCATE_CHECKNEW_TKwcontinue = "check new TKwcontinue";
+void CHECKNEW_TKwcontinue(val_t p0);
+typedef void (*CHECKNEW_TKwcontinue_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwcontinue_lexer___TKwcontinue___init_tk = "new TKwcontinue lexer::TKwcontinue::init_tk";
+val_t NEW_TKwcontinue_lexer___TKwcontinue___init_tk(val_t p0);
+typedef val_t (*NEW_TKwcontinue_lexer___TKwcontinue___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwcontinue_parser_nodes___ANode___init = "new TKwcontinue parser_nodes::ANode::init";
+val_t NEW_TKwcontinue_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwcontinue_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwbreak = "init var of TKwbreak";
+void INIT_ATTRIBUTES__TKwbreak(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwbreak_t)(val_t p0);
+val_t NEW_TKwbreak(void);
+static const char * const LOCATE_CHECKNEW_TKwbreak = "check new TKwbreak";
+void CHECKNEW_TKwbreak(val_t p0);
+typedef void (*CHECKNEW_TKwbreak_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwbreak_lexer___TKwbreak___init_tk = "new TKwbreak lexer::TKwbreak::init_tk";
+val_t NEW_TKwbreak_lexer___TKwbreak___init_tk(val_t p0);
+typedef val_t (*NEW_TKwbreak_lexer___TKwbreak___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwbreak_parser_nodes___ANode___init = "new TKwbreak parser_nodes::ANode::init";
+val_t NEW_TKwbreak_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwbreak_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwabort = "init var of TKwabort";
+void INIT_ATTRIBUTES__TKwabort(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwabort_t)(val_t p0);
+val_t NEW_TKwabort(void);
+static const char * const LOCATE_CHECKNEW_TKwabort = "check new TKwabort";
+void CHECKNEW_TKwabort(val_t p0);
+typedef void (*CHECKNEW_TKwabort_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwabort_lexer___TKwabort___init_tk = "new TKwabort lexer::TKwabort::init_tk";
+val_t NEW_TKwabort_lexer___TKwabort___init_tk(val_t p0);
+typedef val_t (*NEW_TKwabort_lexer___TKwabort___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwabort_parser_nodes___ANode___init = "new TKwabort parser_nodes::ANode::init";
+val_t NEW_TKwabort_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwabort_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwassert = "init var of TKwassert";
+void INIT_ATTRIBUTES__TKwassert(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwassert_t)(val_t p0);
+val_t NEW_TKwassert(void);
+static const char * const LOCATE_CHECKNEW_TKwassert = "check new TKwassert";
+void CHECKNEW_TKwassert(val_t p0);
+typedef void (*CHECKNEW_TKwassert_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwassert_lexer___TKwassert___init_tk = "new TKwassert lexer::TKwassert::init_tk";
+val_t NEW_TKwassert_lexer___TKwassert___init_tk(val_t p0);
+typedef val_t (*NEW_TKwassert_lexer___TKwassert___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwassert_parser_nodes___ANode___init = "new TKwassert parser_nodes::ANode::init";
+val_t NEW_TKwassert_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwassert_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwnew = "init var of TKwnew";
+void INIT_ATTRIBUTES__TKwnew(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwnew_t)(val_t p0);
+val_t NEW_TKwnew(void);
+static const char * const LOCATE_CHECKNEW_TKwnew = "check new TKwnew";
+void CHECKNEW_TKwnew(val_t p0);
+typedef void (*CHECKNEW_TKwnew_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwnew_lexer___TKwnew___init_tk = "new TKwnew lexer::TKwnew::init_tk";
+val_t NEW_TKwnew_lexer___TKwnew___init_tk(val_t p0);
+typedef val_t (*NEW_TKwnew_lexer___TKwnew___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwnew_parser_nodes___ANode___init = "new TKwnew parser_nodes::ANode::init";
+val_t NEW_TKwnew_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwnew_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwisa = "init var of TKwisa";
+void INIT_ATTRIBUTES__TKwisa(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwisa_t)(val_t p0);
+val_t NEW_TKwisa(void);
+static const char * const LOCATE_CHECKNEW_TKwisa = "check new TKwisa";
+void CHECKNEW_TKwisa(val_t p0);
+typedef void (*CHECKNEW_TKwisa_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwisa_lexer___TKwisa___init_tk = "new TKwisa lexer::TKwisa::init_tk";
+val_t NEW_TKwisa_lexer___TKwisa___init_tk(val_t p0);
+typedef val_t (*NEW_TKwisa_lexer___TKwisa___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwisa_parser_nodes___ANode___init = "new TKwisa parser_nodes::ANode::init";
+val_t NEW_TKwisa_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwisa_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwonce = "init var of TKwonce";
+void INIT_ATTRIBUTES__TKwonce(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwonce_t)(val_t p0);
+val_t NEW_TKwonce(void);
+static const char * const LOCATE_CHECKNEW_TKwonce = "check new TKwonce";
+void CHECKNEW_TKwonce(val_t p0);
+typedef void (*CHECKNEW_TKwonce_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwonce_lexer___TKwonce___init_tk = "new TKwonce lexer::TKwonce::init_tk";
+val_t NEW_TKwonce_lexer___TKwonce___init_tk(val_t p0);
+typedef val_t (*NEW_TKwonce_lexer___TKwonce___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwonce_parser_nodes___ANode___init = "new TKwonce parser_nodes::ANode::init";
+val_t NEW_TKwonce_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwonce_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwsuper = "init var of TKwsuper";
+void INIT_ATTRIBUTES__TKwsuper(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwsuper_t)(val_t p0);
+val_t NEW_TKwsuper(void);
+static const char * const LOCATE_CHECKNEW_TKwsuper = "check new TKwsuper";
+void CHECKNEW_TKwsuper(val_t p0);
+typedef void (*CHECKNEW_TKwsuper_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwsuper_lexer___TKwsuper___init_tk = "new TKwsuper lexer::TKwsuper::init_tk";
+val_t NEW_TKwsuper_lexer___TKwsuper___init_tk(val_t p0);
+typedef val_t (*NEW_TKwsuper_lexer___TKwsuper___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwsuper_parser_nodes___ANode___init = "new TKwsuper parser_nodes::ANode::init";
+val_t NEW_TKwsuper_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwsuper_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwself = "init var of TKwself";
+void INIT_ATTRIBUTES__TKwself(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwself_t)(val_t p0);
+val_t NEW_TKwself(void);
+static const char * const LOCATE_CHECKNEW_TKwself = "check new TKwself";
+void CHECKNEW_TKwself(val_t p0);
+typedef void (*CHECKNEW_TKwself_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwself_lexer___TKwself___init_tk = "new TKwself lexer::TKwself::init_tk";
+val_t NEW_TKwself_lexer___TKwself___init_tk(val_t p0);
+typedef val_t (*NEW_TKwself_lexer___TKwself___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwself_parser_nodes___ANode___init = "new TKwself parser_nodes::ANode::init";
+val_t NEW_TKwself_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwself_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwtrue = "init var of TKwtrue";
+void INIT_ATTRIBUTES__TKwtrue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwtrue_t)(val_t p0);
+val_t NEW_TKwtrue(void);
+static const char * const LOCATE_CHECKNEW_TKwtrue = "check new TKwtrue";
+void CHECKNEW_TKwtrue(val_t p0);
+typedef void (*CHECKNEW_TKwtrue_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwtrue_lexer___TKwtrue___init_tk = "new TKwtrue lexer::TKwtrue::init_tk";
+val_t NEW_TKwtrue_lexer___TKwtrue___init_tk(val_t p0);
+typedef val_t (*NEW_TKwtrue_lexer___TKwtrue___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwtrue_parser_nodes___ANode___init = "new TKwtrue parser_nodes::ANode::init";
+val_t NEW_TKwtrue_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwtrue_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwfalse = "init var of TKwfalse";
+void INIT_ATTRIBUTES__TKwfalse(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwfalse_t)(val_t p0);
+val_t NEW_TKwfalse(void);
+static const char * const LOCATE_CHECKNEW_TKwfalse = "check new TKwfalse";
+void CHECKNEW_TKwfalse(val_t p0);
+typedef void (*CHECKNEW_TKwfalse_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwfalse_lexer___TKwfalse___init_tk = "new TKwfalse lexer::TKwfalse::init_tk";
+val_t NEW_TKwfalse_lexer___TKwfalse___init_tk(val_t p0);
+typedef val_t (*NEW_TKwfalse_lexer___TKwfalse___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwfalse_parser_nodes___ANode___init = "new TKwfalse parser_nodes::ANode::init";
+val_t NEW_TKwfalse_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwfalse_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwnull = "init var of TKwnull";
+void INIT_ATTRIBUTES__TKwnull(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwnull_t)(val_t p0);
+val_t NEW_TKwnull(void);
+static const char * const LOCATE_CHECKNEW_TKwnull = "check new TKwnull";
+void CHECKNEW_TKwnull(val_t p0);
+typedef void (*CHECKNEW_TKwnull_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwnull_lexer___TKwnull___init_tk = "new TKwnull lexer::TKwnull::init_tk";
+val_t NEW_TKwnull_lexer___TKwnull___init_tk(val_t p0);
+typedef val_t (*NEW_TKwnull_lexer___TKwnull___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwnull_parser_nodes___ANode___init = "new TKwnull parser_nodes::ANode::init";
+val_t NEW_TKwnull_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwnull_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwas = "init var of TKwas";
+void INIT_ATTRIBUTES__TKwas(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwas_t)(val_t p0);
+val_t NEW_TKwas(void);
+static const char * const LOCATE_CHECKNEW_TKwas = "check new TKwas";
+void CHECKNEW_TKwas(val_t p0);
+typedef void (*CHECKNEW_TKwas_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwas_lexer___TKwas___init_tk = "new TKwas lexer::TKwas::init_tk";
+val_t NEW_TKwas_lexer___TKwas___init_tk(val_t p0);
+typedef val_t (*NEW_TKwas_lexer___TKwas___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwas_parser_nodes___ANode___init = "new TKwas parser_nodes::ANode::init";
+val_t NEW_TKwas_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwas_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwnullable = "init var of TKwnullable";
+void INIT_ATTRIBUTES__TKwnullable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwnullable_t)(val_t p0);
+val_t NEW_TKwnullable(void);
+static const char * const LOCATE_CHECKNEW_TKwnullable = "check new TKwnullable";
+void CHECKNEW_TKwnullable(val_t p0);
+typedef void (*CHECKNEW_TKwnullable_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwnullable_lexer___TKwnullable___init_tk = "new TKwnullable lexer::TKwnullable::init_tk";
+val_t NEW_TKwnullable_lexer___TKwnullable___init_tk(val_t p0);
+typedef val_t (*NEW_TKwnullable_lexer___TKwnullable___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwnullable_parser_nodes___ANode___init = "new TKwnullable parser_nodes::ANode::init";
+val_t NEW_TKwnullable_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwnullable_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwisset = "init var of TKwisset";
+void INIT_ATTRIBUTES__TKwisset(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwisset_t)(val_t p0);
+val_t NEW_TKwisset(void);
+static const char * const LOCATE_CHECKNEW_TKwisset = "check new TKwisset";
+void CHECKNEW_TKwisset(val_t p0);
+typedef void (*CHECKNEW_TKwisset_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwisset_lexer___TKwisset___init_tk = "new TKwisset lexer::TKwisset::init_tk";
+val_t NEW_TKwisset_lexer___TKwisset___init_tk(val_t p0);
+typedef val_t (*NEW_TKwisset_lexer___TKwisset___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwisset_parser_nodes___ANode___init = "new TKwisset parser_nodes::ANode::init";
+val_t NEW_TKwisset_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwisset_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TKwlabel = "init var of TKwlabel";
+void INIT_ATTRIBUTES__TKwlabel(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TKwlabel_t)(val_t p0);
+val_t NEW_TKwlabel(void);
+static const char * const LOCATE_CHECKNEW_TKwlabel = "check new TKwlabel";
+void CHECKNEW_TKwlabel(val_t p0);
+typedef void (*CHECKNEW_TKwlabel_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwlabel_lexer___TKwlabel___init_tk = "new TKwlabel lexer::TKwlabel::init_tk";
+val_t NEW_TKwlabel_lexer___TKwlabel___init_tk(val_t p0);
+typedef val_t (*NEW_TKwlabel_lexer___TKwlabel___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TKwlabel_parser_nodes___ANode___init = "new TKwlabel parser_nodes::ANode::init";
+val_t NEW_TKwlabel_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TKwlabel_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TOpar = "init var of TOpar";
+void INIT_ATTRIBUTES__TOpar(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TOpar_t)(val_t p0);
+val_t NEW_TOpar(void);
+static const char * const LOCATE_CHECKNEW_TOpar = "check new TOpar";
+void CHECKNEW_TOpar(val_t p0);
+typedef void (*CHECKNEW_TOpar_t)(val_t p0);
+static const char * const LOCATE_NEW_TOpar_lexer___TOpar___init_tk = "new TOpar lexer::TOpar::init_tk";
+val_t NEW_TOpar_lexer___TOpar___init_tk(val_t p0);
+typedef val_t (*NEW_TOpar_lexer___TOpar___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TOpar_parser_nodes___ANode___init = "new TOpar parser_nodes::ANode::init";
+val_t NEW_TOpar_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TOpar_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TCpar = "init var of TCpar";
+void INIT_ATTRIBUTES__TCpar(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TCpar_t)(val_t p0);
+val_t NEW_TCpar(void);
+static const char * const LOCATE_CHECKNEW_TCpar = "check new TCpar";
+void CHECKNEW_TCpar(val_t p0);
+typedef void (*CHECKNEW_TCpar_t)(val_t p0);
+static const char * const LOCATE_NEW_TCpar_lexer___TCpar___init_tk = "new TCpar lexer::TCpar::init_tk";
+val_t NEW_TCpar_lexer___TCpar___init_tk(val_t p0);
+typedef val_t (*NEW_TCpar_lexer___TCpar___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TCpar_parser_nodes___ANode___init = "new TCpar parser_nodes::ANode::init";
+val_t NEW_TCpar_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TCpar_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TObra = "init var of TObra";
+void INIT_ATTRIBUTES__TObra(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TObra_t)(val_t p0);
+val_t NEW_TObra(void);
+static const char * const LOCATE_CHECKNEW_TObra = "check new TObra";
+void CHECKNEW_TObra(val_t p0);
+typedef void (*CHECKNEW_TObra_t)(val_t p0);
+static const char * const LOCATE_NEW_TObra_lexer___TObra___init_tk = "new TObra lexer::TObra::init_tk";
+val_t NEW_TObra_lexer___TObra___init_tk(val_t p0);
+typedef val_t (*NEW_TObra_lexer___TObra___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TObra_parser_nodes___ANode___init = "new TObra parser_nodes::ANode::init";
+val_t NEW_TObra_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TObra_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TCbra = "init var of TCbra";
+void INIT_ATTRIBUTES__TCbra(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TCbra_t)(val_t p0);
+val_t NEW_TCbra(void);
+static const char * const LOCATE_CHECKNEW_TCbra = "check new TCbra";
+void CHECKNEW_TCbra(val_t p0);
+typedef void (*CHECKNEW_TCbra_t)(val_t p0);
+static const char * const LOCATE_NEW_TCbra_lexer___TCbra___init_tk = "new TCbra lexer::TCbra::init_tk";
+val_t NEW_TCbra_lexer___TCbra___init_tk(val_t p0);
+typedef val_t (*NEW_TCbra_lexer___TCbra___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TCbra_parser_nodes___ANode___init = "new TCbra parser_nodes::ANode::init";
+val_t NEW_TCbra_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TCbra_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TComma = "init var of TComma";
+void INIT_ATTRIBUTES__TComma(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TComma_t)(val_t p0);
+val_t NEW_TComma(void);
+static const char * const LOCATE_CHECKNEW_TComma = "check new TComma";
+void CHECKNEW_TComma(val_t p0);
+typedef void (*CHECKNEW_TComma_t)(val_t p0);
+static const char * const LOCATE_NEW_TComma_lexer___TComma___init_tk = "new TComma lexer::TComma::init_tk";
+val_t NEW_TComma_lexer___TComma___init_tk(val_t p0);
+typedef val_t (*NEW_TComma_lexer___TComma___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TComma_parser_nodes___ANode___init = "new TComma parser_nodes::ANode::init";
+val_t NEW_TComma_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TComma_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TColumn = "init var of TColumn";
+void INIT_ATTRIBUTES__TColumn(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TColumn_t)(val_t p0);
+val_t NEW_TColumn(void);
+static const char * const LOCATE_CHECKNEW_TColumn = "check new TColumn";
+void CHECKNEW_TColumn(val_t p0);
+typedef void (*CHECKNEW_TColumn_t)(val_t p0);
+static const char * const LOCATE_NEW_TColumn_lexer___TColumn___init_tk = "new TColumn lexer::TColumn::init_tk";
+val_t NEW_TColumn_lexer___TColumn___init_tk(val_t p0);
+typedef val_t (*NEW_TColumn_lexer___TColumn___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TColumn_parser_nodes___ANode___init = "new TColumn parser_nodes::ANode::init";
+val_t NEW_TColumn_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TColumn_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TQuad = "init var of TQuad";
+void INIT_ATTRIBUTES__TQuad(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TQuad_t)(val_t p0);
+val_t NEW_TQuad(void);
+static const char * const LOCATE_CHECKNEW_TQuad = "check new TQuad";
+void CHECKNEW_TQuad(val_t p0);
+typedef void (*CHECKNEW_TQuad_t)(val_t p0);
+static const char * const LOCATE_NEW_TQuad_lexer___TQuad___init_tk = "new TQuad lexer::TQuad::init_tk";
+val_t NEW_TQuad_lexer___TQuad___init_tk(val_t p0);
+typedef val_t (*NEW_TQuad_lexer___TQuad___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TQuad_parser_nodes___ANode___init = "new TQuad parser_nodes::ANode::init";
+val_t NEW_TQuad_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TQuad_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TAssign = "init var of TAssign";
+void INIT_ATTRIBUTES__TAssign(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TAssign_t)(val_t p0);
+val_t NEW_TAssign(void);
+static const char * const LOCATE_CHECKNEW_TAssign = "check new TAssign";
+void CHECKNEW_TAssign(val_t p0);
+typedef void (*CHECKNEW_TAssign_t)(val_t p0);
+static const char * const LOCATE_NEW_TAssign_lexer___TAssign___init_tk = "new TAssign lexer::TAssign::init_tk";
+val_t NEW_TAssign_lexer___TAssign___init_tk(val_t p0);
+typedef val_t (*NEW_TAssign_lexer___TAssign___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TAssign_parser_nodes___ANode___init = "new TAssign parser_nodes::ANode::init";
+val_t NEW_TAssign_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TAssign_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TPluseq = "init var of TPluseq";
+void INIT_ATTRIBUTES__TPluseq(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TPluseq_t)(val_t p0);
+val_t NEW_TPluseq(void);
+static const char * const LOCATE_CHECKNEW_TPluseq = "check new TPluseq";
+void CHECKNEW_TPluseq(val_t p0);
+typedef void (*CHECKNEW_TPluseq_t)(val_t p0);
+static const char * const LOCATE_NEW_TPluseq_lexer___TPluseq___init_tk = "new TPluseq lexer::TPluseq::init_tk";
+val_t NEW_TPluseq_lexer___TPluseq___init_tk(val_t p0);
+typedef val_t (*NEW_TPluseq_lexer___TPluseq___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TPluseq_parser_nodes___ANode___init = "new TPluseq parser_nodes::ANode::init";
+val_t NEW_TPluseq_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TPluseq_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TMinuseq = "init var of TMinuseq";
+void INIT_ATTRIBUTES__TMinuseq(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TMinuseq_t)(val_t p0);
+val_t NEW_TMinuseq(void);
+static const char * const LOCATE_CHECKNEW_TMinuseq = "check new TMinuseq";
+void CHECKNEW_TMinuseq(val_t p0);
+typedef void (*CHECKNEW_TMinuseq_t)(val_t p0);
+static const char * const LOCATE_NEW_TMinuseq_lexer___TMinuseq___init_tk = "new TMinuseq lexer::TMinuseq::init_tk";
+val_t NEW_TMinuseq_lexer___TMinuseq___init_tk(val_t p0);
+typedef val_t (*NEW_TMinuseq_lexer___TMinuseq___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TMinuseq_parser_nodes___ANode___init = "new TMinuseq parser_nodes::ANode::init";
+val_t NEW_TMinuseq_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TMinuseq_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TDotdotdot = "init var of TDotdotdot";
+void INIT_ATTRIBUTES__TDotdotdot(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TDotdotdot_t)(val_t p0);
+val_t NEW_TDotdotdot(void);
+static const char * const LOCATE_CHECKNEW_TDotdotdot = "check new TDotdotdot";
+void CHECKNEW_TDotdotdot(val_t p0);
+typedef void (*CHECKNEW_TDotdotdot_t)(val_t p0);
+static const char * const LOCATE_NEW_TDotdotdot_lexer___TDotdotdot___init_tk = "new TDotdotdot lexer::TDotdotdot::init_tk";
+val_t NEW_TDotdotdot_lexer___TDotdotdot___init_tk(val_t p0);
+typedef val_t (*NEW_TDotdotdot_lexer___TDotdotdot___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TDotdotdot_parser_nodes___ANode___init = "new TDotdotdot parser_nodes::ANode::init";
+val_t NEW_TDotdotdot_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TDotdotdot_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TDotdot = "init var of TDotdot";
+void INIT_ATTRIBUTES__TDotdot(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TDotdot_t)(val_t p0);
+val_t NEW_TDotdot(void);
+static const char * const LOCATE_CHECKNEW_TDotdot = "check new TDotdot";
+void CHECKNEW_TDotdot(val_t p0);
+typedef void (*CHECKNEW_TDotdot_t)(val_t p0);
+static const char * const LOCATE_NEW_TDotdot_lexer___TDotdot___init_tk = "new TDotdot lexer::TDotdot::init_tk";
+val_t NEW_TDotdot_lexer___TDotdot___init_tk(val_t p0);
+typedef val_t (*NEW_TDotdot_lexer___TDotdot___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TDotdot_parser_nodes___ANode___init = "new TDotdot parser_nodes::ANode::init";
+val_t NEW_TDotdot_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TDotdot_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TDot = "init var of TDot";
+void INIT_ATTRIBUTES__TDot(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TDot_t)(val_t p0);
+val_t NEW_TDot(void);
+static const char * const LOCATE_CHECKNEW_TDot = "check new TDot";
+void CHECKNEW_TDot(val_t p0);
+typedef void (*CHECKNEW_TDot_t)(val_t p0);
+static const char * const LOCATE_NEW_TDot_lexer___TDot___init_tk = "new TDot lexer::TDot::init_tk";
+val_t NEW_TDot_lexer___TDot___init_tk(val_t p0);
+typedef val_t (*NEW_TDot_lexer___TDot___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TDot_parser_nodes___ANode___init = "new TDot parser_nodes::ANode::init";
+val_t NEW_TDot_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TDot_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TPlus = "init var of TPlus";
+void INIT_ATTRIBUTES__TPlus(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TPlus_t)(val_t p0);
+val_t NEW_TPlus(void);
+static const char * const LOCATE_CHECKNEW_TPlus = "check new TPlus";
+void CHECKNEW_TPlus(val_t p0);
+typedef void (*CHECKNEW_TPlus_t)(val_t p0);
+static const char * const LOCATE_NEW_TPlus_lexer___TPlus___init_tk = "new TPlus lexer::TPlus::init_tk";
+val_t NEW_TPlus_lexer___TPlus___init_tk(val_t p0);
+typedef val_t (*NEW_TPlus_lexer___TPlus___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TPlus_parser_nodes___ANode___init = "new TPlus parser_nodes::ANode::init";
+val_t NEW_TPlus_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TPlus_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TMinus = "init var of TMinus";
+void INIT_ATTRIBUTES__TMinus(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TMinus_t)(val_t p0);
+val_t NEW_TMinus(void);
+static const char * const LOCATE_CHECKNEW_TMinus = "check new TMinus";
+void CHECKNEW_TMinus(val_t p0);
+typedef void (*CHECKNEW_TMinus_t)(val_t p0);
+static const char * const LOCATE_NEW_TMinus_lexer___TMinus___init_tk = "new TMinus lexer::TMinus::init_tk";
+val_t NEW_TMinus_lexer___TMinus___init_tk(val_t p0);
+typedef val_t (*NEW_TMinus_lexer___TMinus___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TMinus_parser_nodes___ANode___init = "new TMinus parser_nodes::ANode::init";
+val_t NEW_TMinus_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TMinus_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TStar = "init var of TStar";
+void INIT_ATTRIBUTES__TStar(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TStar_t)(val_t p0);
+val_t NEW_TStar(void);
+static const char * const LOCATE_CHECKNEW_TStar = "check new TStar";
+void CHECKNEW_TStar(val_t p0);
+typedef void (*CHECKNEW_TStar_t)(val_t p0);
+static const char * const LOCATE_NEW_TStar_lexer___TStar___init_tk = "new TStar lexer::TStar::init_tk";
+val_t NEW_TStar_lexer___TStar___init_tk(val_t p0);
+typedef val_t (*NEW_TStar_lexer___TStar___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TStar_parser_nodes___ANode___init = "new TStar parser_nodes::ANode::init";
+val_t NEW_TStar_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TStar_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TSlash = "init var of TSlash";
+void INIT_ATTRIBUTES__TSlash(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TSlash_t)(val_t p0);
+val_t NEW_TSlash(void);
+static const char * const LOCATE_CHECKNEW_TSlash = "check new TSlash";
+void CHECKNEW_TSlash(val_t p0);
+typedef void (*CHECKNEW_TSlash_t)(val_t p0);
+static const char * const LOCATE_NEW_TSlash_lexer___TSlash___init_tk = "new TSlash lexer::TSlash::init_tk";
+val_t NEW_TSlash_lexer___TSlash___init_tk(val_t p0);
+typedef val_t (*NEW_TSlash_lexer___TSlash___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TSlash_parser_nodes___ANode___init = "new TSlash parser_nodes::ANode::init";
+val_t NEW_TSlash_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TSlash_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TPercent = "init var of TPercent";
+void INIT_ATTRIBUTES__TPercent(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TPercent_t)(val_t p0);
+val_t NEW_TPercent(void);
+static const char * const LOCATE_CHECKNEW_TPercent = "check new TPercent";
+void CHECKNEW_TPercent(val_t p0);
+typedef void (*CHECKNEW_TPercent_t)(val_t p0);
+static const char * const LOCATE_NEW_TPercent_lexer___TPercent___init_tk = "new TPercent lexer::TPercent::init_tk";
+val_t NEW_TPercent_lexer___TPercent___init_tk(val_t p0);
+typedef val_t (*NEW_TPercent_lexer___TPercent___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TPercent_parser_nodes___ANode___init = "new TPercent parser_nodes::ANode::init";
+val_t NEW_TPercent_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TPercent_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TEq = "init var of TEq";
+void INIT_ATTRIBUTES__TEq(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TEq_t)(val_t p0);
+val_t NEW_TEq(void);
+static const char * const LOCATE_CHECKNEW_TEq = "check new TEq";
+void CHECKNEW_TEq(val_t p0);
+typedef void (*CHECKNEW_TEq_t)(val_t p0);
+static const char * const LOCATE_NEW_TEq_lexer___TEq___init_tk = "new TEq lexer::TEq::init_tk";
+val_t NEW_TEq_lexer___TEq___init_tk(val_t p0);
+typedef val_t (*NEW_TEq_lexer___TEq___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TEq_parser_nodes___ANode___init = "new TEq parser_nodes::ANode::init";
+val_t NEW_TEq_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TEq_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TNe = "init var of TNe";
+void INIT_ATTRIBUTES__TNe(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TNe_t)(val_t p0);
+val_t NEW_TNe(void);
+static const char * const LOCATE_CHECKNEW_TNe = "check new TNe";
+void CHECKNEW_TNe(val_t p0);
+typedef void (*CHECKNEW_TNe_t)(val_t p0);
+static const char * const LOCATE_NEW_TNe_lexer___TNe___init_tk = "new TNe lexer::TNe::init_tk";
+val_t NEW_TNe_lexer___TNe___init_tk(val_t p0);
+typedef val_t (*NEW_TNe_lexer___TNe___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TNe_parser_nodes___ANode___init = "new TNe parser_nodes::ANode::init";
+val_t NEW_TNe_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TNe_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TLt = "init var of TLt";
+void INIT_ATTRIBUTES__TLt(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TLt_t)(val_t p0);
+val_t NEW_TLt(void);
+static const char * const LOCATE_CHECKNEW_TLt = "check new TLt";
+void CHECKNEW_TLt(val_t p0);
+typedef void (*CHECKNEW_TLt_t)(val_t p0);
+static const char * const LOCATE_NEW_TLt_lexer___TLt___init_tk = "new TLt lexer::TLt::init_tk";
+val_t NEW_TLt_lexer___TLt___init_tk(val_t p0);
+typedef val_t (*NEW_TLt_lexer___TLt___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TLt_parser_nodes___ANode___init = "new TLt parser_nodes::ANode::init";
+val_t NEW_TLt_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TLt_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TLe = "init var of TLe";
+void INIT_ATTRIBUTES__TLe(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TLe_t)(val_t p0);
+val_t NEW_TLe(void);
+static const char * const LOCATE_CHECKNEW_TLe = "check new TLe";
+void CHECKNEW_TLe(val_t p0);
+typedef void (*CHECKNEW_TLe_t)(val_t p0);
+static const char * const LOCATE_NEW_TLe_lexer___TLe___init_tk = "new TLe lexer::TLe::init_tk";
+val_t NEW_TLe_lexer___TLe___init_tk(val_t p0);
+typedef val_t (*NEW_TLe_lexer___TLe___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TLe_parser_nodes___ANode___init = "new TLe parser_nodes::ANode::init";
+val_t NEW_TLe_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TLe_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TLl = "init var of TLl";
+void INIT_ATTRIBUTES__TLl(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TLl_t)(val_t p0);
+val_t NEW_TLl(void);
+static const char * const LOCATE_CHECKNEW_TLl = "check new TLl";
+void CHECKNEW_TLl(val_t p0);
+typedef void (*CHECKNEW_TLl_t)(val_t p0);
+static const char * const LOCATE_NEW_TLl_lexer___TLl___init_tk = "new TLl lexer::TLl::init_tk";
+val_t NEW_TLl_lexer___TLl___init_tk(val_t p0);
+typedef val_t (*NEW_TLl_lexer___TLl___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TLl_parser_nodes___ANode___init = "new TLl parser_nodes::ANode::init";
+val_t NEW_TLl_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TLl_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TGt = "init var of TGt";
+void INIT_ATTRIBUTES__TGt(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TGt_t)(val_t p0);
+val_t NEW_TGt(void);
+static const char * const LOCATE_CHECKNEW_TGt = "check new TGt";
+void CHECKNEW_TGt(val_t p0);
+typedef void (*CHECKNEW_TGt_t)(val_t p0);
+static const char * const LOCATE_NEW_TGt_lexer___TGt___init_tk = "new TGt lexer::TGt::init_tk";
+val_t NEW_TGt_lexer___TGt___init_tk(val_t p0);
+typedef val_t (*NEW_TGt_lexer___TGt___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TGt_parser_nodes___ANode___init = "new TGt parser_nodes::ANode::init";
+val_t NEW_TGt_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TGt_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TGe = "init var of TGe";
+void INIT_ATTRIBUTES__TGe(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TGe_t)(val_t p0);
+val_t NEW_TGe(void);
+static const char * const LOCATE_CHECKNEW_TGe = "check new TGe";
+void CHECKNEW_TGe(val_t p0);
+typedef void (*CHECKNEW_TGe_t)(val_t p0);
+static const char * const LOCATE_NEW_TGe_lexer___TGe___init_tk = "new TGe lexer::TGe::init_tk";
+val_t NEW_TGe_lexer___TGe___init_tk(val_t p0);
+typedef val_t (*NEW_TGe_lexer___TGe___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TGe_parser_nodes___ANode___init = "new TGe parser_nodes::ANode::init";
+val_t NEW_TGe_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TGe_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TGg = "init var of TGg";
+void INIT_ATTRIBUTES__TGg(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TGg_t)(val_t p0);
+val_t NEW_TGg(void);
+static const char * const LOCATE_CHECKNEW_TGg = "check new TGg";
+void CHECKNEW_TGg(val_t p0);
+typedef void (*CHECKNEW_TGg_t)(val_t p0);
+static const char * const LOCATE_NEW_TGg_lexer___TGg___init_tk = "new TGg lexer::TGg::init_tk";
+val_t NEW_TGg_lexer___TGg___init_tk(val_t p0);
+typedef val_t (*NEW_TGg_lexer___TGg___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TGg_parser_nodes___ANode___init = "new TGg parser_nodes::ANode::init";
+val_t NEW_TGg_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TGg_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TStarship = "init var of TStarship";
+void INIT_ATTRIBUTES__TStarship(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TStarship_t)(val_t p0);
+val_t NEW_TStarship(void);
+static const char * const LOCATE_CHECKNEW_TStarship = "check new TStarship";
+void CHECKNEW_TStarship(val_t p0);
+typedef void (*CHECKNEW_TStarship_t)(val_t p0);
+static const char * const LOCATE_NEW_TStarship_lexer___TStarship___init_tk = "new TStarship lexer::TStarship::init_tk";
+val_t NEW_TStarship_lexer___TStarship___init_tk(val_t p0);
+typedef val_t (*NEW_TStarship_lexer___TStarship___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TStarship_parser_nodes___ANode___init = "new TStarship parser_nodes::ANode::init";
+val_t NEW_TStarship_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TStarship_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TBang = "init var of TBang";
+void INIT_ATTRIBUTES__TBang(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TBang_t)(val_t p0);
+val_t NEW_TBang(void);
+static const char * const LOCATE_CHECKNEW_TBang = "check new TBang";
+void CHECKNEW_TBang(val_t p0);
+typedef void (*CHECKNEW_TBang_t)(val_t p0);
+static const char * const LOCATE_NEW_TBang_lexer___TBang___init_tk = "new TBang lexer::TBang::init_tk";
+val_t NEW_TBang_lexer___TBang___init_tk(val_t p0);
+typedef val_t (*NEW_TBang_lexer___TBang___init_tk_t)(val_t p0);
+static const char * const LOCATE_NEW_TBang_parser_nodes___ANode___init = "new TBang parser_nodes::ANode::init";
+val_t NEW_TBang_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TBang_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TClassid = "init var of TClassid";
+void INIT_ATTRIBUTES__TClassid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TClassid_t)(val_t p0);
+val_t NEW_TClassid(void);
+static const char * const LOCATE_CHECKNEW_TClassid = "check new TClassid";
+void CHECKNEW_TClassid(val_t p0);
+typedef void (*CHECKNEW_TClassid_t)(val_t p0);
+static const char * const LOCATE_NEW_TClassid_lexer___TClassid___init_tk = "new TClassid lexer::TClassid::init_tk";
+val_t NEW_TClassid_lexer___TClassid___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TClassid_lexer___TClassid___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TClassid_parser_nodes___ANode___init = "new TClassid parser_nodes::ANode::init";
+val_t NEW_TClassid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TClassid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TId = "init var of TId";
+void INIT_ATTRIBUTES__TId(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TId_t)(val_t p0);
+val_t NEW_TId(void);
+static const char * const LOCATE_CHECKNEW_TId = "check new TId";
+void CHECKNEW_TId(val_t p0);
+typedef void (*CHECKNEW_TId_t)(val_t p0);
+static const char * const LOCATE_NEW_TId_lexer___TId___init_tk = "new TId lexer::TId::init_tk";
+val_t NEW_TId_lexer___TId___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TId_lexer___TId___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TId_parser_nodes___ANode___init = "new TId parser_nodes::ANode::init";
+val_t NEW_TId_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TId_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TAttrid = "init var of TAttrid";
+void INIT_ATTRIBUTES__TAttrid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TAttrid_t)(val_t p0);
+val_t NEW_TAttrid(void);
+static const char * const LOCATE_CHECKNEW_TAttrid = "check new TAttrid";
+void CHECKNEW_TAttrid(val_t p0);
+typedef void (*CHECKNEW_TAttrid_t)(val_t p0);
+static const char * const LOCATE_NEW_TAttrid_lexer___TAttrid___init_tk = "new TAttrid lexer::TAttrid::init_tk";
+val_t NEW_TAttrid_lexer___TAttrid___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TAttrid_lexer___TAttrid___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TAttrid_parser_nodes___ANode___init = "new TAttrid parser_nodes::ANode::init";
+val_t NEW_TAttrid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TAttrid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TNumber = "init var of TNumber";
+void INIT_ATTRIBUTES__TNumber(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TNumber_t)(val_t p0);
+val_t NEW_TNumber(void);
+static const char * const LOCATE_CHECKNEW_TNumber = "check new TNumber";
+void CHECKNEW_TNumber(val_t p0);
+typedef void (*CHECKNEW_TNumber_t)(val_t p0);
+static const char * const LOCATE_NEW_TNumber_lexer___TNumber___init_tk = "new TNumber lexer::TNumber::init_tk";
+val_t NEW_TNumber_lexer___TNumber___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TNumber_lexer___TNumber___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TNumber_parser_nodes___ANode___init = "new TNumber parser_nodes::ANode::init";
+val_t NEW_TNumber_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TNumber_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TFloat = "init var of TFloat";
+void INIT_ATTRIBUTES__TFloat(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TFloat_t)(val_t p0);
+val_t NEW_TFloat(void);
+static const char * const LOCATE_CHECKNEW_TFloat = "check new TFloat";
+void CHECKNEW_TFloat(val_t p0);
+typedef void (*CHECKNEW_TFloat_t)(val_t p0);
+static const char * const LOCATE_NEW_TFloat_lexer___TFloat___init_tk = "new TFloat lexer::TFloat::init_tk";
+val_t NEW_TFloat_lexer___TFloat___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TFloat_lexer___TFloat___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TFloat_parser_nodes___ANode___init = "new TFloat parser_nodes::ANode::init";
+val_t NEW_TFloat_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TFloat_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TChar = "init var of TChar";
+void INIT_ATTRIBUTES__TChar(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TChar_t)(val_t p0);
+val_t NEW_TChar(void);
+static const char * const LOCATE_CHECKNEW_TChar = "check new TChar";
+void CHECKNEW_TChar(val_t p0);
+typedef void (*CHECKNEW_TChar_t)(val_t p0);
+static const char * const LOCATE_NEW_TChar_lexer___TChar___init_tk = "new TChar lexer::TChar::init_tk";
+val_t NEW_TChar_lexer___TChar___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TChar_lexer___TChar___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TChar_parser_nodes___ANode___init = "new TChar parser_nodes::ANode::init";
+val_t NEW_TChar_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TChar_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TString = "init var of TString";
+void INIT_ATTRIBUTES__TString(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TString_t)(val_t p0);
+val_t NEW_TString(void);
+static const char * const LOCATE_CHECKNEW_TString = "check new TString";
+void CHECKNEW_TString(val_t p0);
+typedef void (*CHECKNEW_TString_t)(val_t p0);
+static const char * const LOCATE_NEW_TString_lexer___TString___init_tk = "new TString lexer::TString::init_tk";
+val_t NEW_TString_lexer___TString___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TString_lexer___TString___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TString_parser_nodes___ANode___init = "new TString parser_nodes::ANode::init";
+val_t NEW_TString_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TString_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TStartString = "init var of TStartString";
+void INIT_ATTRIBUTES__TStartString(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TStartString_t)(val_t p0);
+val_t NEW_TStartString(void);
+static const char * const LOCATE_CHECKNEW_TStartString = "check new TStartString";
+void CHECKNEW_TStartString(val_t p0);
+typedef void (*CHECKNEW_TStartString_t)(val_t p0);
+static const char * const LOCATE_NEW_TStartString_lexer___TStartString___init_tk = "new TStartString lexer::TStartString::init_tk";
+val_t NEW_TStartString_lexer___TStartString___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TStartString_lexer___TStartString___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TStartString_parser_nodes___ANode___init = "new TStartString parser_nodes::ANode::init";
+val_t NEW_TStartString_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TStartString_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TMidString = "init var of TMidString";
+void INIT_ATTRIBUTES__TMidString(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TMidString_t)(val_t p0);
+val_t NEW_TMidString(void);
+static const char * const LOCATE_CHECKNEW_TMidString = "check new TMidString";
+void CHECKNEW_TMidString(val_t p0);
+typedef void (*CHECKNEW_TMidString_t)(val_t p0);
+static const char * const LOCATE_NEW_TMidString_lexer___TMidString___init_tk = "new TMidString lexer::TMidString::init_tk";
+val_t NEW_TMidString_lexer___TMidString___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TMidString_lexer___TMidString___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TMidString_parser_nodes___ANode___init = "new TMidString parser_nodes::ANode::init";
+val_t NEW_TMidString_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TMidString_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TEndString = "init var of TEndString";
+void INIT_ATTRIBUTES__TEndString(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TEndString_t)(val_t p0);
+val_t NEW_TEndString(void);
+static const char * const LOCATE_CHECKNEW_TEndString = "check new TEndString";
+void CHECKNEW_TEndString(val_t p0);
+typedef void (*CHECKNEW_TEndString_t)(val_t p0);
+static const char * const LOCATE_NEW_TEndString_lexer___TEndString___init_tk = "new TEndString lexer::TEndString::init_tk";
+val_t NEW_TEndString_lexer___TEndString___init_tk(val_t p0, val_t p1);
+typedef val_t (*NEW_TEndString_lexer___TEndString___init_tk_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_TEndString_parser_nodes___ANode___init = "new TEndString parser_nodes::ANode::init";
+val_t NEW_TEndString_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_TEndString_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__EOF = "init var of EOF";
+void INIT_ATTRIBUTES__EOF(val_t p0);
+typedef void (*INIT_ATTRIBUTES__EOF_t)(val_t p0);
+val_t NEW_EOF(void);
+static const char * const LOCATE_CHECKNEW_EOF = "check new EOF";
+void CHECKNEW_EOF(val_t p0);
+typedef void (*CHECKNEW_EOF_t)(val_t p0);
+static const char * const LOCATE_NEW_EOF_lexer___EOF___init = "new EOF lexer::EOF::init";
+val_t NEW_EOF_lexer___EOF___init(val_t p0);
+typedef val_t (*NEW_EOF_lexer___EOF___init_t)(val_t p0);
+static const char * const LOCATE_NEW_EOF_parser_nodes___EOF___noinit = "new EOF parser_nodes::EOF::noinit";
+val_t NEW_EOF_parser_nodes___EOF___noinit(void);
+typedef val_t (*NEW_EOF_parser_nodes___EOF___noinit_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__AError = "init var of AError";
+void INIT_ATTRIBUTES__AError(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AError_t)(val_t p0);
+val_t NEW_AError(void);
+static const char * const LOCATE_CHECKNEW_AError = "check new AError";
+void CHECKNEW_AError(val_t p0);
+typedef void (*CHECKNEW_AError_t)(val_t p0);
+static const char * const LOCATE_NEW_AError_lexer___AError___init_error = "new AError lexer::AError::init_error";
+val_t NEW_AError_lexer___AError___init_error(val_t p0, val_t p1);
+typedef val_t (*NEW_AError_lexer___AError___init_error_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AError_parser_nodes___AError___noinit = "new AError parser_nodes::AError::noinit";
+val_t NEW_AError_parser_nodes___AError___noinit(void);
+typedef val_t (*NEW_AError_parser_nodes___AError___noinit_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__AModule = "init var of AModule";
+void INIT_ATTRIBUTES__AModule(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AModule_t)(val_t p0);
+val_t NEW_AModule(void);
+static const char * const LOCATE_CHECKNEW_AModule = "check new AModule";
+void CHECKNEW_AModule(val_t p0);
+typedef void (*CHECKNEW_AModule_t)(val_t p0);
+static const char * const LOCATE_NEW_AModule_parser_prod___AModule___empty_init = "new AModule parser_prod::AModule::empty_init";
+val_t NEW_AModule_parser_prod___AModule___empty_init(void);
+typedef val_t (*NEW_AModule_parser_prod___AModule___empty_init_t)(void);
+static const char * const LOCATE_NEW_AModule_parser_prod___AModule___init_amodule = "new AModule parser_prod::AModule::init_amodule";
+val_t NEW_AModule_parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AModule_parser_prod___AModule___init_amodule_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AModule_parser_nodes___ANode___init = "new AModule parser_nodes::ANode::init";
+val_t NEW_AModule_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AModule_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AModuledecl = "init var of AModuledecl";
+void INIT_ATTRIBUTES__AModuledecl(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AModuledecl_t)(val_t p0);
+val_t NEW_AModuledecl(void);
+static const char * const LOCATE_CHECKNEW_AModuledecl = "check new AModuledecl";
+void CHECKNEW_AModuledecl(val_t p0);
+typedef void (*CHECKNEW_AModuledecl_t)(val_t p0);
+static const char * const LOCATE_NEW_AModuledecl_parser_prod___AModuledecl___empty_init = "new AModuledecl parser_prod::AModuledecl::empty_init";
+val_t NEW_AModuledecl_parser_prod___AModuledecl___empty_init(void);
+typedef val_t (*NEW_AModuledecl_parser_prod___AModuledecl___empty_init_t)(void);
+static const char * const LOCATE_NEW_AModuledecl_parser_prod___AModuledecl___init_amoduledecl = "new AModuledecl parser_prod::AModuledecl::init_amoduledecl";
+val_t NEW_AModuledecl_parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AModuledecl_parser_prod___AModuledecl___init_amoduledecl_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AModuledecl_parser_nodes___ANode___init = "new AModuledecl parser_nodes::ANode::init";
+val_t NEW_AModuledecl_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AModuledecl_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AImport = "init var of AImport";
+void INIT_ATTRIBUTES__AImport(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AImport_t)(val_t p0);
+val_t NEW_AImport(void);
+static const char * const LOCATE_CHECKNEW_AImport = "check new AImport";
+void CHECKNEW_AImport(val_t p0);
+typedef void (*CHECKNEW_AImport_t)(val_t p0);
+static const char * const LOCATE_NEW_AImport_parser_nodes___ANode___init = "new AImport parser_nodes::ANode::init";
+val_t NEW_AImport_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AImport_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AStdImport = "init var of AStdImport";
+void INIT_ATTRIBUTES__AStdImport(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AStdImport_t)(val_t p0);
+val_t NEW_AStdImport(void);
+static const char * const LOCATE_CHECKNEW_AStdImport = "check new AStdImport";
+void CHECKNEW_AStdImport(val_t p0);
+typedef void (*CHECKNEW_AStdImport_t)(val_t p0);
+static const char * const LOCATE_NEW_AStdImport_parser_prod___AStdImport___empty_init = "new AStdImport parser_prod::AStdImport::empty_init";
+val_t NEW_AStdImport_parser_prod___AStdImport___empty_init(void);
+typedef val_t (*NEW_AStdImport_parser_prod___AStdImport___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStdImport_parser_prod___AStdImport___init_astdimport = "new AStdImport parser_prod::AStdImport::init_astdimport";
+val_t NEW_AStdImport_parser_prod___AStdImport___init_astdimport(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AStdImport_parser_prod___AStdImport___init_astdimport_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AStdImport_parser_nodes___ANode___init = "new AStdImport parser_nodes::ANode::init";
+val_t NEW_AStdImport_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AStdImport_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ANoImport = "init var of ANoImport";
+void INIT_ATTRIBUTES__ANoImport(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ANoImport_t)(val_t p0);
+val_t NEW_ANoImport(void);
+static const char * const LOCATE_CHECKNEW_ANoImport = "check new ANoImport";
+void CHECKNEW_ANoImport(val_t p0);
+typedef void (*CHECKNEW_ANoImport_t)(val_t p0);
+static const char * const LOCATE_NEW_ANoImport_parser_prod___ANoImport___empty_init = "new ANoImport parser_prod::ANoImport::empty_init";
+val_t NEW_ANoImport_parser_prod___ANoImport___empty_init(void);
+typedef val_t (*NEW_ANoImport_parser_prod___ANoImport___empty_init_t)(void);
+static const char * const LOCATE_NEW_ANoImport_parser_prod___ANoImport___init_anoimport = "new ANoImport parser_prod::ANoImport::init_anoimport";
+val_t NEW_ANoImport_parser_prod___ANoImport___init_anoimport(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ANoImport_parser_prod___ANoImport___init_anoimport_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_ANoImport_parser_nodes___ANode___init = "new ANoImport parser_nodes::ANode::init";
+val_t NEW_ANoImport_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ANoImport_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AVisibility = "init var of AVisibility";
+void INIT_ATTRIBUTES__AVisibility(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AVisibility_t)(val_t p0);
+val_t NEW_AVisibility(void);
+static const char * const LOCATE_CHECKNEW_AVisibility = "check new AVisibility";
+void CHECKNEW_AVisibility(val_t p0);
+typedef void (*CHECKNEW_AVisibility_t)(val_t p0);
+static const char * const LOCATE_NEW_AVisibility_parser_nodes___ANode___init = "new AVisibility parser_nodes::ANode::init";
+val_t NEW_AVisibility_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AVisibility_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__APublicVisibility = "init var of APublicVisibility";
+void INIT_ATTRIBUTES__APublicVisibility(val_t p0);
+typedef void (*INIT_ATTRIBUTES__APublicVisibility_t)(val_t p0);
+val_t NEW_APublicVisibility(void);
+static const char * const LOCATE_CHECKNEW_APublicVisibility = "check new APublicVisibility";
+void CHECKNEW_APublicVisibility(val_t p0);
+typedef void (*CHECKNEW_APublicVisibility_t)(val_t p0);
+static const char * const LOCATE_NEW_APublicVisibility_parser_prod___APublicVisibility___empty_init = "new APublicVisibility parser_prod::APublicVisibility::empty_init";
+val_t NEW_APublicVisibility_parser_prod___APublicVisibility___empty_init(void);
+typedef val_t (*NEW_APublicVisibility_parser_prod___APublicVisibility___empty_init_t)(void);
+static const char * const LOCATE_NEW_APublicVisibility_parser_prod___APublicVisibility___init_apublicvisibility = "new APublicVisibility parser_prod::APublicVisibility::init_apublicvisibility";
+val_t NEW_APublicVisibility_parser_prod___APublicVisibility___init_apublicvisibility(void);
+typedef val_t (*NEW_APublicVisibility_parser_prod___APublicVisibility___init_apublicvisibility_t)(void);
+static const char * const LOCATE_NEW_APublicVisibility_parser_nodes___ANode___init = "new APublicVisibility parser_nodes::ANode::init";
+val_t NEW_APublicVisibility_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_APublicVisibility_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__APrivateVisibility = "init var of APrivateVisibility";
+void INIT_ATTRIBUTES__APrivateVisibility(val_t p0);
+typedef void (*INIT_ATTRIBUTES__APrivateVisibility_t)(val_t p0);
+val_t NEW_APrivateVisibility(void);
+static const char * const LOCATE_CHECKNEW_APrivateVisibility = "check new APrivateVisibility";
+void CHECKNEW_APrivateVisibility(val_t p0);
+typedef void (*CHECKNEW_APrivateVisibility_t)(val_t p0);
+static const char * const LOCATE_NEW_APrivateVisibility_parser_prod___APrivateVisibility___empty_init = "new APrivateVisibility parser_prod::APrivateVisibility::empty_init";
+val_t NEW_APrivateVisibility_parser_prod___APrivateVisibility___empty_init(void);
+typedef val_t (*NEW_APrivateVisibility_parser_prod___APrivateVisibility___empty_init_t)(void);
+static const char * const LOCATE_NEW_APrivateVisibility_parser_prod___APrivateVisibility___init_aprivatevisibility = "new APrivateVisibility parser_prod::APrivateVisibility::init_aprivatevisibility";
+val_t NEW_APrivateVisibility_parser_prod___APrivateVisibility___init_aprivatevisibility(val_t p0);
+typedef val_t (*NEW_APrivateVisibility_parser_prod___APrivateVisibility___init_aprivatevisibility_t)(val_t p0);
+static const char * const LOCATE_NEW_APrivateVisibility_parser_nodes___ANode___init = "new APrivateVisibility parser_nodes::ANode::init";
+val_t NEW_APrivateVisibility_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_APrivateVisibility_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AProtectedVisibility = "init var of AProtectedVisibility";
+void INIT_ATTRIBUTES__AProtectedVisibility(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AProtectedVisibility_t)(val_t p0);
+val_t NEW_AProtectedVisibility(void);
+static const char * const LOCATE_CHECKNEW_AProtectedVisibility = "check new AProtectedVisibility";
+void CHECKNEW_AProtectedVisibility(val_t p0);
+typedef void (*CHECKNEW_AProtectedVisibility_t)(val_t p0);
+static const char * const LOCATE_NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___empty_init = "new AProtectedVisibility parser_prod::AProtectedVisibility::empty_init";
+val_t NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___empty_init(void);
+typedef val_t (*NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___empty_init_t)(void);
+static const char * const LOCATE_NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___init_aprotectedvisibility = "new AProtectedVisibility parser_prod::AProtectedVisibility::init_aprotectedvisibility";
+val_t NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t p0);
+typedef val_t (*NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___init_aprotectedvisibility_t)(val_t p0);
+static const char * const LOCATE_NEW_AProtectedVisibility_parser_nodes___ANode___init = "new AProtectedVisibility parser_nodes::ANode::init";
+val_t NEW_AProtectedVisibility_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AProtectedVisibility_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AIntrudeVisibility = "init var of AIntrudeVisibility";
+void INIT_ATTRIBUTES__AIntrudeVisibility(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AIntrudeVisibility_t)(val_t p0);
+val_t NEW_AIntrudeVisibility(void);
+static const char * const LOCATE_CHECKNEW_AIntrudeVisibility = "check new AIntrudeVisibility";
+void CHECKNEW_AIntrudeVisibility(val_t p0);
+typedef void (*CHECKNEW_AIntrudeVisibility_t)(val_t p0);
+static const char * const LOCATE_NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___empty_init = "new AIntrudeVisibility parser_prod::AIntrudeVisibility::empty_init";
+val_t NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___empty_init(void);
+typedef val_t (*NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___empty_init_t)(void);
+static const char * const LOCATE_NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___init_aintrudevisibility = "new AIntrudeVisibility parser_prod::AIntrudeVisibility::init_aintrudevisibility";
+val_t NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t p0);
+typedef val_t (*NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___init_aintrudevisibility_t)(val_t p0);
+static const char * const LOCATE_NEW_AIntrudeVisibility_parser_nodes___ANode___init = "new AIntrudeVisibility parser_nodes::ANode::init";
+val_t NEW_AIntrudeVisibility_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AIntrudeVisibility_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AClassdef = "init var of AClassdef";
+void INIT_ATTRIBUTES__AClassdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AClassdef_t)(val_t p0);
+val_t NEW_AClassdef(void);
+static const char * const LOCATE_CHECKNEW_AClassdef = "check new AClassdef";
+void CHECKNEW_AClassdef(val_t p0);
+typedef void (*CHECKNEW_AClassdef_t)(val_t p0);
+static const char * const LOCATE_NEW_AClassdef_parser_nodes___ANode___init = "new AClassdef parser_nodes::ANode::init";
+val_t NEW_AClassdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AClassdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AStdClassdef = "init var of AStdClassdef";
+void INIT_ATTRIBUTES__AStdClassdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AStdClassdef_t)(val_t p0);
+val_t NEW_AStdClassdef(void);
+static const char * const LOCATE_CHECKNEW_AStdClassdef = "check new AStdClassdef";
+void CHECKNEW_AStdClassdef(val_t p0);
+typedef void (*CHECKNEW_AStdClassdef_t)(val_t p0);
+static const char * const LOCATE_NEW_AStdClassdef_parser_prod___AStdClassdef___empty_init = "new AStdClassdef parser_prod::AStdClassdef::empty_init";
+val_t NEW_AStdClassdef_parser_prod___AStdClassdef___empty_init(void);
+typedef val_t (*NEW_AStdClassdef_parser_prod___AStdClassdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef = "new AStdClassdef parser_prod::AStdClassdef::init_astdclassdef";
+val_t NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7);
+typedef val_t (*NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7);
+static const char * const LOCATE_NEW_AStdClassdef_parser_nodes___ANode___init = "new AStdClassdef parser_nodes::ANode::init";
+val_t NEW_AStdClassdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AStdClassdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ATopClassdef = "init var of ATopClassdef";
+void INIT_ATTRIBUTES__ATopClassdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ATopClassdef_t)(val_t p0);
+val_t NEW_ATopClassdef(void);
+static const char * const LOCATE_CHECKNEW_ATopClassdef = "check new ATopClassdef";
+void CHECKNEW_ATopClassdef(val_t p0);
+typedef void (*CHECKNEW_ATopClassdef_t)(val_t p0);
+static const char * const LOCATE_NEW_ATopClassdef_parser_prod___ATopClassdef___empty_init = "new ATopClassdef parser_prod::ATopClassdef::empty_init";
+val_t NEW_ATopClassdef_parser_prod___ATopClassdef___empty_init(void);
+typedef val_t (*NEW_ATopClassdef_parser_prod___ATopClassdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef = "new ATopClassdef parser_prod::ATopClassdef::init_atopclassdef";
+val_t NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(val_t p0);
+typedef val_t (*NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef_t)(val_t p0);
+static const char * const LOCATE_NEW_ATopClassdef_parser_nodes___ANode___init = "new ATopClassdef parser_nodes::ANode::init";
+val_t NEW_ATopClassdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ATopClassdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AMainClassdef = "init var of AMainClassdef";
+void INIT_ATTRIBUTES__AMainClassdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AMainClassdef_t)(val_t p0);
+val_t NEW_AMainClassdef(void);
+static const char * const LOCATE_CHECKNEW_AMainClassdef = "check new AMainClassdef";
+void CHECKNEW_AMainClassdef(val_t p0);
+typedef void (*CHECKNEW_AMainClassdef_t)(val_t p0);
+static const char * const LOCATE_NEW_AMainClassdef_parser_prod___AMainClassdef___empty_init = "new AMainClassdef parser_prod::AMainClassdef::empty_init";
+val_t NEW_AMainClassdef_parser_prod___AMainClassdef___empty_init(void);
+typedef val_t (*NEW_AMainClassdef_parser_prod___AMainClassdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AMainClassdef_parser_prod___AMainClassdef___init_amainclassdef = "new AMainClassdef parser_prod::AMainClassdef::init_amainclassdef";
+val_t NEW_AMainClassdef_parser_prod___AMainClassdef___init_amainclassdef(val_t p0);
+typedef val_t (*NEW_AMainClassdef_parser_prod___AMainClassdef___init_amainclassdef_t)(val_t p0);
+static const char * const LOCATE_NEW_AMainClassdef_parser_nodes___ANode___init = "new AMainClassdef parser_nodes::ANode::init";
+val_t NEW_AMainClassdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AMainClassdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AClasskind = "init var of AClasskind";
+void INIT_ATTRIBUTES__AClasskind(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AClasskind_t)(val_t p0);
+val_t NEW_AClasskind(void);
+static const char * const LOCATE_CHECKNEW_AClasskind = "check new AClasskind";
+void CHECKNEW_AClasskind(val_t p0);
+typedef void (*CHECKNEW_AClasskind_t)(val_t p0);
+static const char * const LOCATE_NEW_AClasskind_parser_nodes___ANode___init = "new AClasskind parser_nodes::ANode::init";
+val_t NEW_AClasskind_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AClasskind_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AConcreteClasskind = "init var of AConcreteClasskind";
+void INIT_ATTRIBUTES__AConcreteClasskind(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AConcreteClasskind_t)(val_t p0);
+val_t NEW_AConcreteClasskind(void);
+static const char * const LOCATE_CHECKNEW_AConcreteClasskind = "check new AConcreteClasskind";
+void CHECKNEW_AConcreteClasskind(val_t p0);
+typedef void (*CHECKNEW_AConcreteClasskind_t)(val_t p0);
+static const char * const LOCATE_NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___empty_init = "new AConcreteClasskind parser_prod::AConcreteClasskind::empty_init";
+val_t NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___empty_init(void);
+typedef val_t (*NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___empty_init_t)(void);
+static const char * const LOCATE_NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___init_aconcreteclasskind = "new AConcreteClasskind parser_prod::AConcreteClasskind::init_aconcreteclasskind";
+val_t NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t p0);
+typedef val_t (*NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___init_aconcreteclasskind_t)(val_t p0);
+static const char * const LOCATE_NEW_AConcreteClasskind_parser_nodes___ANode___init = "new AConcreteClasskind parser_nodes::ANode::init";
+val_t NEW_AConcreteClasskind_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AConcreteClasskind_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAbstractClasskind = "init var of AAbstractClasskind";
+void INIT_ATTRIBUTES__AAbstractClasskind(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAbstractClasskind_t)(val_t p0);
+val_t NEW_AAbstractClasskind(void);
+static const char * const LOCATE_CHECKNEW_AAbstractClasskind = "check new AAbstractClasskind";
+void CHECKNEW_AAbstractClasskind(val_t p0);
+typedef void (*CHECKNEW_AAbstractClasskind_t)(val_t p0);
+static const char * const LOCATE_NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___empty_init = "new AAbstractClasskind parser_prod::AAbstractClasskind::empty_init";
+val_t NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___empty_init(void);
+typedef val_t (*NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___empty_init_t)(void);
+static const char * const LOCATE_NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___init_aabstractclasskind = "new AAbstractClasskind parser_prod::AAbstractClasskind::init_aabstractclasskind";
+val_t NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t p0, val_t p1);
+typedef val_t (*NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___init_aabstractclasskind_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AAbstractClasskind_parser_nodes___ANode___init = "new AAbstractClasskind parser_nodes::ANode::init";
+val_t NEW_AAbstractClasskind_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAbstractClasskind_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AInterfaceClasskind = "init var of AInterfaceClasskind";
+void INIT_ATTRIBUTES__AInterfaceClasskind(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AInterfaceClasskind_t)(val_t p0);
+val_t NEW_AInterfaceClasskind(void);
+static const char * const LOCATE_CHECKNEW_AInterfaceClasskind = "check new AInterfaceClasskind";
+void CHECKNEW_AInterfaceClasskind(val_t p0);
+typedef void (*CHECKNEW_AInterfaceClasskind_t)(val_t p0);
+static const char * const LOCATE_NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___empty_init = "new AInterfaceClasskind parser_prod::AInterfaceClasskind::empty_init";
+val_t NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___empty_init(void);
+typedef val_t (*NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___empty_init_t)(void);
+static const char * const LOCATE_NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind = "new AInterfaceClasskind parser_prod::AInterfaceClasskind::init_ainterfaceclasskind";
+val_t NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t p0);
+typedef val_t (*NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind_t)(val_t p0);
+static const char * const LOCATE_NEW_AInterfaceClasskind_parser_nodes___ANode___init = "new AInterfaceClasskind parser_nodes::ANode::init";
+val_t NEW_AInterfaceClasskind_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AInterfaceClasskind_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AEnumClasskind = "init var of AEnumClasskind";
+void INIT_ATTRIBUTES__AEnumClasskind(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AEnumClasskind_t)(val_t p0);
+val_t NEW_AEnumClasskind(void);
+static const char * const LOCATE_CHECKNEW_AEnumClasskind = "check new AEnumClasskind";
+void CHECKNEW_AEnumClasskind(val_t p0);
+typedef void (*CHECKNEW_AEnumClasskind_t)(val_t p0);
+static const char * const LOCATE_NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init = "new AEnumClasskind parser_prod::AEnumClasskind::empty_init";
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init(void);
+typedef val_t (*NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init_t)(void);
+static const char * const LOCATE_NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind = "new AEnumClasskind parser_prod::AEnumClasskind::init_aenumclasskind";
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0);
+typedef val_t (*NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind_t)(val_t p0);
+static const char * const LOCATE_NEW_AEnumClasskind_parser_nodes___ANode___init = "new AEnumClasskind parser_nodes::ANode::init";
+val_t NEW_AEnumClasskind_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AEnumClasskind_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AFormaldef = "init var of AFormaldef";
+void INIT_ATTRIBUTES__AFormaldef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AFormaldef_t)(val_t p0);
+val_t NEW_AFormaldef(void);
+static const char * const LOCATE_CHECKNEW_AFormaldef = "check new AFormaldef";
+void CHECKNEW_AFormaldef(val_t p0);
+typedef void (*CHECKNEW_AFormaldef_t)(val_t p0);
+static const char * const LOCATE_NEW_AFormaldef_parser_prod___AFormaldef___empty_init = "new AFormaldef parser_prod::AFormaldef::empty_init";
+val_t NEW_AFormaldef_parser_prod___AFormaldef___empty_init(void);
+typedef val_t (*NEW_AFormaldef_parser_prod___AFormaldef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef = "new AFormaldef parser_prod::AFormaldef::init_aformaldef";
+val_t NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1);
+typedef val_t (*NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AFormaldef_parser_nodes___ANode___init = "new AFormaldef parser_nodes::ANode::init";
+val_t NEW_AFormaldef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AFormaldef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ASuperclass = "init var of ASuperclass";
+void INIT_ATTRIBUTES__ASuperclass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ASuperclass_t)(val_t p0);
+val_t NEW_ASuperclass(void);
+static const char * const LOCATE_CHECKNEW_ASuperclass = "check new ASuperclass";
+void CHECKNEW_ASuperclass(val_t p0);
+typedef void (*CHECKNEW_ASuperclass_t)(val_t p0);
+static const char * const LOCATE_NEW_ASuperclass_parser_prod___ASuperclass___empty_init = "new ASuperclass parser_prod::ASuperclass::empty_init";
+val_t NEW_ASuperclass_parser_prod___ASuperclass___empty_init(void);
+typedef val_t (*NEW_ASuperclass_parser_prod___ASuperclass___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass = "new ASuperclass parser_prod::ASuperclass::init_asuperclass";
+val_t NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_ASuperclass_parser_nodes___ANode___init = "new ASuperclass parser_nodes::ANode::init";
+val_t NEW_ASuperclass_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ASuperclass_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__APropdef = "init var of APropdef";
+void INIT_ATTRIBUTES__APropdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__APropdef_t)(val_t p0);
+val_t NEW_APropdef(void);
+static const char * const LOCATE_CHECKNEW_APropdef = "check new APropdef";
+void CHECKNEW_APropdef(val_t p0);
+typedef void (*CHECKNEW_APropdef_t)(val_t p0);
+static const char * const LOCATE_NEW_APropdef_parser_nodes___ANode___init = "new APropdef parser_nodes::ANode::init";
+val_t NEW_APropdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_APropdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAttrPropdef = "init var of AAttrPropdef";
+void INIT_ATTRIBUTES__AAttrPropdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAttrPropdef_t)(val_t p0);
+val_t NEW_AAttrPropdef(void);
+static const char * const LOCATE_CHECKNEW_AAttrPropdef = "check new AAttrPropdef";
+void CHECKNEW_AAttrPropdef(val_t p0);
+typedef void (*CHECKNEW_AAttrPropdef_t)(val_t p0);
+static const char * const LOCATE_NEW_AAttrPropdef_parser_prod___AAttrPropdef___empty_init = "new AAttrPropdef parser_prod::AAttrPropdef::empty_init";
+val_t NEW_AAttrPropdef_parser_prod___AAttrPropdef___empty_init(void);
+typedef val_t (*NEW_AAttrPropdef_parser_prod___AAttrPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef = "new AAttrPropdef parser_prod::AAttrPropdef::init_aattrpropdef";
+val_t NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, val_t p9);
+typedef val_t (*NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, val_t p9);
+static const char * const LOCATE_NEW_AAttrPropdef_parser_nodes___ANode___init = "new AAttrPropdef parser_nodes::ANode::init";
+val_t NEW_AAttrPropdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAttrPropdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AMethPropdef = "init var of AMethPropdef";
+void INIT_ATTRIBUTES__AMethPropdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AMethPropdef_t)(val_t p0);
+val_t NEW_AMethPropdef(void);
+static const char * const LOCATE_CHECKNEW_AMethPropdef = "check new AMethPropdef";
+void CHECKNEW_AMethPropdef(val_t p0);
+typedef void (*CHECKNEW_AMethPropdef_t)(val_t p0);
+static const char * const LOCATE_NEW_AMethPropdef_parser_prod___AMethPropdef___empty_init = "new AMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AMethPropdef_parser_prod___AMethPropdef___empty_init(void);
+typedef val_t (*NEW_AMethPropdef_parser_prod___AMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AMethPropdef_parser_prod___AMethPropdef___init_amethpropdef = "new AMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AMethPropdef_parser_prod___AMethPropdef___init_amethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_NEW_AMethPropdef_parser_nodes___ANode___init = "new AMethPropdef parser_nodes::ANode::init";
+val_t NEW_AMethPropdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AMethPropdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ADeferredMethPropdef = "init var of ADeferredMethPropdef";
+void INIT_ATTRIBUTES__ADeferredMethPropdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ADeferredMethPropdef_t)(val_t p0);
+val_t NEW_ADeferredMethPropdef(void);
+static const char * const LOCATE_CHECKNEW_ADeferredMethPropdef = "check new ADeferredMethPropdef";
+void CHECKNEW_ADeferredMethPropdef(val_t p0);
+typedef void (*CHECKNEW_ADeferredMethPropdef_t)(val_t p0);
+static const char * const LOCATE_NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___empty_init = "new ADeferredMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___empty_init(void);
+typedef val_t (*NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___empty_init = "new ADeferredMethPropdef parser_prod::ADeferredMethPropdef::empty_init";
+val_t NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___empty_init(void);
+typedef val_t (*NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef = "new ADeferredMethPropdef parser_prod::ADeferredMethPropdef::init_adeferredmethpropdef";
+val_t NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+typedef val_t (*NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+static const char * const LOCATE_NEW_ADeferredMethPropdef_parser_nodes___ANode___init = "new ADeferredMethPropdef parser_nodes::ANode::init";
+val_t NEW_ADeferredMethPropdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ADeferredMethPropdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___init_amethpropdef = "new ADeferredMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___init_amethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_INIT_ATTRIBUTES__AInternMethPropdef = "init var of AInternMethPropdef";
+void INIT_ATTRIBUTES__AInternMethPropdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AInternMethPropdef_t)(val_t p0);
+val_t NEW_AInternMethPropdef(void);
+static const char * const LOCATE_CHECKNEW_AInternMethPropdef = "check new AInternMethPropdef";
+void CHECKNEW_AInternMethPropdef(val_t p0);
+typedef void (*CHECKNEW_AInternMethPropdef_t)(val_t p0);
+static const char * const LOCATE_NEW_AInternMethPropdef_parser_prod___AMethPropdef___empty_init = "new AInternMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AInternMethPropdef_parser_prod___AMethPropdef___empty_init(void);
+typedef val_t (*NEW_AInternMethPropdef_parser_prod___AMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___empty_init = "new AInternMethPropdef parser_prod::AInternMethPropdef::empty_init";
+val_t NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___empty_init(void);
+typedef val_t (*NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef = "new AInternMethPropdef parser_prod::AInternMethPropdef::init_ainternmethpropdef";
+val_t NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+typedef val_t (*NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+static const char * const LOCATE_NEW_AInternMethPropdef_parser_nodes___ANode___init = "new AInternMethPropdef parser_nodes::ANode::init";
+val_t NEW_AInternMethPropdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AInternMethPropdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AInternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef = "new AInternMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AInternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AInternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_INIT_ATTRIBUTES__AExternMethPropdef = "init var of AExternMethPropdef";
+void INIT_ATTRIBUTES__AExternMethPropdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AExternMethPropdef_t)(val_t p0);
+val_t NEW_AExternMethPropdef(void);
+static const char * const LOCATE_CHECKNEW_AExternMethPropdef = "check new AExternMethPropdef";
+void CHECKNEW_AExternMethPropdef(val_t p0);
+typedef void (*CHECKNEW_AExternMethPropdef_t)(val_t p0);
+static const char * const LOCATE_NEW_AExternMethPropdef_parser_prod___AMethPropdef___empty_init = "new AExternMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AExternMethPropdef_parser_prod___AMethPropdef___empty_init(void);
+typedef val_t (*NEW_AExternMethPropdef_parser_prod___AMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___empty_init = "new AExternMethPropdef parser_prod::AExternMethPropdef::empty_init";
+val_t NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___empty_init(void);
+typedef val_t (*NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef = "new AExternMethPropdef parser_prod::AExternMethPropdef::init_aexternmethpropdef";
+val_t NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+typedef val_t (*NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+static const char * const LOCATE_NEW_AExternMethPropdef_parser_nodes___ANode___init = "new AExternMethPropdef parser_nodes::ANode::init";
+val_t NEW_AExternMethPropdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AExternMethPropdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AExternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef = "new AExternMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AExternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AExternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_INIT_ATTRIBUTES__AConcreteMethPropdef = "init var of AConcreteMethPropdef";
+void INIT_ATTRIBUTES__AConcreteMethPropdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AConcreteMethPropdef_t)(val_t p0);
+val_t NEW_AConcreteMethPropdef(void);
+static const char * const LOCATE_CHECKNEW_AConcreteMethPropdef = "check new AConcreteMethPropdef";
+void CHECKNEW_AConcreteMethPropdef(val_t p0);
+typedef void (*CHECKNEW_AConcreteMethPropdef_t)(val_t p0);
+static const char * const LOCATE_NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___empty_init = "new AConcreteMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___empty_init(void);
+typedef val_t (*NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___empty_init = "new AConcreteMethPropdef parser_prod::AConcreteMethPropdef::empty_init";
+val_t NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___empty_init(void);
+typedef val_t (*NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef = "new AConcreteMethPropdef parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef";
+val_t NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+typedef val_t (*NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+static const char * const LOCATE_NEW_AConcreteMethPropdef_parser_nodes___ANode___init = "new AConcreteMethPropdef parser_nodes::ANode::init";
+val_t NEW_AConcreteMethPropdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AConcreteMethPropdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___init_amethpropdef = "new AConcreteMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___init_amethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_INIT_ATTRIBUTES__AConcreteInitPropdef = "init var of AConcreteInitPropdef";
+void INIT_ATTRIBUTES__AConcreteInitPropdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AConcreteInitPropdef_t)(val_t p0);
+val_t NEW_AConcreteInitPropdef(void);
+static const char * const LOCATE_CHECKNEW_AConcreteInitPropdef = "check new AConcreteInitPropdef";
+void CHECKNEW_AConcreteInitPropdef(val_t p0);
+typedef void (*CHECKNEW_AConcreteInitPropdef_t)(val_t p0);
+static const char * const LOCATE_NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___empty_init = "new AConcreteInitPropdef parser_prod::AConcreteMethPropdef::empty_init";
+val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___empty_init(void);
+typedef val_t (*NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___empty_init = "new AConcreteInitPropdef parser_prod::AConcreteInitPropdef::empty_init";
+val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___empty_init(void);
+typedef val_t (*NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef = "new AConcreteInitPropdef parser_prod::AConcreteInitPropdef::init_aconcreteinitpropdef";
+val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+typedef val_t (*NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+static const char * const LOCATE_NEW_AConcreteInitPropdef_parser_nodes___ANode___init = "new AConcreteInitPropdef parser_nodes::ANode::init";
+val_t NEW_AConcreteInitPropdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AConcreteInitPropdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___empty_init = "new AConcreteInitPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___empty_init(void);
+typedef val_t (*NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef = "new AConcreteInitPropdef parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef";
+val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+typedef val_t (*NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+static const char * const LOCATE_NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___init_amethpropdef = "new AConcreteInitPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___init_amethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_INIT_ATTRIBUTES__AMainMethPropdef = "init var of AMainMethPropdef";
+void INIT_ATTRIBUTES__AMainMethPropdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AMainMethPropdef_t)(val_t p0);
+val_t NEW_AMainMethPropdef(void);
+static const char * const LOCATE_CHECKNEW_AMainMethPropdef = "check new AMainMethPropdef";
+void CHECKNEW_AMainMethPropdef(val_t p0);
+typedef void (*CHECKNEW_AMainMethPropdef_t)(val_t p0);
+static const char * const LOCATE_NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___empty_init = "new AMainMethPropdef parser_prod::AConcreteMethPropdef::empty_init";
+val_t NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___empty_init(void);
+typedef val_t (*NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___empty_init = "new AMainMethPropdef parser_prod::AMainMethPropdef::empty_init";
+val_t NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___empty_init(void);
+typedef val_t (*NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef = "new AMainMethPropdef parser_prod::AMainMethPropdef::init_amainmethpropdef";
+val_t NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t p0, val_t p1);
+typedef val_t (*NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AMainMethPropdef_parser_nodes___ANode___init = "new AMainMethPropdef parser_nodes::ANode::init";
+val_t NEW_AMainMethPropdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AMainMethPropdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AMainMethPropdef_parser_prod___AMethPropdef___empty_init = "new AMainMethPropdef parser_prod::AMethPropdef::empty_init";
+val_t NEW_AMainMethPropdef_parser_prod___AMethPropdef___empty_init(void);
+typedef val_t (*NEW_AMainMethPropdef_parser_prod___AMethPropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef = "new AMainMethPropdef parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef";
+val_t NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+typedef val_t (*NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6);
+static const char * const LOCATE_NEW_AMainMethPropdef_parser_prod___AMethPropdef___init_amethpropdef = "new AMainMethPropdef parser_prod::AMethPropdef::init_amethpropdef";
+val_t NEW_AMainMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AMainMethPropdef_parser_prod___AMethPropdef___init_amethpropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_INIT_ATTRIBUTES__ATypePropdef = "init var of ATypePropdef";
+void INIT_ATTRIBUTES__ATypePropdef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ATypePropdef_t)(val_t p0);
+val_t NEW_ATypePropdef(void);
+static const char * const LOCATE_CHECKNEW_ATypePropdef = "check new ATypePropdef";
+void CHECKNEW_ATypePropdef(val_t p0);
+typedef void (*CHECKNEW_ATypePropdef_t)(val_t p0);
+static const char * const LOCATE_NEW_ATypePropdef_parser_prod___ATypePropdef___empty_init = "new ATypePropdef parser_prod::ATypePropdef::empty_init";
+val_t NEW_ATypePropdef_parser_prod___ATypePropdef___empty_init(void);
+typedef val_t (*NEW_ATypePropdef_parser_prod___ATypePropdef___empty_init_t)(void);
+static const char * const LOCATE_NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef = "new ATypePropdef parser_prod::ATypePropdef::init_atypepropdef";
+val_t NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+typedef val_t (*NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+static const char * const LOCATE_NEW_ATypePropdef_parser_nodes___ANode___init = "new ATypePropdef parser_nodes::ANode::init";
+val_t NEW_ATypePropdef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ATypePropdef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAble = "init var of AAble";
+void INIT_ATTRIBUTES__AAble(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAble_t)(val_t p0);
+val_t NEW_AAble(void);
+static const char * const LOCATE_CHECKNEW_AAble = "check new AAble";
+void CHECKNEW_AAble(val_t p0);
+typedef void (*CHECKNEW_AAble_t)(val_t p0);
+static const char * const LOCATE_NEW_AAble_parser_nodes___ANode___init = "new AAble parser_nodes::ANode::init";
+val_t NEW_AAble_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAble_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AReadAble = "init var of AReadAble";
+void INIT_ATTRIBUTES__AReadAble(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AReadAble_t)(val_t p0);
+val_t NEW_AReadAble(void);
+static const char * const LOCATE_CHECKNEW_AReadAble = "check new AReadAble";
+void CHECKNEW_AReadAble(val_t p0);
+typedef void (*CHECKNEW_AReadAble_t)(val_t p0);
+static const char * const LOCATE_NEW_AReadAble_parser_prod___AReadAble___empty_init = "new AReadAble parser_prod::AReadAble::empty_init";
+val_t NEW_AReadAble_parser_prod___AReadAble___empty_init(void);
+typedef val_t (*NEW_AReadAble_parser_prod___AReadAble___empty_init_t)(void);
+static const char * const LOCATE_NEW_AReadAble_parser_prod___AReadAble___init_areadable = "new AReadAble parser_prod::AReadAble::init_areadable";
+val_t NEW_AReadAble_parser_prod___AReadAble___init_areadable(val_t p0, val_t p1);
+typedef val_t (*NEW_AReadAble_parser_prod___AReadAble___init_areadable_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AReadAble_parser_nodes___ANode___init = "new AReadAble parser_nodes::ANode::init";
+val_t NEW_AReadAble_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AReadAble_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AWriteAble = "init var of AWriteAble";
+void INIT_ATTRIBUTES__AWriteAble(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AWriteAble_t)(val_t p0);
+val_t NEW_AWriteAble(void);
+static const char * const LOCATE_CHECKNEW_AWriteAble = "check new AWriteAble";
+void CHECKNEW_AWriteAble(val_t p0);
+typedef void (*CHECKNEW_AWriteAble_t)(val_t p0);
+static const char * const LOCATE_NEW_AWriteAble_parser_prod___AWriteAble___empty_init = "new AWriteAble parser_prod::AWriteAble::empty_init";
+val_t NEW_AWriteAble_parser_prod___AWriteAble___empty_init(void);
+typedef val_t (*NEW_AWriteAble_parser_prod___AWriteAble___empty_init_t)(void);
+static const char * const LOCATE_NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable = "new AWriteAble parser_prod::AWriteAble::init_awriteable";
+val_t NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AWriteAble_parser_nodes___ANode___init = "new AWriteAble parser_nodes::ANode::init";
+val_t NEW_AWriteAble_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AWriteAble_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AMethid = "init var of AMethid";
+void INIT_ATTRIBUTES__AMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AMethid_t)(val_t p0);
+val_t NEW_AMethid(void);
+static const char * const LOCATE_CHECKNEW_AMethid = "check new AMethid";
+void CHECKNEW_AMethid(val_t p0);
+typedef void (*CHECKNEW_AMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AMethid_parser_nodes___ANode___init = "new AMethid parser_nodes::ANode::init";
+val_t NEW_AMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AIdMethid = "init var of AIdMethid";
+void INIT_ATTRIBUTES__AIdMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AIdMethid_t)(val_t p0);
+val_t NEW_AIdMethid(void);
+static const char * const LOCATE_CHECKNEW_AIdMethid = "check new AIdMethid";
+void CHECKNEW_AIdMethid(val_t p0);
+typedef void (*CHECKNEW_AIdMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AIdMethid_parser_prod___AIdMethid___empty_init = "new AIdMethid parser_prod::AIdMethid::empty_init";
+val_t NEW_AIdMethid_parser_prod___AIdMethid___empty_init(void);
+typedef val_t (*NEW_AIdMethid_parser_prod___AIdMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_AIdMethid_parser_prod___AIdMethid___init_aidmethid = "new AIdMethid parser_prod::AIdMethid::init_aidmethid";
+val_t NEW_AIdMethid_parser_prod___AIdMethid___init_aidmethid(val_t p0);
+typedef val_t (*NEW_AIdMethid_parser_prod___AIdMethid___init_aidmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AIdMethid_parser_nodes___ANode___init = "new AIdMethid parser_nodes::ANode::init";
+val_t NEW_AIdMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AIdMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__APlusMethid = "init var of APlusMethid";
+void INIT_ATTRIBUTES__APlusMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__APlusMethid_t)(val_t p0);
+val_t NEW_APlusMethid(void);
+static const char * const LOCATE_CHECKNEW_APlusMethid = "check new APlusMethid";
+void CHECKNEW_APlusMethid(val_t p0);
+typedef void (*CHECKNEW_APlusMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_APlusMethid_parser_prod___APlusMethid___empty_init = "new APlusMethid parser_prod::APlusMethid::empty_init";
+val_t NEW_APlusMethid_parser_prod___APlusMethid___empty_init(void);
+typedef val_t (*NEW_APlusMethid_parser_prod___APlusMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_APlusMethid_parser_prod___APlusMethid___init_aplusmethid = "new APlusMethid parser_prod::APlusMethid::init_aplusmethid";
+val_t NEW_APlusMethid_parser_prod___APlusMethid___init_aplusmethid(val_t p0);
+typedef val_t (*NEW_APlusMethid_parser_prod___APlusMethid___init_aplusmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_APlusMethid_parser_nodes___ANode___init = "new APlusMethid parser_nodes::ANode::init";
+val_t NEW_APlusMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_APlusMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AMinusMethid = "init var of AMinusMethid";
+void INIT_ATTRIBUTES__AMinusMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AMinusMethid_t)(val_t p0);
+val_t NEW_AMinusMethid(void);
+static const char * const LOCATE_CHECKNEW_AMinusMethid = "check new AMinusMethid";
+void CHECKNEW_AMinusMethid(val_t p0);
+typedef void (*CHECKNEW_AMinusMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AMinusMethid_parser_prod___AMinusMethid___empty_init = "new AMinusMethid parser_prod::AMinusMethid::empty_init";
+val_t NEW_AMinusMethid_parser_prod___AMinusMethid___empty_init(void);
+typedef val_t (*NEW_AMinusMethid_parser_prod___AMinusMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_AMinusMethid_parser_prod___AMinusMethid___init_aminusmethid = "new AMinusMethid parser_prod::AMinusMethid::init_aminusmethid";
+val_t NEW_AMinusMethid_parser_prod___AMinusMethid___init_aminusmethid(val_t p0);
+typedef val_t (*NEW_AMinusMethid_parser_prod___AMinusMethid___init_aminusmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AMinusMethid_parser_nodes___ANode___init = "new AMinusMethid parser_nodes::ANode::init";
+val_t NEW_AMinusMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AMinusMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AStarMethid = "init var of AStarMethid";
+void INIT_ATTRIBUTES__AStarMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AStarMethid_t)(val_t p0);
+val_t NEW_AStarMethid(void);
+static const char * const LOCATE_CHECKNEW_AStarMethid = "check new AStarMethid";
+void CHECKNEW_AStarMethid(val_t p0);
+typedef void (*CHECKNEW_AStarMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AStarMethid_parser_prod___AStarMethid___empty_init = "new AStarMethid parser_prod::AStarMethid::empty_init";
+val_t NEW_AStarMethid_parser_prod___AStarMethid___empty_init(void);
+typedef val_t (*NEW_AStarMethid_parser_prod___AStarMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStarMethid_parser_prod___AStarMethid___init_astarmethid = "new AStarMethid parser_prod::AStarMethid::init_astarmethid";
+val_t NEW_AStarMethid_parser_prod___AStarMethid___init_astarmethid(val_t p0);
+typedef val_t (*NEW_AStarMethid_parser_prod___AStarMethid___init_astarmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AStarMethid_parser_nodes___ANode___init = "new AStarMethid parser_nodes::ANode::init";
+val_t NEW_AStarMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AStarMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ASlashMethid = "init var of ASlashMethid";
+void INIT_ATTRIBUTES__ASlashMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ASlashMethid_t)(val_t p0);
+val_t NEW_ASlashMethid(void);
+static const char * const LOCATE_CHECKNEW_ASlashMethid = "check new ASlashMethid";
+void CHECKNEW_ASlashMethid(val_t p0);
+typedef void (*CHECKNEW_ASlashMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ASlashMethid_parser_prod___ASlashMethid___empty_init = "new ASlashMethid parser_prod::ASlashMethid::empty_init";
+val_t NEW_ASlashMethid_parser_prod___ASlashMethid___empty_init(void);
+typedef val_t (*NEW_ASlashMethid_parser_prod___ASlashMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASlashMethid_parser_prod___ASlashMethid___init_aslashmethid = "new ASlashMethid parser_prod::ASlashMethid::init_aslashmethid";
+val_t NEW_ASlashMethid_parser_prod___ASlashMethid___init_aslashmethid(val_t p0);
+typedef val_t (*NEW_ASlashMethid_parser_prod___ASlashMethid___init_aslashmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ASlashMethid_parser_nodes___ANode___init = "new ASlashMethid parser_nodes::ANode::init";
+val_t NEW_ASlashMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ASlashMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__APercentMethid = "init var of APercentMethid";
+void INIT_ATTRIBUTES__APercentMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__APercentMethid_t)(val_t p0);
+val_t NEW_APercentMethid(void);
+static const char * const LOCATE_CHECKNEW_APercentMethid = "check new APercentMethid";
+void CHECKNEW_APercentMethid(val_t p0);
+typedef void (*CHECKNEW_APercentMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_APercentMethid_parser_prod___APercentMethid___empty_init = "new APercentMethid parser_prod::APercentMethid::empty_init";
+val_t NEW_APercentMethid_parser_prod___APercentMethid___empty_init(void);
+typedef val_t (*NEW_APercentMethid_parser_prod___APercentMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_APercentMethid_parser_prod___APercentMethid___init_apercentmethid = "new APercentMethid parser_prod::APercentMethid::init_apercentmethid";
+val_t NEW_APercentMethid_parser_prod___APercentMethid___init_apercentmethid(val_t p0);
+typedef val_t (*NEW_APercentMethid_parser_prod___APercentMethid___init_apercentmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_APercentMethid_parser_nodes___ANode___init = "new APercentMethid parser_nodes::ANode::init";
+val_t NEW_APercentMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_APercentMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AEqMethid = "init var of AEqMethid";
+void INIT_ATTRIBUTES__AEqMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AEqMethid_t)(val_t p0);
+val_t NEW_AEqMethid(void);
+static const char * const LOCATE_CHECKNEW_AEqMethid = "check new AEqMethid";
+void CHECKNEW_AEqMethid(val_t p0);
+typedef void (*CHECKNEW_AEqMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AEqMethid_parser_prod___AEqMethid___empty_init = "new AEqMethid parser_prod::AEqMethid::empty_init";
+val_t NEW_AEqMethid_parser_prod___AEqMethid___empty_init(void);
+typedef val_t (*NEW_AEqMethid_parser_prod___AEqMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_AEqMethid_parser_prod___AEqMethid___init_aeqmethid = "new AEqMethid parser_prod::AEqMethid::init_aeqmethid";
+val_t NEW_AEqMethid_parser_prod___AEqMethid___init_aeqmethid(val_t p0);
+typedef val_t (*NEW_AEqMethid_parser_prod___AEqMethid___init_aeqmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AEqMethid_parser_nodes___ANode___init = "new AEqMethid parser_nodes::ANode::init";
+val_t NEW_AEqMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AEqMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ANeMethid = "init var of ANeMethid";
+void INIT_ATTRIBUTES__ANeMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ANeMethid_t)(val_t p0);
+val_t NEW_ANeMethid(void);
+static const char * const LOCATE_CHECKNEW_ANeMethid = "check new ANeMethid";
+void CHECKNEW_ANeMethid(val_t p0);
+typedef void (*CHECKNEW_ANeMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ANeMethid_parser_prod___ANeMethid___empty_init = "new ANeMethid parser_prod::ANeMethid::empty_init";
+val_t NEW_ANeMethid_parser_prod___ANeMethid___empty_init(void);
+typedef val_t (*NEW_ANeMethid_parser_prod___ANeMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_ANeMethid_parser_prod___ANeMethid___init_anemethid = "new ANeMethid parser_prod::ANeMethid::init_anemethid";
+val_t NEW_ANeMethid_parser_prod___ANeMethid___init_anemethid(val_t p0);
+typedef val_t (*NEW_ANeMethid_parser_prod___ANeMethid___init_anemethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ANeMethid_parser_nodes___ANode___init = "new ANeMethid parser_nodes::ANode::init";
+val_t NEW_ANeMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ANeMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ALeMethid = "init var of ALeMethid";
+void INIT_ATTRIBUTES__ALeMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ALeMethid_t)(val_t p0);
+val_t NEW_ALeMethid(void);
+static const char * const LOCATE_CHECKNEW_ALeMethid = "check new ALeMethid";
+void CHECKNEW_ALeMethid(val_t p0);
+typedef void (*CHECKNEW_ALeMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ALeMethid_parser_prod___ALeMethid___empty_init = "new ALeMethid parser_prod::ALeMethid::empty_init";
+val_t NEW_ALeMethid_parser_prod___ALeMethid___empty_init(void);
+typedef val_t (*NEW_ALeMethid_parser_prod___ALeMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALeMethid_parser_prod___ALeMethid___init_alemethid = "new ALeMethid parser_prod::ALeMethid::init_alemethid";
+val_t NEW_ALeMethid_parser_prod___ALeMethid___init_alemethid(val_t p0);
+typedef val_t (*NEW_ALeMethid_parser_prod___ALeMethid___init_alemethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ALeMethid_parser_nodes___ANode___init = "new ALeMethid parser_nodes::ANode::init";
+val_t NEW_ALeMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ALeMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AGeMethid = "init var of AGeMethid";
+void INIT_ATTRIBUTES__AGeMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AGeMethid_t)(val_t p0);
+val_t NEW_AGeMethid(void);
+static const char * const LOCATE_CHECKNEW_AGeMethid = "check new AGeMethid";
+void CHECKNEW_AGeMethid(val_t p0);
+typedef void (*CHECKNEW_AGeMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AGeMethid_parser_prod___AGeMethid___empty_init = "new AGeMethid parser_prod::AGeMethid::empty_init";
+val_t NEW_AGeMethid_parser_prod___AGeMethid___empty_init(void);
+typedef val_t (*NEW_AGeMethid_parser_prod___AGeMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGeMethid_parser_prod___AGeMethid___init_agemethid = "new AGeMethid parser_prod::AGeMethid::init_agemethid";
+val_t NEW_AGeMethid_parser_prod___AGeMethid___init_agemethid(val_t p0);
+typedef val_t (*NEW_AGeMethid_parser_prod___AGeMethid___init_agemethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AGeMethid_parser_nodes___ANode___init = "new AGeMethid parser_nodes::ANode::init";
+val_t NEW_AGeMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AGeMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ALtMethid = "init var of ALtMethid";
+void INIT_ATTRIBUTES__ALtMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ALtMethid_t)(val_t p0);
+val_t NEW_ALtMethid(void);
+static const char * const LOCATE_CHECKNEW_ALtMethid = "check new ALtMethid";
+void CHECKNEW_ALtMethid(val_t p0);
+typedef void (*CHECKNEW_ALtMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ALtMethid_parser_prod___ALtMethid___empty_init = "new ALtMethid parser_prod::ALtMethid::empty_init";
+val_t NEW_ALtMethid_parser_prod___ALtMethid___empty_init(void);
+typedef val_t (*NEW_ALtMethid_parser_prod___ALtMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALtMethid_parser_prod___ALtMethid___init_altmethid = "new ALtMethid parser_prod::ALtMethid::init_altmethid";
+val_t NEW_ALtMethid_parser_prod___ALtMethid___init_altmethid(val_t p0);
+typedef val_t (*NEW_ALtMethid_parser_prod___ALtMethid___init_altmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ALtMethid_parser_nodes___ANode___init = "new ALtMethid parser_nodes::ANode::init";
+val_t NEW_ALtMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ALtMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AGtMethid = "init var of AGtMethid";
+void INIT_ATTRIBUTES__AGtMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AGtMethid_t)(val_t p0);
+val_t NEW_AGtMethid(void);
+static const char * const LOCATE_CHECKNEW_AGtMethid = "check new AGtMethid";
+void CHECKNEW_AGtMethid(val_t p0);
+typedef void (*CHECKNEW_AGtMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AGtMethid_parser_prod___AGtMethid___empty_init = "new AGtMethid parser_prod::AGtMethid::empty_init";
+val_t NEW_AGtMethid_parser_prod___AGtMethid___empty_init(void);
+typedef val_t (*NEW_AGtMethid_parser_prod___AGtMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGtMethid_parser_prod___AGtMethid___init_agtmethid = "new AGtMethid parser_prod::AGtMethid::init_agtmethid";
+val_t NEW_AGtMethid_parser_prod___AGtMethid___init_agtmethid(val_t p0);
+typedef val_t (*NEW_AGtMethid_parser_prod___AGtMethid___init_agtmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AGtMethid_parser_nodes___ANode___init = "new AGtMethid parser_nodes::ANode::init";
+val_t NEW_AGtMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AGtMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ALlMethid = "init var of ALlMethid";
+void INIT_ATTRIBUTES__ALlMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ALlMethid_t)(val_t p0);
+val_t NEW_ALlMethid(void);
+static const char * const LOCATE_CHECKNEW_ALlMethid = "check new ALlMethid";
+void CHECKNEW_ALlMethid(val_t p0);
+typedef void (*CHECKNEW_ALlMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ALlMethid_parser_prod___ALlMethid___empty_init = "new ALlMethid parser_prod::ALlMethid::empty_init";
+val_t NEW_ALlMethid_parser_prod___ALlMethid___empty_init(void);
+typedef val_t (*NEW_ALlMethid_parser_prod___ALlMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALlMethid_parser_prod___ALlMethid___init_allmethid = "new ALlMethid parser_prod::ALlMethid::init_allmethid";
+val_t NEW_ALlMethid_parser_prod___ALlMethid___init_allmethid(val_t p0);
+typedef val_t (*NEW_ALlMethid_parser_prod___ALlMethid___init_allmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ALlMethid_parser_nodes___ANode___init = "new ALlMethid parser_nodes::ANode::init";
+val_t NEW_ALlMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ALlMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AGgMethid = "init var of AGgMethid";
+void INIT_ATTRIBUTES__AGgMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AGgMethid_t)(val_t p0);
+val_t NEW_AGgMethid(void);
+static const char * const LOCATE_CHECKNEW_AGgMethid = "check new AGgMethid";
+void CHECKNEW_AGgMethid(val_t p0);
+typedef void (*CHECKNEW_AGgMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AGgMethid_parser_prod___AGgMethid___empty_init = "new AGgMethid parser_prod::AGgMethid::empty_init";
+val_t NEW_AGgMethid_parser_prod___AGgMethid___empty_init(void);
+typedef val_t (*NEW_AGgMethid_parser_prod___AGgMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGgMethid_parser_prod___AGgMethid___init_aggmethid = "new AGgMethid parser_prod::AGgMethid::init_aggmethid";
+val_t NEW_AGgMethid_parser_prod___AGgMethid___init_aggmethid(val_t p0);
+typedef val_t (*NEW_AGgMethid_parser_prod___AGgMethid___init_aggmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AGgMethid_parser_nodes___ANode___init = "new AGgMethid parser_nodes::ANode::init";
+val_t NEW_AGgMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AGgMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ABraMethid = "init var of ABraMethid";
+void INIT_ATTRIBUTES__ABraMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ABraMethid_t)(val_t p0);
+val_t NEW_ABraMethid(void);
+static const char * const LOCATE_CHECKNEW_ABraMethid = "check new ABraMethid";
+void CHECKNEW_ABraMethid(val_t p0);
+typedef void (*CHECKNEW_ABraMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ABraMethid_parser_prod___ABraMethid___empty_init = "new ABraMethid parser_prod::ABraMethid::empty_init";
+val_t NEW_ABraMethid_parser_prod___ABraMethid___empty_init(void);
+typedef val_t (*NEW_ABraMethid_parser_prod___ABraMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABraMethid_parser_prod___ABraMethid___init_abramethid = "new ABraMethid parser_prod::ABraMethid::init_abramethid";
+val_t NEW_ABraMethid_parser_prod___ABraMethid___init_abramethid(val_t p0, val_t p1);
+typedef val_t (*NEW_ABraMethid_parser_prod___ABraMethid___init_abramethid_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ABraMethid_parser_nodes___ANode___init = "new ABraMethid parser_nodes::ANode::init";
+val_t NEW_ABraMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ABraMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AStarshipMethid = "init var of AStarshipMethid";
+void INIT_ATTRIBUTES__AStarshipMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AStarshipMethid_t)(val_t p0);
+val_t NEW_AStarshipMethid(void);
+static const char * const LOCATE_CHECKNEW_AStarshipMethid = "check new AStarshipMethid";
+void CHECKNEW_AStarshipMethid(val_t p0);
+typedef void (*CHECKNEW_AStarshipMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AStarshipMethid_parser_prod___AStarshipMethid___empty_init = "new AStarshipMethid parser_prod::AStarshipMethid::empty_init";
+val_t NEW_AStarshipMethid_parser_prod___AStarshipMethid___empty_init(void);
+typedef val_t (*NEW_AStarshipMethid_parser_prod___AStarshipMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStarshipMethid_parser_prod___AStarshipMethid___init_astarshipmethid = "new AStarshipMethid parser_prod::AStarshipMethid::init_astarshipmethid";
+val_t NEW_AStarshipMethid_parser_prod___AStarshipMethid___init_astarshipmethid(val_t p0);
+typedef val_t (*NEW_AStarshipMethid_parser_prod___AStarshipMethid___init_astarshipmethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AStarshipMethid_parser_nodes___ANode___init = "new AStarshipMethid parser_nodes::ANode::init";
+val_t NEW_AStarshipMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AStarshipMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAssignMethid = "init var of AAssignMethid";
+void INIT_ATTRIBUTES__AAssignMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAssignMethid_t)(val_t p0);
+val_t NEW_AAssignMethid(void);
+static const char * const LOCATE_CHECKNEW_AAssignMethid = "check new AAssignMethid";
+void CHECKNEW_AAssignMethid(val_t p0);
+typedef void (*CHECKNEW_AAssignMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_AAssignMethid_parser_prod___AAssignMethid___empty_init = "new AAssignMethid parser_prod::AAssignMethid::empty_init";
+val_t NEW_AAssignMethid_parser_prod___AAssignMethid___empty_init(void);
+typedef val_t (*NEW_AAssignMethid_parser_prod___AAssignMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_AAssignMethid_parser_prod___AAssignMethid___init_aassignmethid = "new AAssignMethid parser_prod::AAssignMethid::init_aassignmethid";
+val_t NEW_AAssignMethid_parser_prod___AAssignMethid___init_aassignmethid(val_t p0, val_t p1);
+typedef val_t (*NEW_AAssignMethid_parser_prod___AAssignMethid___init_aassignmethid_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AAssignMethid_parser_nodes___ANode___init = "new AAssignMethid parser_nodes::ANode::init";
+val_t NEW_AAssignMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAssignMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ABraassignMethid = "init var of ABraassignMethid";
+void INIT_ATTRIBUTES__ABraassignMethid(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ABraassignMethid_t)(val_t p0);
+val_t NEW_ABraassignMethid(void);
+static const char * const LOCATE_CHECKNEW_ABraassignMethid = "check new ABraassignMethid";
+void CHECKNEW_ABraassignMethid(val_t p0);
+typedef void (*CHECKNEW_ABraassignMethid_t)(val_t p0);
+static const char * const LOCATE_NEW_ABraassignMethid_parser_prod___ABraassignMethid___empty_init = "new ABraassignMethid parser_prod::ABraassignMethid::empty_init";
+val_t NEW_ABraassignMethid_parser_prod___ABraassignMethid___empty_init(void);
+typedef val_t (*NEW_ABraassignMethid_parser_prod___ABraassignMethid___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABraassignMethid_parser_prod___ABraassignMethid___init_abraassignmethid = "new ABraassignMethid parser_prod::ABraassignMethid::init_abraassignmethid";
+val_t NEW_ABraassignMethid_parser_prod___ABraassignMethid___init_abraassignmethid(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ABraassignMethid_parser_prod___ABraassignMethid___init_abraassignmethid_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_ABraassignMethid_parser_nodes___ANode___init = "new ABraassignMethid parser_nodes::ANode::init";
+val_t NEW_ABraassignMethid_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ABraassignMethid_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ASignature = "init var of ASignature";
+void INIT_ATTRIBUTES__ASignature(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ASignature_t)(val_t p0);
+val_t NEW_ASignature(void);
+static const char * const LOCATE_CHECKNEW_ASignature = "check new ASignature";
+void CHECKNEW_ASignature(val_t p0);
+typedef void (*CHECKNEW_ASignature_t)(val_t p0);
+static const char * const LOCATE_NEW_ASignature_parser_prod___ASignature___empty_init = "new ASignature parser_prod::ASignature::empty_init";
+val_t NEW_ASignature_parser_prod___ASignature___empty_init(void);
+typedef val_t (*NEW_ASignature_parser_prod___ASignature___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASignature_parser_prod___ASignature___init_asignature = "new ASignature parser_prod::ASignature::init_asignature";
+val_t NEW_ASignature_parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ASignature_parser_prod___ASignature___init_asignature_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_ASignature_parser_nodes___ANode___init = "new ASignature parser_nodes::ANode::init";
+val_t NEW_ASignature_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ASignature_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AParam = "init var of AParam";
+void INIT_ATTRIBUTES__AParam(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AParam_t)(val_t p0);
+val_t NEW_AParam(void);
+static const char * const LOCATE_CHECKNEW_AParam = "check new AParam";
+void CHECKNEW_AParam(val_t p0);
+typedef void (*CHECKNEW_AParam_t)(val_t p0);
+static const char * const LOCATE_NEW_AParam_parser_prod___AParam___empty_init = "new AParam parser_prod::AParam::empty_init";
+val_t NEW_AParam_parser_prod___AParam___empty_init(void);
+typedef val_t (*NEW_AParam_parser_prod___AParam___empty_init_t)(void);
+static const char * const LOCATE_NEW_AParam_parser_prod___AParam___init_aparam = "new AParam parser_prod::AParam::init_aparam";
+val_t NEW_AParam_parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AParam_parser_prod___AParam___init_aparam_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AParam_parser_nodes___ANode___init = "new AParam parser_nodes::ANode::init";
+val_t NEW_AParam_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AParam_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AClosureDecl = "init var of AClosureDecl";
+void INIT_ATTRIBUTES__AClosureDecl(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AClosureDecl_t)(val_t p0);
+val_t NEW_AClosureDecl(void);
+static const char * const LOCATE_CHECKNEW_AClosureDecl = "check new AClosureDecl";
+void CHECKNEW_AClosureDecl(val_t p0);
+typedef void (*CHECKNEW_AClosureDecl_t)(val_t p0);
+static const char * const LOCATE_NEW_AClosureDecl_parser_prod___AClosureDecl___empty_init = "new AClosureDecl parser_prod::AClosureDecl::empty_init";
+val_t NEW_AClosureDecl_parser_prod___AClosureDecl___empty_init(void);
+typedef val_t (*NEW_AClosureDecl_parser_prod___AClosureDecl___empty_init_t)(void);
+static const char * const LOCATE_NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl = "new AClosureDecl parser_prod::AClosureDecl::init_aclosuredecl";
+val_t NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_NEW_AClosureDecl_parser_nodes___ANode___init = "new AClosureDecl parser_nodes::ANode::init";
+val_t NEW_AClosureDecl_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AClosureDecl_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AType = "init var of AType";
+void INIT_ATTRIBUTES__AType(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AType_t)(val_t p0);
+val_t NEW_AType(void);
+static const char * const LOCATE_CHECKNEW_AType = "check new AType";
+void CHECKNEW_AType(val_t p0);
+typedef void (*CHECKNEW_AType_t)(val_t p0);
+static const char * const LOCATE_NEW_AType_parser_prod___AType___empty_init = "new AType parser_prod::AType::empty_init";
+val_t NEW_AType_parser_prod___AType___empty_init(void);
+typedef val_t (*NEW_AType_parser_prod___AType___empty_init_t)(void);
+static const char * const LOCATE_NEW_AType_parser_prod___AType___init_atype = "new AType parser_prod::AType::init_atype";
+val_t NEW_AType_parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AType_parser_prod___AType___init_atype_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AType_parser_nodes___ANode___init = "new AType parser_nodes::ANode::init";
+val_t NEW_AType_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AType_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ALabel = "init var of ALabel";
+void INIT_ATTRIBUTES__ALabel(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ALabel_t)(val_t p0);
+val_t NEW_ALabel(void);
+static const char * const LOCATE_CHECKNEW_ALabel = "check new ALabel";
+void CHECKNEW_ALabel(val_t p0);
+typedef void (*CHECKNEW_ALabel_t)(val_t p0);
+static const char * const LOCATE_NEW_ALabel_parser_prod___ALabel___empty_init = "new ALabel parser_prod::ALabel::empty_init";
+val_t NEW_ALabel_parser_prod___ALabel___empty_init(void);
+typedef val_t (*NEW_ALabel_parser_prod___ALabel___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALabel_parser_prod___ALabel___init_alabel = "new ALabel parser_prod::ALabel::init_alabel";
+val_t NEW_ALabel_parser_prod___ALabel___init_alabel(val_t p0, val_t p1);
+typedef val_t (*NEW_ALabel_parser_prod___ALabel___init_alabel_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ALabel_parser_nodes___ANode___init = "new ALabel parser_nodes::ANode::init";
+val_t NEW_ALabel_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ALabel_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AExpr = "init var of AExpr";
+void INIT_ATTRIBUTES__AExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AExpr_t)(val_t p0);
+val_t NEW_AExpr(void);
+static const char * const LOCATE_CHECKNEW_AExpr = "check new AExpr";
+void CHECKNEW_AExpr(val_t p0);
+typedef void (*CHECKNEW_AExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AExpr_parser_nodes___ANode___init = "new AExpr parser_nodes::ANode::init";
+val_t NEW_AExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ABlockExpr = "init var of ABlockExpr";
+void INIT_ATTRIBUTES__ABlockExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ABlockExpr_t)(val_t p0);
+val_t NEW_ABlockExpr(void);
+static const char * const LOCATE_CHECKNEW_ABlockExpr = "check new ABlockExpr";
+void CHECKNEW_ABlockExpr(val_t p0);
+typedef void (*CHECKNEW_ABlockExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ABlockExpr_parser_prod___ABlockExpr___empty_init = "new ABlockExpr parser_prod::ABlockExpr::empty_init";
+val_t NEW_ABlockExpr_parser_prod___ABlockExpr___empty_init(void);
+typedef val_t (*NEW_ABlockExpr_parser_prod___ABlockExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr = "new ABlockExpr parser_prod::ABlockExpr::init_ablockexpr";
+val_t NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(val_t p0);
+typedef val_t (*NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ABlockExpr_parser_nodes___ANode___init = "new ABlockExpr parser_nodes::ANode::init";
+val_t NEW_ABlockExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ABlockExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AVardeclExpr = "init var of AVardeclExpr";
+void INIT_ATTRIBUTES__AVardeclExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AVardeclExpr_t)(val_t p0);
+val_t NEW_AVardeclExpr(void);
+static const char * const LOCATE_CHECKNEW_AVardeclExpr = "check new AVardeclExpr";
+void CHECKNEW_AVardeclExpr(val_t p0);
+typedef void (*CHECKNEW_AVardeclExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AVardeclExpr_parser_prod___AVardeclExpr___empty_init = "new AVardeclExpr parser_prod::AVardeclExpr::empty_init";
+val_t NEW_AVardeclExpr_parser_prod___AVardeclExpr___empty_init(void);
+typedef val_t (*NEW_AVardeclExpr_parser_prod___AVardeclExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr = "new AVardeclExpr parser_prod::AVardeclExpr::init_avardeclexpr";
+val_t NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_NEW_AVardeclExpr_parser_nodes___ANode___init = "new AVardeclExpr parser_nodes::ANode::init";
+val_t NEW_AVardeclExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AVardeclExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AReturnExpr = "init var of AReturnExpr";
+void INIT_ATTRIBUTES__AReturnExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AReturnExpr_t)(val_t p0);
+val_t NEW_AReturnExpr(void);
+static const char * const LOCATE_CHECKNEW_AReturnExpr = "check new AReturnExpr";
+void CHECKNEW_AReturnExpr(val_t p0);
+typedef void (*CHECKNEW_AReturnExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AReturnExpr_parser_prod___AReturnExpr___empty_init = "new AReturnExpr parser_prod::AReturnExpr::empty_init";
+val_t NEW_AReturnExpr_parser_prod___AReturnExpr___empty_init(void);
+typedef val_t (*NEW_AReturnExpr_parser_prod___AReturnExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr = "new AReturnExpr parser_prod::AReturnExpr::init_areturnexpr";
+val_t NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AReturnExpr_parser_nodes___ANode___init = "new AReturnExpr parser_nodes::ANode::init";
+val_t NEW_AReturnExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AReturnExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ALabelable = "init var of ALabelable";
+void INIT_ATTRIBUTES__ALabelable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ALabelable_t)(val_t p0);
+val_t NEW_ALabelable(void);
+static const char * const LOCATE_CHECKNEW_ALabelable = "check new ALabelable";
+void CHECKNEW_ALabelable(val_t p0);
+typedef void (*CHECKNEW_ALabelable_t)(val_t p0);
+static const char * const LOCATE_NEW_ALabelable_parser_nodes___ANode___init = "new ALabelable parser_nodes::ANode::init";
+val_t NEW_ALabelable_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ALabelable_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ABreakExpr = "init var of ABreakExpr";
+void INIT_ATTRIBUTES__ABreakExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ABreakExpr_t)(val_t p0);
+val_t NEW_ABreakExpr(void);
+static const char * const LOCATE_CHECKNEW_ABreakExpr = "check new ABreakExpr";
+void CHECKNEW_ABreakExpr(val_t p0);
+typedef void (*CHECKNEW_ABreakExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ABreakExpr_parser_prod___ABreakExpr___empty_init = "new ABreakExpr parser_prod::ABreakExpr::empty_init";
+val_t NEW_ABreakExpr_parser_prod___ABreakExpr___empty_init(void);
+typedef val_t (*NEW_ABreakExpr_parser_prod___ABreakExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr = "new ABreakExpr parser_prod::ABreakExpr::init_abreakexpr";
+val_t NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_ABreakExpr_parser_nodes___ANode___init = "new ABreakExpr parser_nodes::ANode::init";
+val_t NEW_ABreakExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ABreakExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAbortExpr = "init var of AAbortExpr";
+void INIT_ATTRIBUTES__AAbortExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAbortExpr_t)(val_t p0);
+val_t NEW_AAbortExpr(void);
+static const char * const LOCATE_CHECKNEW_AAbortExpr = "check new AAbortExpr";
+void CHECKNEW_AAbortExpr(val_t p0);
+typedef void (*CHECKNEW_AAbortExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAbortExpr_parser_prod___AAbortExpr___empty_init = "new AAbortExpr parser_prod::AAbortExpr::empty_init";
+val_t NEW_AAbortExpr_parser_prod___AAbortExpr___empty_init(void);
+typedef val_t (*NEW_AAbortExpr_parser_prod___AAbortExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr = "new AAbortExpr parser_prod::AAbortExpr::init_aabortexpr";
+val_t NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr(val_t p0);
+typedef val_t (*NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAbortExpr_parser_nodes___ANode___init = "new AAbortExpr parser_nodes::ANode::init";
+val_t NEW_AAbortExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAbortExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AContinueExpr = "init var of AContinueExpr";
+void INIT_ATTRIBUTES__AContinueExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AContinueExpr_t)(val_t p0);
+val_t NEW_AContinueExpr(void);
+static const char * const LOCATE_CHECKNEW_AContinueExpr = "check new AContinueExpr";
+void CHECKNEW_AContinueExpr(val_t p0);
+typedef void (*CHECKNEW_AContinueExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AContinueExpr_parser_prod___AContinueExpr___empty_init = "new AContinueExpr parser_prod::AContinueExpr::empty_init";
+val_t NEW_AContinueExpr_parser_prod___AContinueExpr___empty_init(void);
+typedef val_t (*NEW_AContinueExpr_parser_prod___AContinueExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr = "new AContinueExpr parser_prod::AContinueExpr::init_acontinueexpr";
+val_t NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AContinueExpr_parser_nodes___ANode___init = "new AContinueExpr parser_nodes::ANode::init";
+val_t NEW_AContinueExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AContinueExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ADoExpr = "init var of ADoExpr";
+void INIT_ATTRIBUTES__ADoExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ADoExpr_t)(val_t p0);
+val_t NEW_ADoExpr(void);
+static const char * const LOCATE_CHECKNEW_ADoExpr = "check new ADoExpr";
+void CHECKNEW_ADoExpr(val_t p0);
+typedef void (*CHECKNEW_ADoExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ADoExpr_parser_prod___ADoExpr___empty_init = "new ADoExpr parser_prod::ADoExpr::empty_init";
+val_t NEW_ADoExpr_parser_prod___ADoExpr___empty_init(void);
+typedef val_t (*NEW_ADoExpr_parser_prod___ADoExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr = "new ADoExpr parser_prod::ADoExpr::init_adoexpr";
+val_t NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_ADoExpr_parser_nodes___ANode___init = "new ADoExpr parser_nodes::ANode::init";
+val_t NEW_ADoExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ADoExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AIfExpr = "init var of AIfExpr";
+void INIT_ATTRIBUTES__AIfExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AIfExpr_t)(val_t p0);
+val_t NEW_AIfExpr(void);
+static const char * const LOCATE_CHECKNEW_AIfExpr = "check new AIfExpr";
+void CHECKNEW_AIfExpr(val_t p0);
+typedef void (*CHECKNEW_AIfExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AIfExpr_parser_prod___AIfExpr___empty_init = "new AIfExpr parser_prod::AIfExpr::empty_init";
+val_t NEW_AIfExpr_parser_prod___AIfExpr___empty_init(void);
+typedef val_t (*NEW_AIfExpr_parser_prod___AIfExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr = "new AIfExpr parser_prod::AIfExpr::init_aifexpr";
+val_t NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_NEW_AIfExpr_parser_nodes___ANode___init = "new AIfExpr parser_nodes::ANode::init";
+val_t NEW_AIfExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AIfExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AIfexprExpr = "init var of AIfexprExpr";
+void INIT_ATTRIBUTES__AIfexprExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AIfexprExpr_t)(val_t p0);
+val_t NEW_AIfexprExpr(void);
+static const char * const LOCATE_CHECKNEW_AIfexprExpr = "check new AIfexprExpr";
+void CHECKNEW_AIfexprExpr(val_t p0);
+typedef void (*CHECKNEW_AIfexprExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AIfexprExpr_parser_prod___AIfexprExpr___empty_init = "new AIfexprExpr parser_prod::AIfexprExpr::empty_init";
+val_t NEW_AIfexprExpr_parser_prod___AIfexprExpr___empty_init(void);
+typedef val_t (*NEW_AIfexprExpr_parser_prod___AIfexprExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr = "new AIfexprExpr parser_prod::AIfexprExpr::init_aifexprexpr";
+val_t NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+typedef val_t (*NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+static const char * const LOCATE_NEW_AIfexprExpr_parser_nodes___ANode___init = "new AIfexprExpr parser_nodes::ANode::init";
+val_t NEW_AIfexprExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AIfexprExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AWhileExpr = "init var of AWhileExpr";
+void INIT_ATTRIBUTES__AWhileExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AWhileExpr_t)(val_t p0);
+val_t NEW_AWhileExpr(void);
+static const char * const LOCATE_CHECKNEW_AWhileExpr = "check new AWhileExpr";
+void CHECKNEW_AWhileExpr(val_t p0);
+typedef void (*CHECKNEW_AWhileExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AWhileExpr_parser_prod___AWhileExpr___empty_init = "new AWhileExpr parser_prod::AWhileExpr::empty_init";
+val_t NEW_AWhileExpr_parser_prod___AWhileExpr___empty_init(void);
+typedef val_t (*NEW_AWhileExpr_parser_prod___AWhileExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr = "new AWhileExpr parser_prod::AWhileExpr::init_awhileexpr";
+val_t NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_NEW_AWhileExpr_parser_nodes___ANode___init = "new AWhileExpr parser_nodes::ANode::init";
+val_t NEW_AWhileExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AWhileExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ALoopExpr = "init var of ALoopExpr";
+void INIT_ATTRIBUTES__ALoopExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ALoopExpr_t)(val_t p0);
+val_t NEW_ALoopExpr(void);
+static const char * const LOCATE_CHECKNEW_ALoopExpr = "check new ALoopExpr";
+void CHECKNEW_ALoopExpr(val_t p0);
+typedef void (*CHECKNEW_ALoopExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ALoopExpr_parser_prod___ALoopExpr___empty_init = "new ALoopExpr parser_prod::ALoopExpr::empty_init";
+val_t NEW_ALoopExpr_parser_prod___ALoopExpr___empty_init(void);
+typedef val_t (*NEW_ALoopExpr_parser_prod___ALoopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALoopExpr_parser_prod___ALoopExpr___init_aloopexpr = "new ALoopExpr parser_prod::ALoopExpr::init_aloopexpr";
+val_t NEW_ALoopExpr_parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ALoopExpr_parser_prod___ALoopExpr___init_aloopexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_ALoopExpr_parser_nodes___ANode___init = "new ALoopExpr parser_nodes::ANode::init";
+val_t NEW_ALoopExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ALoopExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AForExpr = "init var of AForExpr";
+void INIT_ATTRIBUTES__AForExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AForExpr_t)(val_t p0);
+val_t NEW_AForExpr(void);
+static const char * const LOCATE_CHECKNEW_AForExpr = "check new AForExpr";
+void CHECKNEW_AForExpr(val_t p0);
+typedef void (*CHECKNEW_AForExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AForExpr_parser_prod___AForExpr___empty_init = "new AForExpr parser_prod::AForExpr::empty_init";
+val_t NEW_AForExpr_parser_prod___AForExpr___empty_init(void);
+typedef val_t (*NEW_AForExpr_parser_prod___AForExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AForExpr_parser_prod___AForExpr___init_aforexpr = "new AForExpr parser_prod::AForExpr::init_aforexpr";
+val_t NEW_AForExpr_parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+typedef val_t (*NEW_AForExpr_parser_prod___AForExpr___init_aforexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+static const char * const LOCATE_NEW_AForExpr_parser_nodes___ANode___init = "new AForExpr parser_nodes::ANode::init";
+val_t NEW_AForExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AForExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAssertExpr = "init var of AAssertExpr";
+void INIT_ATTRIBUTES__AAssertExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAssertExpr_t)(val_t p0);
+val_t NEW_AAssertExpr(void);
+static const char * const LOCATE_CHECKNEW_AAssertExpr = "check new AAssertExpr";
+void CHECKNEW_AAssertExpr(val_t p0);
+typedef void (*CHECKNEW_AAssertExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAssertExpr_parser_prod___AAssertExpr___empty_init = "new AAssertExpr parser_prod::AAssertExpr::empty_init";
+val_t NEW_AAssertExpr_parser_prod___AAssertExpr___empty_init(void);
+typedef val_t (*NEW_AAssertExpr_parser_prod___AAssertExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr = "new AAssertExpr parser_prod::AAssertExpr::init_aassertexpr";
+val_t NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_NEW_AAssertExpr_parser_nodes___ANode___init = "new AAssertExpr parser_nodes::ANode::init";
+val_t NEW_AAssertExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAssertExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAssignFormExpr = "init var of AAssignFormExpr";
+void INIT_ATTRIBUTES__AAssignFormExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAssignFormExpr_t)(val_t p0);
+val_t NEW_AAssignFormExpr(void);
+static const char * const LOCATE_CHECKNEW_AAssignFormExpr = "check new AAssignFormExpr";
+void CHECKNEW_AAssignFormExpr(val_t p0);
+typedef void (*CHECKNEW_AAssignFormExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAssignFormExpr_parser_nodes___ANode___init = "new AAssignFormExpr parser_nodes::ANode::init";
+val_t NEW_AAssignFormExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAssignFormExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AReassignFormExpr = "init var of AReassignFormExpr";
+void INIT_ATTRIBUTES__AReassignFormExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AReassignFormExpr_t)(val_t p0);
+val_t NEW_AReassignFormExpr(void);
+static const char * const LOCATE_CHECKNEW_AReassignFormExpr = "check new AReassignFormExpr";
+void CHECKNEW_AReassignFormExpr(val_t p0);
+typedef void (*CHECKNEW_AReassignFormExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AReassignFormExpr_parser_nodes___ANode___init = "new AReassignFormExpr parser_nodes::ANode::init";
+val_t NEW_AReassignFormExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AReassignFormExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AOnceExpr = "init var of AOnceExpr";
+void INIT_ATTRIBUTES__AOnceExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AOnceExpr_t)(val_t p0);
+val_t NEW_AOnceExpr(void);
+static const char * const LOCATE_CHECKNEW_AOnceExpr = "check new AOnceExpr";
+void CHECKNEW_AOnceExpr(val_t p0);
+typedef void (*CHECKNEW_AOnceExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AOnceExpr_parser_prod___AOnceExpr___empty_init = "new AOnceExpr parser_prod::AOnceExpr::empty_init";
+val_t NEW_AOnceExpr_parser_prod___AOnceExpr___empty_init(void);
+typedef val_t (*NEW_AOnceExpr_parser_prod___AOnceExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr = "new AOnceExpr parser_prod::AOnceExpr::init_aonceexpr";
+val_t NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AOnceExpr_parser_nodes___ANode___init = "new AOnceExpr parser_nodes::ANode::init";
+val_t NEW_AOnceExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AOnceExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ASendExpr = "init var of ASendExpr";
+void INIT_ATTRIBUTES__ASendExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ASendExpr_t)(val_t p0);
+val_t NEW_ASendExpr(void);
+static const char * const LOCATE_CHECKNEW_ASendExpr = "check new ASendExpr";
+void CHECKNEW_ASendExpr(val_t p0);
+typedef void (*CHECKNEW_ASendExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ASendExpr_parser_prod___ASendExpr___empty_init = "new ASendExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ASendExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ASendExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASendExpr_parser_prod___ASendExpr___init_asendexpr = "new ASendExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ASendExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ASendExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ASendExpr_parser_nodes___ANode___init = "new ASendExpr parser_nodes::ANode::init";
+val_t NEW_ASendExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ASendExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ABinopExpr = "init var of ABinopExpr";
+void INIT_ATTRIBUTES__ABinopExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ABinopExpr_t)(val_t p0);
+val_t NEW_ABinopExpr(void);
+static const char * const LOCATE_CHECKNEW_ABinopExpr = "check new ABinopExpr";
+void CHECKNEW_ABinopExpr(val_t p0);
+typedef void (*CHECKNEW_ABinopExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ABinopExpr_parser_prod___ASendExpr___empty_init = "new ABinopExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ABinopExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ABinopExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABinopExpr_parser_prod___ABinopExpr___empty_init = "new ABinopExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_ABinopExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_ABinopExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABinopExpr_parser_prod___ABinopExpr___init_abinopexpr = "new ABinopExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_ABinopExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ABinopExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ABinopExpr_parser_nodes___ANode___init = "new ABinopExpr parser_nodes::ANode::init";
+val_t NEW_ABinopExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ABinopExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ABinopExpr_parser_prod___ASendExpr___init_asendexpr = "new ABinopExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ABinopExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ABinopExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ABoolExpr = "init var of ABoolExpr";
+void INIT_ATTRIBUTES__ABoolExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ABoolExpr_t)(val_t p0);
+val_t NEW_ABoolExpr(void);
+static const char * const LOCATE_CHECKNEW_ABoolExpr = "check new ABoolExpr";
+void CHECKNEW_ABoolExpr(val_t p0);
+typedef void (*CHECKNEW_ABoolExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ABoolExpr_parser_nodes___ANode___init = "new ABoolExpr parser_nodes::ANode::init";
+val_t NEW_ABoolExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ABoolExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AOrExpr = "init var of AOrExpr";
+void INIT_ATTRIBUTES__AOrExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AOrExpr_t)(val_t p0);
+val_t NEW_AOrExpr(void);
+static const char * const LOCATE_CHECKNEW_AOrExpr = "check new AOrExpr";
+void CHECKNEW_AOrExpr(val_t p0);
+typedef void (*CHECKNEW_AOrExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AOrExpr_parser_prod___AOrExpr___empty_init = "new AOrExpr parser_prod::AOrExpr::empty_init";
+val_t NEW_AOrExpr_parser_prod___AOrExpr___empty_init(void);
+typedef val_t (*NEW_AOrExpr_parser_prod___AOrExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr = "new AOrExpr parser_prod::AOrExpr::init_aorexpr";
+val_t NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AOrExpr_parser_nodes___ANode___init = "new AOrExpr parser_nodes::ANode::init";
+val_t NEW_AOrExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AOrExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAndExpr = "init var of AAndExpr";
+void INIT_ATTRIBUTES__AAndExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAndExpr_t)(val_t p0);
+val_t NEW_AAndExpr(void);
+static const char * const LOCATE_CHECKNEW_AAndExpr = "check new AAndExpr";
+void CHECKNEW_AAndExpr(val_t p0);
+typedef void (*CHECKNEW_AAndExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAndExpr_parser_prod___AAndExpr___empty_init = "new AAndExpr parser_prod::AAndExpr::empty_init";
+val_t NEW_AAndExpr_parser_prod___AAndExpr___empty_init(void);
+typedef val_t (*NEW_AAndExpr_parser_prod___AAndExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr = "new AAndExpr parser_prod::AAndExpr::init_aandexpr";
+val_t NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AAndExpr_parser_nodes___ANode___init = "new AAndExpr parser_nodes::ANode::init";
+val_t NEW_AAndExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAndExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AOrElseExpr = "init var of AOrElseExpr";
+void INIT_ATTRIBUTES__AOrElseExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AOrElseExpr_t)(val_t p0);
+val_t NEW_AOrElseExpr(void);
+static const char * const LOCATE_CHECKNEW_AOrElseExpr = "check new AOrElseExpr";
+void CHECKNEW_AOrElseExpr(val_t p0);
+typedef void (*CHECKNEW_AOrElseExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AOrElseExpr_parser_prod___AOrElseExpr___empty_init = "new AOrElseExpr parser_prod::AOrElseExpr::empty_init";
+val_t NEW_AOrElseExpr_parser_prod___AOrElseExpr___empty_init(void);
+typedef val_t (*NEW_AOrElseExpr_parser_prod___AOrElseExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AOrElseExpr_parser_prod___AOrElseExpr___init_aorelseexpr = "new AOrElseExpr parser_prod::AOrElseExpr::init_aorelseexpr";
+val_t NEW_AOrElseExpr_parser_prod___AOrElseExpr___init_aorelseexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AOrElseExpr_parser_prod___AOrElseExpr___init_aorelseexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AOrElseExpr_parser_nodes___ANode___init = "new AOrElseExpr parser_nodes::ANode::init";
+val_t NEW_AOrElseExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AOrElseExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ANotExpr = "init var of ANotExpr";
+void INIT_ATTRIBUTES__ANotExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ANotExpr_t)(val_t p0);
+val_t NEW_ANotExpr(void);
+static const char * const LOCATE_CHECKNEW_ANotExpr = "check new ANotExpr";
+void CHECKNEW_ANotExpr(val_t p0);
+typedef void (*CHECKNEW_ANotExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ANotExpr_parser_prod___ANotExpr___empty_init = "new ANotExpr parser_prod::ANotExpr::empty_init";
+val_t NEW_ANotExpr_parser_prod___ANotExpr___empty_init(void);
+typedef val_t (*NEW_ANotExpr_parser_prod___ANotExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr = "new ANotExpr parser_prod::ANotExpr::init_anotexpr";
+val_t NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ANotExpr_parser_nodes___ANode___init = "new ANotExpr parser_nodes::ANode::init";
+val_t NEW_ANotExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ANotExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AEqExpr = "init var of AEqExpr";
+void INIT_ATTRIBUTES__AEqExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AEqExpr_t)(val_t p0);
+val_t NEW_AEqExpr(void);
+static const char * const LOCATE_CHECKNEW_AEqExpr = "check new AEqExpr";
+void CHECKNEW_AEqExpr(val_t p0);
+typedef void (*CHECKNEW_AEqExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AEqExpr_parser_prod___ABinopExpr___empty_init = "new AEqExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AEqExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_AEqExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AEqExpr_parser_prod___AEqExpr___empty_init = "new AEqExpr parser_prod::AEqExpr::empty_init";
+val_t NEW_AEqExpr_parser_prod___AEqExpr___empty_init(void);
+typedef val_t (*NEW_AEqExpr_parser_prod___AEqExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr = "new AEqExpr parser_prod::AEqExpr::init_aeqexpr";
+val_t NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AEqExpr_parser_nodes___ANode___init = "new AEqExpr parser_nodes::ANode::init";
+val_t NEW_AEqExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AEqExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AEqExpr_parser_prod___ASendExpr___empty_init = "new AEqExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AEqExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_AEqExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AEqExpr_parser_prod___ABinopExpr___init_abinopexpr = "new AEqExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AEqExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AEqExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AEqExpr_parser_prod___ASendExpr___init_asendexpr = "new AEqExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AEqExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_AEqExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AEeExpr = "init var of AEeExpr";
+void INIT_ATTRIBUTES__AEeExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AEeExpr_t)(val_t p0);
+val_t NEW_AEeExpr(void);
+static const char * const LOCATE_CHECKNEW_AEeExpr = "check new AEeExpr";
+void CHECKNEW_AEeExpr(val_t p0);
+typedef void (*CHECKNEW_AEeExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AEeExpr_parser_prod___AEeExpr___empty_init = "new AEeExpr parser_prod::AEeExpr::empty_init";
+val_t NEW_AEeExpr_parser_prod___AEeExpr___empty_init(void);
+typedef val_t (*NEW_AEeExpr_parser_prod___AEeExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr = "new AEeExpr parser_prod::AEeExpr::init_aeeexpr";
+val_t NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AEeExpr_parser_nodes___ANode___init = "new AEeExpr parser_nodes::ANode::init";
+val_t NEW_AEeExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AEeExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ANeExpr = "init var of ANeExpr";
+void INIT_ATTRIBUTES__ANeExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ANeExpr_t)(val_t p0);
+val_t NEW_ANeExpr(void);
+static const char * const LOCATE_CHECKNEW_ANeExpr = "check new ANeExpr";
+void CHECKNEW_ANeExpr(val_t p0);
+typedef void (*CHECKNEW_ANeExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ANeExpr_parser_prod___ABinopExpr___empty_init = "new ANeExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_ANeExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_ANeExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ANeExpr_parser_prod___ANeExpr___empty_init = "new ANeExpr parser_prod::ANeExpr::empty_init";
+val_t NEW_ANeExpr_parser_prod___ANeExpr___empty_init(void);
+typedef val_t (*NEW_ANeExpr_parser_prod___ANeExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr = "new ANeExpr parser_prod::ANeExpr::init_aneexpr";
+val_t NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ANeExpr_parser_nodes___ANode___init = "new ANeExpr parser_nodes::ANode::init";
+val_t NEW_ANeExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ANeExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ANeExpr_parser_prod___ASendExpr___empty_init = "new ANeExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ANeExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ANeExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ANeExpr_parser_prod___ABinopExpr___init_abinopexpr = "new ANeExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_ANeExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ANeExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ANeExpr_parser_prod___ASendExpr___init_asendexpr = "new ANeExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ANeExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ANeExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ALtExpr = "init var of ALtExpr";
+void INIT_ATTRIBUTES__ALtExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ALtExpr_t)(val_t p0);
+val_t NEW_ALtExpr(void);
+static const char * const LOCATE_CHECKNEW_ALtExpr = "check new ALtExpr";
+void CHECKNEW_ALtExpr(val_t p0);
+typedef void (*CHECKNEW_ALtExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ALtExpr_parser_prod___ABinopExpr___empty_init = "new ALtExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_ALtExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_ALtExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALtExpr_parser_prod___ALtExpr___empty_init = "new ALtExpr parser_prod::ALtExpr::empty_init";
+val_t NEW_ALtExpr_parser_prod___ALtExpr___empty_init(void);
+typedef val_t (*NEW_ALtExpr_parser_prod___ALtExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr = "new ALtExpr parser_prod::ALtExpr::init_altexpr";
+val_t NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ALtExpr_parser_nodes___ANode___init = "new ALtExpr parser_nodes::ANode::init";
+val_t NEW_ALtExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ALtExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ALtExpr_parser_prod___ASendExpr___empty_init = "new ALtExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ALtExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ALtExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALtExpr_parser_prod___ABinopExpr___init_abinopexpr = "new ALtExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_ALtExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ALtExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ALtExpr_parser_prod___ASendExpr___init_asendexpr = "new ALtExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ALtExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ALtExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ALeExpr = "init var of ALeExpr";
+void INIT_ATTRIBUTES__ALeExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ALeExpr_t)(val_t p0);
+val_t NEW_ALeExpr(void);
+static const char * const LOCATE_CHECKNEW_ALeExpr = "check new ALeExpr";
+void CHECKNEW_ALeExpr(val_t p0);
+typedef void (*CHECKNEW_ALeExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ALeExpr_parser_prod___ABinopExpr___empty_init = "new ALeExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_ALeExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_ALeExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALeExpr_parser_prod___ALeExpr___empty_init = "new ALeExpr parser_prod::ALeExpr::empty_init";
+val_t NEW_ALeExpr_parser_prod___ALeExpr___empty_init(void);
+typedef val_t (*NEW_ALeExpr_parser_prod___ALeExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr = "new ALeExpr parser_prod::ALeExpr::init_aleexpr";
+val_t NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ALeExpr_parser_nodes___ANode___init = "new ALeExpr parser_nodes::ANode::init";
+val_t NEW_ALeExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ALeExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ALeExpr_parser_prod___ASendExpr___empty_init = "new ALeExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ALeExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ALeExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALeExpr_parser_prod___ABinopExpr___init_abinopexpr = "new ALeExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_ALeExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ALeExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ALeExpr_parser_prod___ASendExpr___init_asendexpr = "new ALeExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ALeExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ALeExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ALlExpr = "init var of ALlExpr";
+void INIT_ATTRIBUTES__ALlExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ALlExpr_t)(val_t p0);
+val_t NEW_ALlExpr(void);
+static const char * const LOCATE_CHECKNEW_ALlExpr = "check new ALlExpr";
+void CHECKNEW_ALlExpr(val_t p0);
+typedef void (*CHECKNEW_ALlExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ALlExpr_parser_prod___ABinopExpr___empty_init = "new ALlExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_ALlExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_ALlExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALlExpr_parser_prod___ALlExpr___empty_init = "new ALlExpr parser_prod::ALlExpr::empty_init";
+val_t NEW_ALlExpr_parser_prod___ALlExpr___empty_init(void);
+typedef val_t (*NEW_ALlExpr_parser_prod___ALlExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALlExpr_parser_prod___ALlExpr___init_allexpr = "new ALlExpr parser_prod::ALlExpr::init_allexpr";
+val_t NEW_ALlExpr_parser_prod___ALlExpr___init_allexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ALlExpr_parser_prod___ALlExpr___init_allexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ALlExpr_parser_nodes___ANode___init = "new ALlExpr parser_nodes::ANode::init";
+val_t NEW_ALlExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ALlExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ALlExpr_parser_prod___ASendExpr___empty_init = "new ALlExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ALlExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ALlExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ALlExpr_parser_prod___ABinopExpr___init_abinopexpr = "new ALlExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_ALlExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ALlExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ALlExpr_parser_prod___ASendExpr___init_asendexpr = "new ALlExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ALlExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ALlExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AGtExpr = "init var of AGtExpr";
+void INIT_ATTRIBUTES__AGtExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AGtExpr_t)(val_t p0);
+val_t NEW_AGtExpr(void);
+static const char * const LOCATE_CHECKNEW_AGtExpr = "check new AGtExpr";
+void CHECKNEW_AGtExpr(val_t p0);
+typedef void (*CHECKNEW_AGtExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AGtExpr_parser_prod___ABinopExpr___empty_init = "new AGtExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AGtExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_AGtExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGtExpr_parser_prod___AGtExpr___empty_init = "new AGtExpr parser_prod::AGtExpr::empty_init";
+val_t NEW_AGtExpr_parser_prod___AGtExpr___empty_init(void);
+typedef val_t (*NEW_AGtExpr_parser_prod___AGtExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr = "new AGtExpr parser_prod::AGtExpr::init_agtexpr";
+val_t NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AGtExpr_parser_nodes___ANode___init = "new AGtExpr parser_nodes::ANode::init";
+val_t NEW_AGtExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AGtExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AGtExpr_parser_prod___ASendExpr___empty_init = "new AGtExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AGtExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_AGtExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGtExpr_parser_prod___ABinopExpr___init_abinopexpr = "new AGtExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AGtExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AGtExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AGtExpr_parser_prod___ASendExpr___init_asendexpr = "new AGtExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AGtExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_AGtExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AGeExpr = "init var of AGeExpr";
+void INIT_ATTRIBUTES__AGeExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AGeExpr_t)(val_t p0);
+val_t NEW_AGeExpr(void);
+static const char * const LOCATE_CHECKNEW_AGeExpr = "check new AGeExpr";
+void CHECKNEW_AGeExpr(val_t p0);
+typedef void (*CHECKNEW_AGeExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AGeExpr_parser_prod___ABinopExpr___empty_init = "new AGeExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AGeExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_AGeExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGeExpr_parser_prod___AGeExpr___empty_init = "new AGeExpr parser_prod::AGeExpr::empty_init";
+val_t NEW_AGeExpr_parser_prod___AGeExpr___empty_init(void);
+typedef val_t (*NEW_AGeExpr_parser_prod___AGeExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr = "new AGeExpr parser_prod::AGeExpr::init_ageexpr";
+val_t NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AGeExpr_parser_nodes___ANode___init = "new AGeExpr parser_nodes::ANode::init";
+val_t NEW_AGeExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AGeExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AGeExpr_parser_prod___ASendExpr___empty_init = "new AGeExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AGeExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_AGeExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGeExpr_parser_prod___ABinopExpr___init_abinopexpr = "new AGeExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AGeExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AGeExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AGeExpr_parser_prod___ASendExpr___init_asendexpr = "new AGeExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AGeExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_AGeExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AGgExpr = "init var of AGgExpr";
+void INIT_ATTRIBUTES__AGgExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AGgExpr_t)(val_t p0);
+val_t NEW_AGgExpr(void);
+static const char * const LOCATE_CHECKNEW_AGgExpr = "check new AGgExpr";
+void CHECKNEW_AGgExpr(val_t p0);
+typedef void (*CHECKNEW_AGgExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AGgExpr_parser_prod___ABinopExpr___empty_init = "new AGgExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AGgExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_AGgExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGgExpr_parser_prod___AGgExpr___empty_init = "new AGgExpr parser_prod::AGgExpr::empty_init";
+val_t NEW_AGgExpr_parser_prod___AGgExpr___empty_init(void);
+typedef val_t (*NEW_AGgExpr_parser_prod___AGgExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGgExpr_parser_prod___AGgExpr___init_aggexpr = "new AGgExpr parser_prod::AGgExpr::init_aggexpr";
+val_t NEW_AGgExpr_parser_prod___AGgExpr___init_aggexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AGgExpr_parser_prod___AGgExpr___init_aggexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AGgExpr_parser_nodes___ANode___init = "new AGgExpr parser_nodes::ANode::init";
+val_t NEW_AGgExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AGgExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AGgExpr_parser_prod___ASendExpr___empty_init = "new AGgExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AGgExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_AGgExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AGgExpr_parser_prod___ABinopExpr___init_abinopexpr = "new AGgExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AGgExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AGgExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AGgExpr_parser_prod___ASendExpr___init_asendexpr = "new AGgExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AGgExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_AGgExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AIsaExpr = "init var of AIsaExpr";
+void INIT_ATTRIBUTES__AIsaExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AIsaExpr_t)(val_t p0);
+val_t NEW_AIsaExpr(void);
+static const char * const LOCATE_CHECKNEW_AIsaExpr = "check new AIsaExpr";
+void CHECKNEW_AIsaExpr(val_t p0);
+typedef void (*CHECKNEW_AIsaExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AIsaExpr_parser_prod___AIsaExpr___empty_init = "new AIsaExpr parser_prod::AIsaExpr::empty_init";
+val_t NEW_AIsaExpr_parser_prod___AIsaExpr___empty_init(void);
+typedef val_t (*NEW_AIsaExpr_parser_prod___AIsaExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr = "new AIsaExpr parser_prod::AIsaExpr::init_aisaexpr";
+val_t NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AIsaExpr_parser_nodes___ANode___init = "new AIsaExpr parser_nodes::ANode::init";
+val_t NEW_AIsaExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AIsaExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__APlusExpr = "init var of APlusExpr";
+void INIT_ATTRIBUTES__APlusExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__APlusExpr_t)(val_t p0);
+val_t NEW_APlusExpr(void);
+static const char * const LOCATE_CHECKNEW_APlusExpr = "check new APlusExpr";
+void CHECKNEW_APlusExpr(val_t p0);
+typedef void (*CHECKNEW_APlusExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_APlusExpr_parser_prod___ABinopExpr___empty_init = "new APlusExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_APlusExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_APlusExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_APlusExpr_parser_prod___APlusExpr___empty_init = "new APlusExpr parser_prod::APlusExpr::empty_init";
+val_t NEW_APlusExpr_parser_prod___APlusExpr___empty_init(void);
+typedef val_t (*NEW_APlusExpr_parser_prod___APlusExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr = "new APlusExpr parser_prod::APlusExpr::init_aplusexpr";
+val_t NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_APlusExpr_parser_nodes___ANode___init = "new APlusExpr parser_nodes::ANode::init";
+val_t NEW_APlusExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_APlusExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_APlusExpr_parser_prod___ASendExpr___empty_init = "new APlusExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_APlusExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_APlusExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_APlusExpr_parser_prod___ABinopExpr___init_abinopexpr = "new APlusExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_APlusExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_APlusExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_APlusExpr_parser_prod___ASendExpr___init_asendexpr = "new APlusExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_APlusExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_APlusExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AMinusExpr = "init var of AMinusExpr";
+void INIT_ATTRIBUTES__AMinusExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AMinusExpr_t)(val_t p0);
+val_t NEW_AMinusExpr(void);
+static const char * const LOCATE_CHECKNEW_AMinusExpr = "check new AMinusExpr";
+void CHECKNEW_AMinusExpr(val_t p0);
+typedef void (*CHECKNEW_AMinusExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AMinusExpr_parser_prod___ABinopExpr___empty_init = "new AMinusExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AMinusExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_AMinusExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AMinusExpr_parser_prod___AMinusExpr___empty_init = "new AMinusExpr parser_prod::AMinusExpr::empty_init";
+val_t NEW_AMinusExpr_parser_prod___AMinusExpr___empty_init(void);
+typedef val_t (*NEW_AMinusExpr_parser_prod___AMinusExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr = "new AMinusExpr parser_prod::AMinusExpr::init_aminusexpr";
+val_t NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AMinusExpr_parser_nodes___ANode___init = "new AMinusExpr parser_nodes::ANode::init";
+val_t NEW_AMinusExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AMinusExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AMinusExpr_parser_prod___ASendExpr___empty_init = "new AMinusExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AMinusExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_AMinusExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AMinusExpr_parser_prod___ABinopExpr___init_abinopexpr = "new AMinusExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AMinusExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AMinusExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AMinusExpr_parser_prod___ASendExpr___init_asendexpr = "new AMinusExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AMinusExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_AMinusExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AStarshipExpr = "init var of AStarshipExpr";
+void INIT_ATTRIBUTES__AStarshipExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AStarshipExpr_t)(val_t p0);
+val_t NEW_AStarshipExpr(void);
+static const char * const LOCATE_CHECKNEW_AStarshipExpr = "check new AStarshipExpr";
+void CHECKNEW_AStarshipExpr(val_t p0);
+typedef void (*CHECKNEW_AStarshipExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AStarshipExpr_parser_prod___ABinopExpr___empty_init = "new AStarshipExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AStarshipExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_AStarshipExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStarshipExpr_parser_prod___AStarshipExpr___empty_init = "new AStarshipExpr parser_prod::AStarshipExpr::empty_init";
+val_t NEW_AStarshipExpr_parser_prod___AStarshipExpr___empty_init(void);
+typedef val_t (*NEW_AStarshipExpr_parser_prod___AStarshipExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr = "new AStarshipExpr parser_prod::AStarshipExpr::init_astarshipexpr";
+val_t NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AStarshipExpr_parser_nodes___ANode___init = "new AStarshipExpr parser_nodes::ANode::init";
+val_t NEW_AStarshipExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AStarshipExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AStarshipExpr_parser_prod___ASendExpr___empty_init = "new AStarshipExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AStarshipExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_AStarshipExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStarshipExpr_parser_prod___ABinopExpr___init_abinopexpr = "new AStarshipExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AStarshipExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AStarshipExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AStarshipExpr_parser_prod___ASendExpr___init_asendexpr = "new AStarshipExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AStarshipExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_AStarshipExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AStarExpr = "init var of AStarExpr";
+void INIT_ATTRIBUTES__AStarExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AStarExpr_t)(val_t p0);
+val_t NEW_AStarExpr(void);
+static const char * const LOCATE_CHECKNEW_AStarExpr = "check new AStarExpr";
+void CHECKNEW_AStarExpr(val_t p0);
+typedef void (*CHECKNEW_AStarExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AStarExpr_parser_prod___ABinopExpr___empty_init = "new AStarExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_AStarExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_AStarExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStarExpr_parser_prod___AStarExpr___empty_init = "new AStarExpr parser_prod::AStarExpr::empty_init";
+val_t NEW_AStarExpr_parser_prod___AStarExpr___empty_init(void);
+typedef val_t (*NEW_AStarExpr_parser_prod___AStarExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr = "new AStarExpr parser_prod::AStarExpr::init_astarexpr";
+val_t NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AStarExpr_parser_nodes___ANode___init = "new AStarExpr parser_nodes::ANode::init";
+val_t NEW_AStarExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AStarExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AStarExpr_parser_prod___ASendExpr___empty_init = "new AStarExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AStarExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_AStarExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStarExpr_parser_prod___ABinopExpr___init_abinopexpr = "new AStarExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_AStarExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AStarExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AStarExpr_parser_prod___ASendExpr___init_asendexpr = "new AStarExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AStarExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_AStarExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ASlashExpr = "init var of ASlashExpr";
+void INIT_ATTRIBUTES__ASlashExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ASlashExpr_t)(val_t p0);
+val_t NEW_ASlashExpr(void);
+static const char * const LOCATE_CHECKNEW_ASlashExpr = "check new ASlashExpr";
+void CHECKNEW_ASlashExpr(val_t p0);
+typedef void (*CHECKNEW_ASlashExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ASlashExpr_parser_prod___ABinopExpr___empty_init = "new ASlashExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_ASlashExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_ASlashExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASlashExpr_parser_prod___ASlashExpr___empty_init = "new ASlashExpr parser_prod::ASlashExpr::empty_init";
+val_t NEW_ASlashExpr_parser_prod___ASlashExpr___empty_init(void);
+typedef val_t (*NEW_ASlashExpr_parser_prod___ASlashExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr = "new ASlashExpr parser_prod::ASlashExpr::init_aslashexpr";
+val_t NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ASlashExpr_parser_nodes___ANode___init = "new ASlashExpr parser_nodes::ANode::init";
+val_t NEW_ASlashExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ASlashExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ASlashExpr_parser_prod___ASendExpr___empty_init = "new ASlashExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ASlashExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ASlashExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASlashExpr_parser_prod___ABinopExpr___init_abinopexpr = "new ASlashExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_ASlashExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ASlashExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ASlashExpr_parser_prod___ASendExpr___init_asendexpr = "new ASlashExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ASlashExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ASlashExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__APercentExpr = "init var of APercentExpr";
+void INIT_ATTRIBUTES__APercentExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__APercentExpr_t)(val_t p0);
+val_t NEW_APercentExpr(void);
+static const char * const LOCATE_CHECKNEW_APercentExpr = "check new APercentExpr";
+void CHECKNEW_APercentExpr(val_t p0);
+typedef void (*CHECKNEW_APercentExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_APercentExpr_parser_prod___ABinopExpr___empty_init = "new APercentExpr parser_prod::ABinopExpr::empty_init";
+val_t NEW_APercentExpr_parser_prod___ABinopExpr___empty_init(void);
+typedef val_t (*NEW_APercentExpr_parser_prod___ABinopExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_APercentExpr_parser_prod___APercentExpr___empty_init = "new APercentExpr parser_prod::APercentExpr::empty_init";
+val_t NEW_APercentExpr_parser_prod___APercentExpr___empty_init(void);
+typedef val_t (*NEW_APercentExpr_parser_prod___APercentExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr = "new APercentExpr parser_prod::APercentExpr::init_apercentexpr";
+val_t NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_APercentExpr_parser_nodes___ANode___init = "new APercentExpr parser_nodes::ANode::init";
+val_t NEW_APercentExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_APercentExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_APercentExpr_parser_prod___ASendExpr___empty_init = "new APercentExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_APercentExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_APercentExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_APercentExpr_parser_prod___ABinopExpr___init_abinopexpr = "new APercentExpr parser_prod::ABinopExpr::init_abinopexpr";
+val_t NEW_APercentExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_APercentExpr_parser_prod___ABinopExpr___init_abinopexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_APercentExpr_parser_prod___ASendExpr___init_asendexpr = "new APercentExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_APercentExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_APercentExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AUminusExpr = "init var of AUminusExpr";
+void INIT_ATTRIBUTES__AUminusExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AUminusExpr_t)(val_t p0);
+val_t NEW_AUminusExpr(void);
+static const char * const LOCATE_CHECKNEW_AUminusExpr = "check new AUminusExpr";
+void CHECKNEW_AUminusExpr(val_t p0);
+typedef void (*CHECKNEW_AUminusExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AUminusExpr_parser_prod___ASendExpr___empty_init = "new AUminusExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AUminusExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_AUminusExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AUminusExpr_parser_prod___AUminusExpr___empty_init = "new AUminusExpr parser_prod::AUminusExpr::empty_init";
+val_t NEW_AUminusExpr_parser_prod___AUminusExpr___empty_init(void);
+typedef val_t (*NEW_AUminusExpr_parser_prod___AUminusExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr = "new AUminusExpr parser_prod::AUminusExpr::init_auminusexpr";
+val_t NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AUminusExpr_parser_nodes___ANode___init = "new AUminusExpr parser_nodes::ANode::init";
+val_t NEW_AUminusExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AUminusExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AUminusExpr_parser_prod___ASendExpr___init_asendexpr = "new AUminusExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AUminusExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_AUminusExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ANewExpr = "init var of ANewExpr";
+void INIT_ATTRIBUTES__ANewExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ANewExpr_t)(val_t p0);
+val_t NEW_ANewExpr(void);
+static const char * const LOCATE_CHECKNEW_ANewExpr = "check new ANewExpr";
+void CHECKNEW_ANewExpr(val_t p0);
+typedef void (*CHECKNEW_ANewExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ANewExpr_parser_prod___ANewExpr___empty_init = "new ANewExpr parser_prod::ANewExpr::empty_init";
+val_t NEW_ANewExpr_parser_prod___ANewExpr___empty_init(void);
+typedef val_t (*NEW_ANewExpr_parser_prod___ANewExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr = "new ANewExpr parser_prod::ANewExpr::init_anewexpr";
+val_t NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_NEW_ANewExpr_parser_nodes___ANode___init = "new ANewExpr parser_nodes::ANode::init";
+val_t NEW_ANewExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ANewExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAttrFormExpr = "init var of AAttrFormExpr";
+void INIT_ATTRIBUTES__AAttrFormExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAttrFormExpr_t)(val_t p0);
+val_t NEW_AAttrFormExpr(void);
+static const char * const LOCATE_CHECKNEW_AAttrFormExpr = "check new AAttrFormExpr";
+void CHECKNEW_AAttrFormExpr(val_t p0);
+typedef void (*CHECKNEW_AAttrFormExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAttrFormExpr_parser_nodes___ANode___init = "new AAttrFormExpr parser_nodes::ANode::init";
+val_t NEW_AAttrFormExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAttrFormExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAttrExpr = "init var of AAttrExpr";
+void INIT_ATTRIBUTES__AAttrExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAttrExpr_t)(val_t p0);
+val_t NEW_AAttrExpr(void);
+static const char * const LOCATE_CHECKNEW_AAttrExpr = "check new AAttrExpr";
+void CHECKNEW_AAttrExpr(val_t p0);
+typedef void (*CHECKNEW_AAttrExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAttrExpr_parser_prod___AAttrExpr___empty_init = "new AAttrExpr parser_prod::AAttrExpr::empty_init";
+val_t NEW_AAttrExpr_parser_prod___AAttrExpr___empty_init(void);
+typedef val_t (*NEW_AAttrExpr_parser_prod___AAttrExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr = "new AAttrExpr parser_prod::AAttrExpr::init_aattrexpr";
+val_t NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AAttrExpr_parser_nodes___ANode___init = "new AAttrExpr parser_nodes::ANode::init";
+val_t NEW_AAttrExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAttrExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAttrAssignExpr = "init var of AAttrAssignExpr";
+void INIT_ATTRIBUTES__AAttrAssignExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAttrAssignExpr_t)(val_t p0);
+val_t NEW_AAttrAssignExpr(void);
+static const char * const LOCATE_CHECKNEW_AAttrAssignExpr = "check new AAttrAssignExpr";
+void CHECKNEW_AAttrAssignExpr(val_t p0);
+typedef void (*CHECKNEW_AAttrAssignExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___empty_init = "new AAttrAssignExpr parser_prod::AAttrAssignExpr::empty_init";
+val_t NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___empty_init(void);
+typedef val_t (*NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr = "new AAttrAssignExpr parser_prod::AAttrAssignExpr::init_aattrassignexpr";
+val_t NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_NEW_AAttrAssignExpr_parser_nodes___ANode___init = "new AAttrAssignExpr parser_nodes::ANode::init";
+val_t NEW_AAttrAssignExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAttrAssignExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ACallFormExpr = "init var of ACallFormExpr";
+void INIT_ATTRIBUTES__ACallFormExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ACallFormExpr_t)(val_t p0);
+val_t NEW_ACallFormExpr(void);
+static const char * const LOCATE_CHECKNEW_ACallFormExpr = "check new ACallFormExpr";
+void CHECKNEW_ACallFormExpr(val_t p0);
+typedef void (*CHECKNEW_ACallFormExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ACallFormExpr_parser_nodes___ANode___init = "new ACallFormExpr parser_nodes::ANode::init";
+val_t NEW_ACallFormExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ACallFormExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ACallFormExpr_parser_prod___ASendExpr___empty_init = "new ACallFormExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ACallFormExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ACallFormExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ACallFormExpr_parser_prod___ASendExpr___init_asendexpr = "new ACallFormExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ACallFormExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ACallFormExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAttrReassignExpr = "init var of AAttrReassignExpr";
+void INIT_ATTRIBUTES__AAttrReassignExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAttrReassignExpr_t)(val_t p0);
+val_t NEW_AAttrReassignExpr(void);
+static const char * const LOCATE_CHECKNEW_AAttrReassignExpr = "check new AAttrReassignExpr";
+void CHECKNEW_AAttrReassignExpr(val_t p0);
+typedef void (*CHECKNEW_AAttrReassignExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___empty_init = "new AAttrReassignExpr parser_prod::AAttrReassignExpr::empty_init";
+val_t NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___empty_init(void);
+typedef val_t (*NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr = "new AAttrReassignExpr parser_prod::AAttrReassignExpr::init_aattrreassignexpr";
+val_t NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_NEW_AAttrReassignExpr_parser_nodes___ANode___init = "new AAttrReassignExpr parser_nodes::ANode::init";
+val_t NEW_AAttrReassignExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAttrReassignExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ACallExpr = "init var of ACallExpr";
+void INIT_ATTRIBUTES__ACallExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ACallExpr_t)(val_t p0);
+val_t NEW_ACallExpr(void);
+static const char * const LOCATE_CHECKNEW_ACallExpr = "check new ACallExpr";
+void CHECKNEW_ACallExpr(val_t p0);
+typedef void (*CHECKNEW_ACallExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ACallExpr_parser_prod___ASendExpr___empty_init = "new ACallExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ACallExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ACallExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ACallExpr_parser_prod___ACallExpr___empty_init = "new ACallExpr parser_prod::ACallExpr::empty_init";
+val_t NEW_ACallExpr_parser_prod___ACallExpr___empty_init(void);
+typedef val_t (*NEW_ACallExpr_parser_prod___ACallExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr = "new ACallExpr parser_prod::ACallExpr::init_acallexpr";
+val_t NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_NEW_ACallExpr_parser_nodes___ANode___init = "new ACallExpr parser_nodes::ANode::init";
+val_t NEW_ACallExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ACallExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ACallExpr_parser_prod___ASendExpr___init_asendexpr = "new ACallExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ACallExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ACallExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ACallAssignExpr = "init var of ACallAssignExpr";
+void INIT_ATTRIBUTES__ACallAssignExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ACallAssignExpr_t)(val_t p0);
+val_t NEW_ACallAssignExpr(void);
+static const char * const LOCATE_CHECKNEW_ACallAssignExpr = "check new ACallAssignExpr";
+void CHECKNEW_ACallAssignExpr(val_t p0);
+typedef void (*CHECKNEW_ACallAssignExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ACallAssignExpr_parser_prod___ASendExpr___empty_init = "new ACallAssignExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ACallAssignExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ACallAssignExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___empty_init = "new ACallAssignExpr parser_prod::ACallAssignExpr::empty_init";
+val_t NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___empty_init(void);
+typedef val_t (*NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr = "new ACallAssignExpr parser_prod::ACallAssignExpr::init_acallassignexpr";
+val_t NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_NEW_ACallAssignExpr_parser_nodes___ANode___init = "new ACallAssignExpr parser_nodes::ANode::init";
+val_t NEW_ACallAssignExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ACallAssignExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ACallAssignExpr_parser_prod___ASendExpr___init_asendexpr = "new ACallAssignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ACallAssignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ACallAssignExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ACallReassignExpr = "init var of ACallReassignExpr";
+void INIT_ATTRIBUTES__ACallReassignExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ACallReassignExpr_t)(val_t p0);
+val_t NEW_ACallReassignExpr(void);
+static const char * const LOCATE_CHECKNEW_ACallReassignExpr = "check new ACallReassignExpr";
+void CHECKNEW_ACallReassignExpr(val_t p0);
+typedef void (*CHECKNEW_ACallReassignExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ACallReassignExpr_parser_prod___ASendExpr___empty_init = "new ACallReassignExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ACallReassignExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ACallReassignExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___empty_init = "new ACallReassignExpr parser_prod::ACallReassignExpr::empty_init";
+val_t NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___empty_init(void);
+typedef val_t (*NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr = "new ACallReassignExpr parser_prod::ACallReassignExpr::init_acallreassignexpr";
+val_t NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_NEW_ACallReassignExpr_parser_nodes___ANode___init = "new ACallReassignExpr parser_nodes::ANode::init";
+val_t NEW_ACallReassignExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ACallReassignExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ACallReassignExpr_parser_prod___ASendExpr___init_asendexpr = "new ACallReassignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ACallReassignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ACallReassignExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ASuperExpr = "init var of ASuperExpr";
+void INIT_ATTRIBUTES__ASuperExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ASuperExpr_t)(val_t p0);
+val_t NEW_ASuperExpr(void);
+static const char * const LOCATE_CHECKNEW_ASuperExpr = "check new ASuperExpr";
+void CHECKNEW_ASuperExpr(val_t p0);
+typedef void (*CHECKNEW_ASuperExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ASuperExpr_parser_prod___ASuperExpr___empty_init = "new ASuperExpr parser_prod::ASuperExpr::empty_init";
+val_t NEW_ASuperExpr_parser_prod___ASuperExpr___empty_init(void);
+typedef val_t (*NEW_ASuperExpr_parser_prod___ASuperExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr = "new ASuperExpr parser_prod::ASuperExpr::init_asuperexpr";
+val_t NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_ASuperExpr_parser_nodes___ANode___init = "new ASuperExpr parser_nodes::ANode::init";
+val_t NEW_ASuperExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ASuperExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AInitExpr = "init var of AInitExpr";
+void INIT_ATTRIBUTES__AInitExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AInitExpr_t)(val_t p0);
+val_t NEW_AInitExpr(void);
+static const char * const LOCATE_CHECKNEW_AInitExpr = "check new AInitExpr";
+void CHECKNEW_AInitExpr(val_t p0);
+typedef void (*CHECKNEW_AInitExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AInitExpr_parser_prod___ASendExpr___empty_init = "new AInitExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_AInitExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_AInitExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AInitExpr_parser_prod___AInitExpr___empty_init = "new AInitExpr parser_prod::AInitExpr::empty_init";
+val_t NEW_AInitExpr_parser_prod___AInitExpr___empty_init(void);
+typedef val_t (*NEW_AInitExpr_parser_prod___AInitExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr = "new AInitExpr parser_prod::AInitExpr::init_ainitexpr";
+val_t NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AInitExpr_parser_nodes___ANode___init = "new AInitExpr parser_nodes::ANode::init";
+val_t NEW_AInitExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AInitExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AInitExpr_parser_prod___ASendExpr___init_asendexpr = "new AInitExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_AInitExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_AInitExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ABraFormExpr = "init var of ABraFormExpr";
+void INIT_ATTRIBUTES__ABraFormExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ABraFormExpr_t)(val_t p0);
+val_t NEW_ABraFormExpr(void);
+static const char * const LOCATE_CHECKNEW_ABraFormExpr = "check new ABraFormExpr";
+void CHECKNEW_ABraFormExpr(val_t p0);
+typedef void (*CHECKNEW_ABraFormExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ABraFormExpr_parser_nodes___ANode___init = "new ABraFormExpr parser_nodes::ANode::init";
+val_t NEW_ABraFormExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ABraFormExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ABraFormExpr_parser_prod___ASendExpr___empty_init = "new ABraFormExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ABraFormExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ABraFormExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABraFormExpr_parser_prod___ASendExpr___init_asendexpr = "new ABraFormExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ABraFormExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ABraFormExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ABraExpr = "init var of ABraExpr";
+void INIT_ATTRIBUTES__ABraExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ABraExpr_t)(val_t p0);
+val_t NEW_ABraExpr(void);
+static const char * const LOCATE_CHECKNEW_ABraExpr = "check new ABraExpr";
+void CHECKNEW_ABraExpr(val_t p0);
+typedef void (*CHECKNEW_ABraExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ABraExpr_parser_prod___ASendExpr___empty_init = "new ABraExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ABraExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ABraExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABraExpr_parser_prod___ABraExpr___empty_init = "new ABraExpr parser_prod::ABraExpr::empty_init";
+val_t NEW_ABraExpr_parser_prod___ABraExpr___empty_init(void);
+typedef val_t (*NEW_ABraExpr_parser_prod___ABraExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr = "new ABraExpr parser_prod::ABraExpr::init_abraexpr";
+val_t NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_ABraExpr_parser_nodes___ANode___init = "new ABraExpr parser_nodes::ANode::init";
+val_t NEW_ABraExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ABraExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ABraExpr_parser_prod___ASendExpr___init_asendexpr = "new ABraExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ABraExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ABraExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ABraAssignExpr = "init var of ABraAssignExpr";
+void INIT_ATTRIBUTES__ABraAssignExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ABraAssignExpr_t)(val_t p0);
+val_t NEW_ABraAssignExpr(void);
+static const char * const LOCATE_CHECKNEW_ABraAssignExpr = "check new ABraAssignExpr";
+void CHECKNEW_ABraAssignExpr(val_t p0);
+typedef void (*CHECKNEW_ABraAssignExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ABraAssignExpr_parser_prod___ASendExpr___empty_init = "new ABraAssignExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ABraAssignExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ABraAssignExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___empty_init = "new ABraAssignExpr parser_prod::ABraAssignExpr::empty_init";
+val_t NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___empty_init(void);
+typedef val_t (*NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr = "new ABraAssignExpr parser_prod::ABraAssignExpr::init_abraassignexpr";
+val_t NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_NEW_ABraAssignExpr_parser_nodes___ANode___init = "new ABraAssignExpr parser_nodes::ANode::init";
+val_t NEW_ABraAssignExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ABraAssignExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ABraAssignExpr_parser_prod___ASendExpr___init_asendexpr = "new ABraAssignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ABraAssignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ABraAssignExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AVarFormExpr = "init var of AVarFormExpr";
+void INIT_ATTRIBUTES__AVarFormExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AVarFormExpr_t)(val_t p0);
+val_t NEW_AVarFormExpr(void);
+static const char * const LOCATE_CHECKNEW_AVarFormExpr = "check new AVarFormExpr";
+void CHECKNEW_AVarFormExpr(val_t p0);
+typedef void (*CHECKNEW_AVarFormExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AVarFormExpr_parser_nodes___ANode___init = "new AVarFormExpr parser_nodes::ANode::init";
+val_t NEW_AVarFormExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AVarFormExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ABraReassignExpr = "init var of ABraReassignExpr";
+void INIT_ATTRIBUTES__ABraReassignExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ABraReassignExpr_t)(val_t p0);
+val_t NEW_ABraReassignExpr(void);
+static const char * const LOCATE_CHECKNEW_ABraReassignExpr = "check new ABraReassignExpr";
+void CHECKNEW_ABraReassignExpr(val_t p0);
+typedef void (*CHECKNEW_ABraReassignExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ABraReassignExpr_parser_prod___ASendExpr___empty_init = "new ABraReassignExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ABraReassignExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ABraReassignExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___empty_init = "new ABraReassignExpr parser_prod::ABraReassignExpr::empty_init";
+val_t NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___empty_init(void);
+typedef val_t (*NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr = "new ABraReassignExpr parser_prod::ABraReassignExpr::init_abrareassignexpr";
+val_t NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_NEW_ABraReassignExpr_parser_nodes___ANode___init = "new ABraReassignExpr parser_nodes::ANode::init";
+val_t NEW_ABraReassignExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ABraReassignExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ABraReassignExpr_parser_prod___ASendExpr___init_asendexpr = "new ABraReassignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ABraReassignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ABraReassignExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AClosureCallExpr = "init var of AClosureCallExpr";
+void INIT_ATTRIBUTES__AClosureCallExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AClosureCallExpr_t)(val_t p0);
+val_t NEW_AClosureCallExpr(void);
+static const char * const LOCATE_CHECKNEW_AClosureCallExpr = "check new AClosureCallExpr";
+void CHECKNEW_AClosureCallExpr(val_t p0);
+typedef void (*CHECKNEW_AClosureCallExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___init_aclosurecallexpr = "new AClosureCallExpr parser_prod::AClosureCallExpr::init_aclosurecallexpr";
+val_t NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___init_aclosurecallexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___empty_init = "new AClosureCallExpr parser_prod::AClosureCallExpr::empty_init";
+val_t NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___empty_init(void);
+typedef val_t (*NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AClosureCallExpr_parser_nodes___ANode___init = "new AClosureCallExpr parser_nodes::ANode::init";
+val_t NEW_AClosureCallExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AClosureCallExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AVarExpr = "init var of AVarExpr";
+void INIT_ATTRIBUTES__AVarExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AVarExpr_t)(val_t p0);
+val_t NEW_AVarExpr(void);
+static const char * const LOCATE_CHECKNEW_AVarExpr = "check new AVarExpr";
+void CHECKNEW_AVarExpr(val_t p0);
+typedef void (*CHECKNEW_AVarExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AVarExpr_parser_prod___AVarExpr___init_avarexpr = "new AVarExpr parser_prod::AVarExpr::init_avarexpr";
+val_t NEW_AVarExpr_parser_prod___AVarExpr___init_avarexpr(val_t p0);
+typedef val_t (*NEW_AVarExpr_parser_prod___AVarExpr___init_avarexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AVarExpr_parser_prod___AVarExpr___empty_init = "new AVarExpr parser_prod::AVarExpr::empty_init";
+val_t NEW_AVarExpr_parser_prod___AVarExpr___empty_init(void);
+typedef val_t (*NEW_AVarExpr_parser_prod___AVarExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AVarExpr_parser_nodes___ANode___init = "new AVarExpr parser_nodes::ANode::init";
+val_t NEW_AVarExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AVarExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AVarAssignExpr = "init var of AVarAssignExpr";
+void INIT_ATTRIBUTES__AVarAssignExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AVarAssignExpr_t)(val_t p0);
+val_t NEW_AVarAssignExpr(void);
+static const char * const LOCATE_CHECKNEW_AVarAssignExpr = "check new AVarAssignExpr";
+void CHECKNEW_AVarAssignExpr(val_t p0);
+typedef void (*CHECKNEW_AVarAssignExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___init_avarassignexpr = "new AVarAssignExpr parser_prod::AVarAssignExpr::init_avarassignexpr";
+val_t NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___init_avarassignexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___init_avarassignexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___empty_init = "new AVarAssignExpr parser_prod::AVarAssignExpr::empty_init";
+val_t NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___empty_init(void);
+typedef val_t (*NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AVarAssignExpr_parser_nodes___ANode___init = "new AVarAssignExpr parser_nodes::ANode::init";
+val_t NEW_AVarAssignExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AVarAssignExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AVarReassignExpr = "init var of AVarReassignExpr";
+void INIT_ATTRIBUTES__AVarReassignExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AVarReassignExpr_t)(val_t p0);
+val_t NEW_AVarReassignExpr(void);
+static const char * const LOCATE_CHECKNEW_AVarReassignExpr = "check new AVarReassignExpr";
+void CHECKNEW_AVarReassignExpr(val_t p0);
+typedef void (*CHECKNEW_AVarReassignExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___init_avarreassignexpr = "new AVarReassignExpr parser_prod::AVarReassignExpr::init_avarreassignexpr";
+val_t NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___init_avarreassignexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___empty_init = "new AVarReassignExpr parser_prod::AVarReassignExpr::empty_init";
+val_t NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___empty_init(void);
+typedef val_t (*NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AVarReassignExpr_parser_nodes___ANode___init = "new AVarReassignExpr parser_nodes::ANode::init";
+val_t NEW_AVarReassignExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AVarReassignExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ARangeExpr = "init var of ARangeExpr";
+void INIT_ATTRIBUTES__ARangeExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ARangeExpr_t)(val_t p0);
+val_t NEW_ARangeExpr(void);
+static const char * const LOCATE_CHECKNEW_ARangeExpr = "check new ARangeExpr";
+void CHECKNEW_ARangeExpr(val_t p0);
+typedef void (*CHECKNEW_ARangeExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ARangeExpr_parser_prod___ARangeExpr___empty_init = "new ARangeExpr parser_prod::ARangeExpr::empty_init";
+val_t NEW_ARangeExpr_parser_prod___ARangeExpr___empty_init(void);
+typedef val_t (*NEW_ARangeExpr_parser_prod___ARangeExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ARangeExpr_parser_prod___ARangeExpr___init_arangeexpr = "new ARangeExpr parser_prod::ARangeExpr::init_arangeexpr";
+val_t NEW_ARangeExpr_parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ARangeExpr_parser_prod___ARangeExpr___init_arangeexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ARangeExpr_parser_nodes___ANode___init = "new ARangeExpr parser_nodes::ANode::init";
+val_t NEW_ARangeExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ARangeExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ACrangeExpr = "init var of ACrangeExpr";
+void INIT_ATTRIBUTES__ACrangeExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ACrangeExpr_t)(val_t p0);
+val_t NEW_ACrangeExpr(void);
+static const char * const LOCATE_CHECKNEW_ACrangeExpr = "check new ACrangeExpr";
+void CHECKNEW_ACrangeExpr(val_t p0);
+typedef void (*CHECKNEW_ACrangeExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ACrangeExpr_parser_prod___ARangeExpr___empty_init = "new ACrangeExpr parser_prod::ARangeExpr::empty_init";
+val_t NEW_ACrangeExpr_parser_prod___ARangeExpr___empty_init(void);
+typedef val_t (*NEW_ACrangeExpr_parser_prod___ARangeExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ACrangeExpr_parser_prod___ACrangeExpr___empty_init = "new ACrangeExpr parser_prod::ACrangeExpr::empty_init";
+val_t NEW_ACrangeExpr_parser_prod___ACrangeExpr___empty_init(void);
+typedef val_t (*NEW_ACrangeExpr_parser_prod___ACrangeExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ACrangeExpr_parser_prod___ACrangeExpr___init_acrangeexpr = "new ACrangeExpr parser_prod::ACrangeExpr::init_acrangeexpr";
+val_t NEW_ACrangeExpr_parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ACrangeExpr_parser_prod___ACrangeExpr___init_acrangeexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_ACrangeExpr_parser_nodes___ANode___init = "new ACrangeExpr parser_nodes::ANode::init";
+val_t NEW_ACrangeExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ACrangeExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_ACrangeExpr_parser_prod___ARangeExpr___init_arangeexpr = "new ACrangeExpr parser_prod::ARangeExpr::init_arangeexpr";
+val_t NEW_ACrangeExpr_parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_ACrangeExpr_parser_prod___ARangeExpr___init_arangeexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__AOrangeExpr = "init var of AOrangeExpr";
+void INIT_ATTRIBUTES__AOrangeExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AOrangeExpr_t)(val_t p0);
+val_t NEW_AOrangeExpr(void);
+static const char * const LOCATE_CHECKNEW_AOrangeExpr = "check new AOrangeExpr";
+void CHECKNEW_AOrangeExpr(val_t p0);
+typedef void (*CHECKNEW_AOrangeExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AOrangeExpr_parser_prod___ARangeExpr___empty_init = "new AOrangeExpr parser_prod::ARangeExpr::empty_init";
+val_t NEW_AOrangeExpr_parser_prod___ARangeExpr___empty_init(void);
+typedef val_t (*NEW_AOrangeExpr_parser_prod___ARangeExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AOrangeExpr_parser_prod___AOrangeExpr___empty_init = "new AOrangeExpr parser_prod::AOrangeExpr::empty_init";
+val_t NEW_AOrangeExpr_parser_prod___AOrangeExpr___empty_init(void);
+typedef val_t (*NEW_AOrangeExpr_parser_prod___AOrangeExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AOrangeExpr_parser_prod___AOrangeExpr___init_aorangeexpr = "new AOrangeExpr parser_prod::AOrangeExpr::init_aorangeexpr";
+val_t NEW_AOrangeExpr_parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AOrangeExpr_parser_prod___AOrangeExpr___init_aorangeexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AOrangeExpr_parser_nodes___ANode___init = "new AOrangeExpr parser_nodes::ANode::init";
+val_t NEW_AOrangeExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AOrangeExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AOrangeExpr_parser_prod___ARangeExpr___init_arangeexpr = "new AOrangeExpr parser_prod::ARangeExpr::init_arangeexpr";
+val_t NEW_AOrangeExpr_parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1);
+typedef val_t (*NEW_AOrangeExpr_parser_prod___ARangeExpr___init_arangeexpr_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__AArrayExpr = "init var of AArrayExpr";
+void INIT_ATTRIBUTES__AArrayExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AArrayExpr_t)(val_t p0);
+val_t NEW_AArrayExpr(void);
+static const char * const LOCATE_CHECKNEW_AArrayExpr = "check new AArrayExpr";
+void CHECKNEW_AArrayExpr(val_t p0);
+typedef void (*CHECKNEW_AArrayExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AArrayExpr_parser_prod___AArrayExpr___empty_init = "new AArrayExpr parser_prod::AArrayExpr::empty_init";
+val_t NEW_AArrayExpr_parser_prod___AArrayExpr___empty_init(void);
+typedef val_t (*NEW_AArrayExpr_parser_prod___AArrayExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AArrayExpr_parser_prod___AArrayExpr___init_aarrayexpr = "new AArrayExpr parser_prod::AArrayExpr::init_aarrayexpr";
+val_t NEW_AArrayExpr_parser_prod___AArrayExpr___init_aarrayexpr(val_t p0);
+typedef val_t (*NEW_AArrayExpr_parser_prod___AArrayExpr___init_aarrayexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AArrayExpr_parser_nodes___ANode___init = "new AArrayExpr parser_nodes::ANode::init";
+val_t NEW_AArrayExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AArrayExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ASelfExpr = "init var of ASelfExpr";
+void INIT_ATTRIBUTES__ASelfExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ASelfExpr_t)(val_t p0);
+val_t NEW_ASelfExpr(void);
+static const char * const LOCATE_CHECKNEW_ASelfExpr = "check new ASelfExpr";
+void CHECKNEW_ASelfExpr(val_t p0);
+typedef void (*CHECKNEW_ASelfExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ASelfExpr_parser_prod___ASelfExpr___empty_init = "new ASelfExpr parser_prod::ASelfExpr::empty_init";
+val_t NEW_ASelfExpr_parser_prod___ASelfExpr___empty_init(void);
+typedef val_t (*NEW_ASelfExpr_parser_prod___ASelfExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr = "new ASelfExpr parser_prod::ASelfExpr::init_aselfexpr";
+val_t NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr(val_t p0);
+typedef val_t (*NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ASelfExpr_parser_nodes___ANode___init = "new ASelfExpr parser_nodes::ANode::init";
+val_t NEW_ASelfExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ASelfExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AImplicitSelfExpr = "init var of AImplicitSelfExpr";
+void INIT_ATTRIBUTES__AImplicitSelfExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AImplicitSelfExpr_t)(val_t p0);
+val_t NEW_AImplicitSelfExpr(void);
+static const char * const LOCATE_CHECKNEW_AImplicitSelfExpr = "check new AImplicitSelfExpr";
+void CHECKNEW_AImplicitSelfExpr(val_t p0);
+typedef void (*CHECKNEW_AImplicitSelfExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___empty_init = "new AImplicitSelfExpr parser_prod::ASelfExpr::empty_init";
+val_t NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___empty_init(void);
+typedef val_t (*NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___empty_init = "new AImplicitSelfExpr parser_prod::AImplicitSelfExpr::empty_init";
+val_t NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___empty_init(void);
+typedef val_t (*NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr = "new AImplicitSelfExpr parser_prod::AImplicitSelfExpr::init_aimplicitselfexpr";
+val_t NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(void);
+typedef val_t (*NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr_t)(void);
+static const char * const LOCATE_NEW_AImplicitSelfExpr_parser_nodes___ANode___init = "new AImplicitSelfExpr parser_nodes::ANode::init";
+val_t NEW_AImplicitSelfExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AImplicitSelfExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___init_aselfexpr = "new AImplicitSelfExpr parser_prod::ASelfExpr::init_aselfexpr";
+val_t NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___init_aselfexpr(val_t p0);
+typedef val_t (*NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___init_aselfexpr_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ATrueExpr = "init var of ATrueExpr";
+void INIT_ATTRIBUTES__ATrueExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ATrueExpr_t)(val_t p0);
+val_t NEW_ATrueExpr(void);
+static const char * const LOCATE_CHECKNEW_ATrueExpr = "check new ATrueExpr";
+void CHECKNEW_ATrueExpr(val_t p0);
+typedef void (*CHECKNEW_ATrueExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ATrueExpr_parser_prod___ATrueExpr___empty_init = "new ATrueExpr parser_prod::ATrueExpr::empty_init";
+val_t NEW_ATrueExpr_parser_prod___ATrueExpr___empty_init(void);
+typedef val_t (*NEW_ATrueExpr_parser_prod___ATrueExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr = "new ATrueExpr parser_prod::ATrueExpr::init_atrueexpr";
+val_t NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr(val_t p0);
+typedef val_t (*NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ATrueExpr_parser_nodes___ANode___init = "new ATrueExpr parser_nodes::ANode::init";
+val_t NEW_ATrueExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ATrueExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AFalseExpr = "init var of AFalseExpr";
+void INIT_ATTRIBUTES__AFalseExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AFalseExpr_t)(val_t p0);
+val_t NEW_AFalseExpr(void);
+static const char * const LOCATE_CHECKNEW_AFalseExpr = "check new AFalseExpr";
+void CHECKNEW_AFalseExpr(val_t p0);
+typedef void (*CHECKNEW_AFalseExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AFalseExpr_parser_prod___AFalseExpr___empty_init = "new AFalseExpr parser_prod::AFalseExpr::empty_init";
+val_t NEW_AFalseExpr_parser_prod___AFalseExpr___empty_init(void);
+typedef val_t (*NEW_AFalseExpr_parser_prod___AFalseExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr = "new AFalseExpr parser_prod::AFalseExpr::init_afalseexpr";
+val_t NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr(val_t p0);
+typedef val_t (*NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AFalseExpr_parser_nodes___ANode___init = "new AFalseExpr parser_nodes::ANode::init";
+val_t NEW_AFalseExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AFalseExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ANullExpr = "init var of ANullExpr";
+void INIT_ATTRIBUTES__ANullExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ANullExpr_t)(val_t p0);
+val_t NEW_ANullExpr(void);
+static const char * const LOCATE_CHECKNEW_ANullExpr = "check new ANullExpr";
+void CHECKNEW_ANullExpr(val_t p0);
+typedef void (*CHECKNEW_ANullExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ANullExpr_parser_prod___ANullExpr___empty_init = "new ANullExpr parser_prod::ANullExpr::empty_init";
+val_t NEW_ANullExpr_parser_prod___ANullExpr___empty_init(void);
+typedef val_t (*NEW_ANullExpr_parser_prod___ANullExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr = "new ANullExpr parser_prod::ANullExpr::init_anullexpr";
+val_t NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr(val_t p0);
+typedef val_t (*NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ANullExpr_parser_nodes___ANode___init = "new ANullExpr parser_nodes::ANode::init";
+val_t NEW_ANullExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ANullExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AIntExpr = "init var of AIntExpr";
+void INIT_ATTRIBUTES__AIntExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AIntExpr_t)(val_t p0);
+val_t NEW_AIntExpr(void);
+static const char * const LOCATE_CHECKNEW_AIntExpr = "check new AIntExpr";
+void CHECKNEW_AIntExpr(val_t p0);
+typedef void (*CHECKNEW_AIntExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AIntExpr_parser_prod___AIntExpr___empty_init = "new AIntExpr parser_prod::AIntExpr::empty_init";
+val_t NEW_AIntExpr_parser_prod___AIntExpr___empty_init(void);
+typedef val_t (*NEW_AIntExpr_parser_prod___AIntExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr = "new AIntExpr parser_prod::AIntExpr::init_aintexpr";
+val_t NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr(val_t p0);
+typedef val_t (*NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AIntExpr_parser_nodes___ANode___init = "new AIntExpr parser_nodes::ANode::init";
+val_t NEW_AIntExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AIntExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AFloatExpr = "init var of AFloatExpr";
+void INIT_ATTRIBUTES__AFloatExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AFloatExpr_t)(val_t p0);
+val_t NEW_AFloatExpr(void);
+static const char * const LOCATE_CHECKNEW_AFloatExpr = "check new AFloatExpr";
+void CHECKNEW_AFloatExpr(val_t p0);
+typedef void (*CHECKNEW_AFloatExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AFloatExpr_parser_prod___AFloatExpr___empty_init = "new AFloatExpr parser_prod::AFloatExpr::empty_init";
+val_t NEW_AFloatExpr_parser_prod___AFloatExpr___empty_init(void);
+typedef val_t (*NEW_AFloatExpr_parser_prod___AFloatExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr = "new AFloatExpr parser_prod::AFloatExpr::init_afloatexpr";
+val_t NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr(val_t p0);
+typedef val_t (*NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AFloatExpr_parser_nodes___ANode___init = "new AFloatExpr parser_nodes::ANode::init";
+val_t NEW_AFloatExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AFloatExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ACharExpr = "init var of ACharExpr";
+void INIT_ATTRIBUTES__ACharExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ACharExpr_t)(val_t p0);
+val_t NEW_ACharExpr(void);
+static const char * const LOCATE_CHECKNEW_ACharExpr = "check new ACharExpr";
+void CHECKNEW_ACharExpr(val_t p0);
+typedef void (*CHECKNEW_ACharExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ACharExpr_parser_prod___ACharExpr___empty_init = "new ACharExpr parser_prod::ACharExpr::empty_init";
+val_t NEW_ACharExpr_parser_prod___ACharExpr___empty_init(void);
+typedef val_t (*NEW_ACharExpr_parser_prod___ACharExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr = "new ACharExpr parser_prod::ACharExpr::init_acharexpr";
+val_t NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr(val_t p0);
+typedef val_t (*NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ACharExpr_parser_nodes___ANode___init = "new ACharExpr parser_nodes::ANode::init";
+val_t NEW_ACharExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ACharExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AStringFormExpr = "init var of AStringFormExpr";
+void INIT_ATTRIBUTES__AStringFormExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AStringFormExpr_t)(val_t p0);
+val_t NEW_AStringFormExpr(void);
+static const char * const LOCATE_CHECKNEW_AStringFormExpr = "check new AStringFormExpr";
+void CHECKNEW_AStringFormExpr(val_t p0);
+typedef void (*CHECKNEW_AStringFormExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AStringFormExpr_parser_nodes___ANode___init = "new AStringFormExpr parser_nodes::ANode::init";
+val_t NEW_AStringFormExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AStringFormExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AStringExpr = "init var of AStringExpr";
+void INIT_ATTRIBUTES__AStringExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AStringExpr_t)(val_t p0);
+val_t NEW_AStringExpr(void);
+static const char * const LOCATE_CHECKNEW_AStringExpr = "check new AStringExpr";
+void CHECKNEW_AStringExpr(val_t p0);
+typedef void (*CHECKNEW_AStringExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AStringExpr_parser_prod___AStringExpr___empty_init = "new AStringExpr parser_prod::AStringExpr::empty_init";
+val_t NEW_AStringExpr_parser_prod___AStringExpr___empty_init(void);
+typedef val_t (*NEW_AStringExpr_parser_prod___AStringExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr = "new AStringExpr parser_prod::AStringExpr::init_astringexpr";
+val_t NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr(val_t p0);
+typedef val_t (*NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AStringExpr_parser_nodes___ANode___init = "new AStringExpr parser_nodes::ANode::init";
+val_t NEW_AStringExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AStringExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AStartStringExpr = "init var of AStartStringExpr";
+void INIT_ATTRIBUTES__AStartStringExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AStartStringExpr_t)(val_t p0);
+val_t NEW_AStartStringExpr(void);
+static const char * const LOCATE_CHECKNEW_AStartStringExpr = "check new AStartStringExpr";
+void CHECKNEW_AStartStringExpr(val_t p0);
+typedef void (*CHECKNEW_AStartStringExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AStartStringExpr_parser_prod___AStartStringExpr___empty_init = "new AStartStringExpr parser_prod::AStartStringExpr::empty_init";
+val_t NEW_AStartStringExpr_parser_prod___AStartStringExpr___empty_init(void);
+typedef val_t (*NEW_AStartStringExpr_parser_prod___AStartStringExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AStartStringExpr_parser_prod___AStartStringExpr___init_astartstringexpr = "new AStartStringExpr parser_prod::AStartStringExpr::init_astartstringexpr";
+val_t NEW_AStartStringExpr_parser_prod___AStartStringExpr___init_astartstringexpr(val_t p0);
+typedef val_t (*NEW_AStartStringExpr_parser_prod___AStartStringExpr___init_astartstringexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AStartStringExpr_parser_nodes___ANode___init = "new AStartStringExpr parser_nodes::ANode::init";
+val_t NEW_AStartStringExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AStartStringExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AMidStringExpr = "init var of AMidStringExpr";
+void INIT_ATTRIBUTES__AMidStringExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AMidStringExpr_t)(val_t p0);
+val_t NEW_AMidStringExpr(void);
+static const char * const LOCATE_CHECKNEW_AMidStringExpr = "check new AMidStringExpr";
+void CHECKNEW_AMidStringExpr(val_t p0);
+typedef void (*CHECKNEW_AMidStringExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AMidStringExpr_parser_prod___AMidStringExpr___empty_init = "new AMidStringExpr parser_prod::AMidStringExpr::empty_init";
+val_t NEW_AMidStringExpr_parser_prod___AMidStringExpr___empty_init(void);
+typedef val_t (*NEW_AMidStringExpr_parser_prod___AMidStringExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AMidStringExpr_parser_prod___AMidStringExpr___init_amidstringexpr = "new AMidStringExpr parser_prod::AMidStringExpr::init_amidstringexpr";
+val_t NEW_AMidStringExpr_parser_prod___AMidStringExpr___init_amidstringexpr(val_t p0);
+typedef val_t (*NEW_AMidStringExpr_parser_prod___AMidStringExpr___init_amidstringexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AMidStringExpr_parser_nodes___ANode___init = "new AMidStringExpr parser_nodes::ANode::init";
+val_t NEW_AMidStringExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AMidStringExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AEndStringExpr = "init var of AEndStringExpr";
+void INIT_ATTRIBUTES__AEndStringExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AEndStringExpr_t)(val_t p0);
+val_t NEW_AEndStringExpr(void);
+static const char * const LOCATE_CHECKNEW_AEndStringExpr = "check new AEndStringExpr";
+void CHECKNEW_AEndStringExpr(val_t p0);
+typedef void (*CHECKNEW_AEndStringExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AEndStringExpr_parser_prod___AEndStringExpr___empty_init = "new AEndStringExpr parser_prod::AEndStringExpr::empty_init";
+val_t NEW_AEndStringExpr_parser_prod___AEndStringExpr___empty_init(void);
+typedef val_t (*NEW_AEndStringExpr_parser_prod___AEndStringExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AEndStringExpr_parser_prod___AEndStringExpr___init_aendstringexpr = "new AEndStringExpr parser_prod::AEndStringExpr::init_aendstringexpr";
+val_t NEW_AEndStringExpr_parser_prod___AEndStringExpr___init_aendstringexpr(val_t p0);
+typedef val_t (*NEW_AEndStringExpr_parser_prod___AEndStringExpr___init_aendstringexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AEndStringExpr_parser_nodes___ANode___init = "new AEndStringExpr parser_nodes::ANode::init";
+val_t NEW_AEndStringExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AEndStringExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ASuperstringExpr = "init var of ASuperstringExpr";
+void INIT_ATTRIBUTES__ASuperstringExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ASuperstringExpr_t)(val_t p0);
+val_t NEW_ASuperstringExpr(void);
+static const char * const LOCATE_CHECKNEW_ASuperstringExpr = "check new ASuperstringExpr";
+void CHECKNEW_ASuperstringExpr(val_t p0);
+typedef void (*CHECKNEW_ASuperstringExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___empty_init = "new ASuperstringExpr parser_prod::ASuperstringExpr::empty_init";
+val_t NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___empty_init(void);
+typedef val_t (*NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr = "new ASuperstringExpr parser_prod::ASuperstringExpr::init_asuperstringexpr";
+val_t NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0);
+typedef val_t (*NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ASuperstringExpr_parser_nodes___ANode___init = "new ASuperstringExpr parser_nodes::ANode::init";
+val_t NEW_ASuperstringExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ASuperstringExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AParExpr = "init var of AParExpr";
+void INIT_ATTRIBUTES__AParExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AParExpr_t)(val_t p0);
+val_t NEW_AParExpr(void);
+static const char * const LOCATE_CHECKNEW_AParExpr = "check new AParExpr";
+void CHECKNEW_AParExpr(val_t p0);
+typedef void (*CHECKNEW_AParExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AParExpr_parser_prod___AParExpr___empty_init = "new AParExpr parser_prod::AParExpr::empty_init";
+val_t NEW_AParExpr_parser_prod___AParExpr___empty_init(void);
+typedef val_t (*NEW_AParExpr_parser_prod___AParExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AParExpr_parser_prod___AParExpr___init_aparexpr = "new AParExpr parser_prod::AParExpr::init_aparexpr";
+val_t NEW_AParExpr_parser_prod___AParExpr___init_aparexpr(val_t p0);
+typedef val_t (*NEW_AParExpr_parser_prod___AParExpr___init_aparexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AParExpr_parser_nodes___ANode___init = "new AParExpr parser_nodes::ANode::init";
+val_t NEW_AParExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AParExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AProxyExpr = "init var of AProxyExpr";
+void INIT_ATTRIBUTES__AProxyExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AProxyExpr_t)(val_t p0);
+val_t NEW_AProxyExpr(void);
+static const char * const LOCATE_CHECKNEW_AProxyExpr = "check new AProxyExpr";
+void CHECKNEW_AProxyExpr(val_t p0);
+typedef void (*CHECKNEW_AProxyExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AProxyExpr_parser_nodes___ANode___init = "new AProxyExpr parser_nodes::ANode::init";
+val_t NEW_AProxyExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AProxyExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAsCastExpr = "init var of AAsCastExpr";
+void INIT_ATTRIBUTES__AAsCastExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAsCastExpr_t)(val_t p0);
+val_t NEW_AAsCastExpr(void);
+static const char * const LOCATE_CHECKNEW_AAsCastExpr = "check new AAsCastExpr";
+void CHECKNEW_AAsCastExpr(val_t p0);
+typedef void (*CHECKNEW_AAsCastExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAsCastExpr_parser_prod___AAsCastExpr___empty_init = "new AAsCastExpr parser_prod::AAsCastExpr::empty_init";
+val_t NEW_AAsCastExpr_parser_prod___AAsCastExpr___empty_init(void);
+typedef val_t (*NEW_AAsCastExpr_parser_prod___AAsCastExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr = "new AAsCastExpr parser_prod::AAsCastExpr::init_aascastexpr";
+val_t NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AAsCastExpr_parser_nodes___ANode___init = "new AAsCastExpr parser_nodes::ANode::init";
+val_t NEW_AAsCastExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAsCastExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAsNotnullExpr = "init var of AAsNotnullExpr";
+void INIT_ATTRIBUTES__AAsNotnullExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAsNotnullExpr_t)(val_t p0);
+val_t NEW_AAsNotnullExpr(void);
+static const char * const LOCATE_CHECKNEW_AAsNotnullExpr = "check new AAsNotnullExpr";
+void CHECKNEW_AAsNotnullExpr(val_t p0);
+typedef void (*CHECKNEW_AAsNotnullExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___empty_init = "new AAsNotnullExpr parser_prod::AAsNotnullExpr::empty_init";
+val_t NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___empty_init(void);
+typedef val_t (*NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr = "new AAsNotnullExpr parser_prod::AAsNotnullExpr::init_aasnotnullexpr";
+val_t NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_NEW_AAsNotnullExpr_parser_nodes___ANode___init = "new AAsNotnullExpr parser_nodes::ANode::init";
+val_t NEW_AAsNotnullExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAsNotnullExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AIssetAttrExpr = "init var of AIssetAttrExpr";
+void INIT_ATTRIBUTES__AIssetAttrExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AIssetAttrExpr_t)(val_t p0);
+val_t NEW_AIssetAttrExpr(void);
+static const char * const LOCATE_CHECKNEW_AIssetAttrExpr = "check new AIssetAttrExpr";
+void CHECKNEW_AIssetAttrExpr(val_t p0);
+typedef void (*CHECKNEW_AIssetAttrExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___empty_init = "new AIssetAttrExpr parser_prod::AIssetAttrExpr::empty_init";
+val_t NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___empty_init(void);
+typedef val_t (*NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr = "new AIssetAttrExpr parser_prod::AIssetAttrExpr::init_aissetattrexpr";
+val_t NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_NEW_AIssetAttrExpr_parser_nodes___ANode___init = "new AIssetAttrExpr parser_nodes::ANode::init";
+val_t NEW_AIssetAttrExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AIssetAttrExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAssignOp = "init var of AAssignOp";
+void INIT_ATTRIBUTES__AAssignOp(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAssignOp_t)(val_t p0);
+val_t NEW_AAssignOp(void);
+static const char * const LOCATE_CHECKNEW_AAssignOp = "check new AAssignOp";
+void CHECKNEW_AAssignOp(val_t p0);
+typedef void (*CHECKNEW_AAssignOp_t)(val_t p0);
+static const char * const LOCATE_NEW_AAssignOp_parser_nodes___ANode___init = "new AAssignOp parser_nodes::ANode::init";
+val_t NEW_AAssignOp_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAssignOp_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__APlusAssignOp = "init var of APlusAssignOp";
+void INIT_ATTRIBUTES__APlusAssignOp(val_t p0);
+typedef void (*INIT_ATTRIBUTES__APlusAssignOp_t)(val_t p0);
+val_t NEW_APlusAssignOp(void);
+static const char * const LOCATE_CHECKNEW_APlusAssignOp = "check new APlusAssignOp";
+void CHECKNEW_APlusAssignOp(val_t p0);
+typedef void (*CHECKNEW_APlusAssignOp_t)(val_t p0);
+static const char * const LOCATE_NEW_APlusAssignOp_parser_prod___APlusAssignOp___empty_init = "new APlusAssignOp parser_prod::APlusAssignOp::empty_init";
+val_t NEW_APlusAssignOp_parser_prod___APlusAssignOp___empty_init(void);
+typedef val_t (*NEW_APlusAssignOp_parser_prod___APlusAssignOp___empty_init_t)(void);
+static const char * const LOCATE_NEW_APlusAssignOp_parser_prod___APlusAssignOp___init_aplusassignop = "new APlusAssignOp parser_prod::APlusAssignOp::init_aplusassignop";
+val_t NEW_APlusAssignOp_parser_prod___APlusAssignOp___init_aplusassignop(val_t p0);
+typedef val_t (*NEW_APlusAssignOp_parser_prod___APlusAssignOp___init_aplusassignop_t)(val_t p0);
+static const char * const LOCATE_NEW_APlusAssignOp_parser_nodes___ANode___init = "new APlusAssignOp parser_nodes::ANode::init";
+val_t NEW_APlusAssignOp_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_APlusAssignOp_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AMinusAssignOp = "init var of AMinusAssignOp";
+void INIT_ATTRIBUTES__AMinusAssignOp(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AMinusAssignOp_t)(val_t p0);
+val_t NEW_AMinusAssignOp(void);
+static const char * const LOCATE_CHECKNEW_AMinusAssignOp = "check new AMinusAssignOp";
+void CHECKNEW_AMinusAssignOp(val_t p0);
+typedef void (*CHECKNEW_AMinusAssignOp_t)(val_t p0);
+static const char * const LOCATE_NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___empty_init = "new AMinusAssignOp parser_prod::AMinusAssignOp::empty_init";
+val_t NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___empty_init(void);
+typedef val_t (*NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___empty_init_t)(void);
+static const char * const LOCATE_NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___init_aminusassignop = "new AMinusAssignOp parser_prod::AMinusAssignOp::init_aminusassignop";
+val_t NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___init_aminusassignop(val_t p0);
+typedef val_t (*NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___init_aminusassignop_t)(val_t p0);
+static const char * const LOCATE_NEW_AMinusAssignOp_parser_nodes___ANode___init = "new AMinusAssignOp parser_nodes::ANode::init";
+val_t NEW_AMinusAssignOp_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AMinusAssignOp_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AClosureDef = "init var of AClosureDef";
+void INIT_ATTRIBUTES__AClosureDef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AClosureDef_t)(val_t p0);
+val_t NEW_AClosureDef(void);
+static const char * const LOCATE_CHECKNEW_AClosureDef = "check new AClosureDef";
+void CHECKNEW_AClosureDef(val_t p0);
+typedef void (*CHECKNEW_AClosureDef_t)(val_t p0);
+static const char * const LOCATE_NEW_AClosureDef_parser_prod___AClosureDef___empty_init = "new AClosureDef parser_prod::AClosureDef::empty_init";
+val_t NEW_AClosureDef_parser_prod___AClosureDef___empty_init(void);
+typedef val_t (*NEW_AClosureDef_parser_prod___AClosureDef___empty_init_t)(void);
+static const char * const LOCATE_NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef = "new AClosureDef parser_prod::AClosureDef::init_aclosuredef";
+val_t NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+typedef val_t (*NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5);
+static const char * const LOCATE_NEW_AClosureDef_parser_nodes___ANode___init = "new AClosureDef parser_nodes::ANode::init";
+val_t NEW_AClosureDef_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AClosureDef_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AClosureId = "init var of AClosureId";
+void INIT_ATTRIBUTES__AClosureId(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AClosureId_t)(val_t p0);
+val_t NEW_AClosureId(void);
+static const char * const LOCATE_CHECKNEW_AClosureId = "check new AClosureId";
+void CHECKNEW_AClosureId(val_t p0);
+typedef void (*CHECKNEW_AClosureId_t)(val_t p0);
+static const char * const LOCATE_NEW_AClosureId_parser_nodes___ANode___init = "new AClosureId parser_nodes::ANode::init";
+val_t NEW_AClosureId_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AClosureId_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ASimpleClosureId = "init var of ASimpleClosureId";
+void INIT_ATTRIBUTES__ASimpleClosureId(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ASimpleClosureId_t)(val_t p0);
+val_t NEW_ASimpleClosureId(void);
+static const char * const LOCATE_CHECKNEW_ASimpleClosureId = "check new ASimpleClosureId";
+void CHECKNEW_ASimpleClosureId(val_t p0);
+typedef void (*CHECKNEW_ASimpleClosureId_t)(val_t p0);
+static const char * const LOCATE_NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___empty_init = "new ASimpleClosureId parser_prod::ASimpleClosureId::empty_init";
+val_t NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___empty_init(void);
+typedef val_t (*NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___init_asimpleclosureid = "new ASimpleClosureId parser_prod::ASimpleClosureId::init_asimpleclosureid";
+val_t NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___init_asimpleclosureid(val_t p0);
+typedef val_t (*NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___init_asimpleclosureid_t)(val_t p0);
+static const char * const LOCATE_NEW_ASimpleClosureId_parser_nodes___ANode___init = "new ASimpleClosureId parser_nodes::ANode::init";
+val_t NEW_ASimpleClosureId_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ASimpleClosureId_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ABreakClosureId = "init var of ABreakClosureId";
+void INIT_ATTRIBUTES__ABreakClosureId(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ABreakClosureId_t)(val_t p0);
+val_t NEW_ABreakClosureId(void);
+static const char * const LOCATE_CHECKNEW_ABreakClosureId = "check new ABreakClosureId";
+void CHECKNEW_ABreakClosureId(val_t p0);
+typedef void (*CHECKNEW_ABreakClosureId_t)(val_t p0);
+static const char * const LOCATE_NEW_ABreakClosureId_parser_prod___ABreakClosureId___empty_init = "new ABreakClosureId parser_prod::ABreakClosureId::empty_init";
+val_t NEW_ABreakClosureId_parser_prod___ABreakClosureId___empty_init(void);
+typedef val_t (*NEW_ABreakClosureId_parser_prod___ABreakClosureId___empty_init_t)(void);
+static const char * const LOCATE_NEW_ABreakClosureId_parser_prod___ABreakClosureId___init_abreakclosureid = "new ABreakClosureId parser_prod::ABreakClosureId::init_abreakclosureid";
+val_t NEW_ABreakClosureId_parser_prod___ABreakClosureId___init_abreakclosureid(val_t p0);
+typedef val_t (*NEW_ABreakClosureId_parser_prod___ABreakClosureId___init_abreakclosureid_t)(val_t p0);
+static const char * const LOCATE_NEW_ABreakClosureId_parser_nodes___ANode___init = "new ABreakClosureId parser_nodes::ANode::init";
+val_t NEW_ABreakClosureId_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ABreakClosureId_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AQualified = "init var of AQualified";
+void INIT_ATTRIBUTES__AQualified(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AQualified_t)(val_t p0);
+val_t NEW_AQualified(void);
+static const char * const LOCATE_CHECKNEW_AQualified = "check new AQualified";
+void CHECKNEW_AQualified(val_t p0);
+typedef void (*CHECKNEW_AQualified_t)(val_t p0);
+static const char * const LOCATE_NEW_AQualified_parser_prod___AQualified___empty_init = "new AQualified parser_prod::AQualified::empty_init";
+val_t NEW_AQualified_parser_prod___AQualified___empty_init(void);
+typedef val_t (*NEW_AQualified_parser_prod___AQualified___empty_init_t)(void);
+static const char * const LOCATE_NEW_AQualified_parser_prod___AQualified___init_aqualified = "new AQualified parser_prod::AQualified::init_aqualified";
+val_t NEW_AQualified_parser_prod___AQualified___init_aqualified(val_t p0, val_t p1);
+typedef val_t (*NEW_AQualified_parser_prod___AQualified___init_aqualified_t)(val_t p0, val_t p1);
+static const char * const LOCATE_NEW_AQualified_parser_nodes___ANode___init = "new AQualified parser_nodes::ANode::init";
+val_t NEW_AQualified_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AQualified_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ADoc = "init var of ADoc";
+void INIT_ATTRIBUTES__ADoc(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ADoc_t)(val_t p0);
+val_t NEW_ADoc(void);
+static const char * const LOCATE_CHECKNEW_ADoc = "check new ADoc";
+void CHECKNEW_ADoc(val_t p0);
+typedef void (*CHECKNEW_ADoc_t)(val_t p0);
+static const char * const LOCATE_NEW_ADoc_parser_prod___ADoc___empty_init = "new ADoc parser_prod::ADoc::empty_init";
+val_t NEW_ADoc_parser_prod___ADoc___empty_init(void);
+typedef val_t (*NEW_ADoc_parser_prod___ADoc___empty_init_t)(void);
+static const char * const LOCATE_NEW_ADoc_parser_prod___ADoc___init_adoc = "new ADoc parser_prod::ADoc::init_adoc";
+val_t NEW_ADoc_parser_prod___ADoc___init_adoc(val_t p0);
+typedef val_t (*NEW_ADoc_parser_prod___ADoc___init_adoc_t)(val_t p0);
+static const char * const LOCATE_NEW_ADoc_parser_nodes___ANode___init = "new ADoc parser_nodes::ANode::init";
+val_t NEW_ADoc_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ADoc_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__Start = "init var of Start";
+void INIT_ATTRIBUTES__Start(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Start_t)(val_t p0);
+val_t NEW_Start(void);
+static const char * const LOCATE_CHECKNEW_Start = "check new Start";
+void CHECKNEW_Start(val_t p0);
+typedef void (*CHECKNEW_Start_t)(val_t p0);
+static const char * const LOCATE_NEW_Start_parser_nodes___ANode___init = "new Start parser_nodes::ANode::init";
+val_t NEW_Start_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_Start_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_NEW_Start_parser_prod___Start___init = "new Start parser_prod::Start::init";
+val_t NEW_Start_parser_prod___Start___init(val_t p0, val_t p1);
+typedef val_t (*NEW_Start_parser_prod___Start___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__Lexer = "init var of Lexer";
+void INIT_ATTRIBUTES__Lexer(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Lexer_t)(val_t p0);
+val_t NEW_Lexer(void);
+static const char * const LOCATE_CHECKNEW_Lexer = "check new Lexer";
+void CHECKNEW_Lexer(val_t p0);
+typedef void (*CHECKNEW_Lexer_t)(val_t p0);
+static const char * const LOCATE_NEW_Lexer_lexer___Lexer___init = "new Lexer lexer::Lexer::init";
+val_t NEW_Lexer_lexer___Lexer___init(val_t p0, val_t p1);
+typedef val_t (*NEW_Lexer_lexer___Lexer___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__Visitor = "init var of Visitor";
+void INIT_ATTRIBUTES__Visitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Visitor_t)(val_t p0);
+val_t NEW_Visitor(void);
+static const char * const LOCATE_CHECKNEW_Visitor = "check new Visitor";
+void CHECKNEW_Visitor(val_t p0);
+typedef void (*CHECKNEW_Visitor_t)(val_t p0);
+static const char * const LOCATE_NEW_Visitor_parser_prod___Visitor___init = "new Visitor parser_prod::Visitor::init";
+val_t NEW_Visitor_parser_prod___Visitor___init(void);
+typedef val_t (*NEW_Visitor_parser_prod___Visitor___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__State = "init var of State";
+void INIT_ATTRIBUTES__State(val_t p0);
+typedef void (*INIT_ATTRIBUTES__State_t)(val_t p0);
+val_t NEW_State(void);
+static const char * const LOCATE_CHECKNEW_State = "check new State";
+void CHECKNEW_State(val_t p0);
+typedef void (*CHECKNEW_State_t)(val_t p0);
+static const char * const LOCATE_NEW_State_parser___State___init = "new State parser::State::init";
+val_t NEW_State_parser___State___init(val_t p0, val_t p1);
+typedef val_t (*NEW_State_parser___State___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__Parser = "init var of Parser";
+void INIT_ATTRIBUTES__Parser(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Parser_t)(val_t p0);
+val_t NEW_Parser(void);
+static const char * const LOCATE_CHECKNEW_Parser = "check new Parser";
+void CHECKNEW_Parser(val_t p0);
+typedef void (*CHECKNEW_Parser_t)(val_t p0);
+static const char * const LOCATE_NEW_Parser_parser___Parser___init = "new Parser parser::Parser::init";
+val_t NEW_Parser_parser___Parser___init(val_t p0);
+typedef val_t (*NEW_Parser_parser___Parser___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ComputeProdLocationVisitor = "init var of ComputeProdLocationVisitor";
+void INIT_ATTRIBUTES__ComputeProdLocationVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ComputeProdLocationVisitor_t)(val_t p0);
+val_t NEW_ComputeProdLocationVisitor(void);
+static const char * const LOCATE_CHECKNEW_ComputeProdLocationVisitor = "check new ComputeProdLocationVisitor";
+void CHECKNEW_ComputeProdLocationVisitor(val_t p0);
+typedef void (*CHECKNEW_ComputeProdLocationVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init = "new ComputeProdLocationVisitor parser::ComputeProdLocationVisitor::init";
+val_t NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init(void);
+typedef val_t (*NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction0 = "init var of ReduceAction0";
+void INIT_ATTRIBUTES__ReduceAction0(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction0_t)(val_t p0);
+val_t NEW_ReduceAction0(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction0 = "check new ReduceAction0";
+void CHECKNEW_ReduceAction0(val_t p0);
+typedef void (*CHECKNEW_ReduceAction0_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction0_parser___ReduceAction0___init = "new ReduceAction0 parser::ReduceAction0::init";
+val_t NEW_ReduceAction0_parser___ReduceAction0___init(val_t p0);
+typedef val_t (*NEW_ReduceAction0_parser___ReduceAction0___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction1 = "init var of ReduceAction1";
+void INIT_ATTRIBUTES__ReduceAction1(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction1_t)(val_t p0);
+val_t NEW_ReduceAction1(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction1 = "check new ReduceAction1";
+void CHECKNEW_ReduceAction1(val_t p0);
+typedef void (*CHECKNEW_ReduceAction1_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction1_parser___ReduceAction1___init = "new ReduceAction1 parser::ReduceAction1::init";
+val_t NEW_ReduceAction1_parser___ReduceAction1___init(val_t p0);
+typedef val_t (*NEW_ReduceAction1_parser___ReduceAction1___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction2 = "init var of ReduceAction2";
+void INIT_ATTRIBUTES__ReduceAction2(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction2_t)(val_t p0);
+val_t NEW_ReduceAction2(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction2 = "check new ReduceAction2";
+void CHECKNEW_ReduceAction2(val_t p0);
+typedef void (*CHECKNEW_ReduceAction2_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction2_parser___ReduceAction2___init = "new ReduceAction2 parser::ReduceAction2::init";
+val_t NEW_ReduceAction2_parser___ReduceAction2___init(val_t p0);
+typedef val_t (*NEW_ReduceAction2_parser___ReduceAction2___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction3 = "init var of ReduceAction3";
+void INIT_ATTRIBUTES__ReduceAction3(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction3_t)(val_t p0);
+val_t NEW_ReduceAction3(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction3 = "check new ReduceAction3";
+void CHECKNEW_ReduceAction3(val_t p0);
+typedef void (*CHECKNEW_ReduceAction3_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction3_parser___ReduceAction3___init = "new ReduceAction3 parser::ReduceAction3::init";
+val_t NEW_ReduceAction3_parser___ReduceAction3___init(val_t p0);
+typedef val_t (*NEW_ReduceAction3_parser___ReduceAction3___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction4 = "init var of ReduceAction4";
+void INIT_ATTRIBUTES__ReduceAction4(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction4_t)(val_t p0);
+val_t NEW_ReduceAction4(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction4 = "check new ReduceAction4";
+void CHECKNEW_ReduceAction4(val_t p0);
+typedef void (*CHECKNEW_ReduceAction4_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction4_parser___ReduceAction4___init = "new ReduceAction4 parser::ReduceAction4::init";
+val_t NEW_ReduceAction4_parser___ReduceAction4___init(val_t p0);
+typedef val_t (*NEW_ReduceAction4_parser___ReduceAction4___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction5 = "init var of ReduceAction5";
+void INIT_ATTRIBUTES__ReduceAction5(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction5_t)(val_t p0);
+val_t NEW_ReduceAction5(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction5 = "check new ReduceAction5";
+void CHECKNEW_ReduceAction5(val_t p0);
+typedef void (*CHECKNEW_ReduceAction5_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction5_parser___ReduceAction5___init = "new ReduceAction5 parser::ReduceAction5::init";
+val_t NEW_ReduceAction5_parser___ReduceAction5___init(val_t p0);
+typedef val_t (*NEW_ReduceAction5_parser___ReduceAction5___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction6 = "init var of ReduceAction6";
+void INIT_ATTRIBUTES__ReduceAction6(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction6_t)(val_t p0);
+val_t NEW_ReduceAction6(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction6 = "check new ReduceAction6";
+void CHECKNEW_ReduceAction6(val_t p0);
+typedef void (*CHECKNEW_ReduceAction6_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction6_parser___ReduceAction6___init = "new ReduceAction6 parser::ReduceAction6::init";
+val_t NEW_ReduceAction6_parser___ReduceAction6___init(val_t p0);
+typedef val_t (*NEW_ReduceAction6_parser___ReduceAction6___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction7 = "init var of ReduceAction7";
+void INIT_ATTRIBUTES__ReduceAction7(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction7_t)(val_t p0);
+val_t NEW_ReduceAction7(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction7 = "check new ReduceAction7";
+void CHECKNEW_ReduceAction7(val_t p0);
+typedef void (*CHECKNEW_ReduceAction7_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction7_parser___ReduceAction7___init = "new ReduceAction7 parser::ReduceAction7::init";
+val_t NEW_ReduceAction7_parser___ReduceAction7___init(val_t p0);
+typedef val_t (*NEW_ReduceAction7_parser___ReduceAction7___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction8 = "init var of ReduceAction8";
+void INIT_ATTRIBUTES__ReduceAction8(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction8_t)(val_t p0);
+val_t NEW_ReduceAction8(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction8 = "check new ReduceAction8";
+void CHECKNEW_ReduceAction8(val_t p0);
+typedef void (*CHECKNEW_ReduceAction8_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction8_parser___ReduceAction8___init = "new ReduceAction8 parser::ReduceAction8::init";
+val_t NEW_ReduceAction8_parser___ReduceAction8___init(val_t p0);
+typedef val_t (*NEW_ReduceAction8_parser___ReduceAction8___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction9 = "init var of ReduceAction9";
+void INIT_ATTRIBUTES__ReduceAction9(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction9_t)(val_t p0);
+val_t NEW_ReduceAction9(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction9 = "check new ReduceAction9";
+void CHECKNEW_ReduceAction9(val_t p0);
+typedef void (*CHECKNEW_ReduceAction9_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction9_parser___ReduceAction9___init = "new ReduceAction9 parser::ReduceAction9::init";
+val_t NEW_ReduceAction9_parser___ReduceAction9___init(val_t p0);
+typedef val_t (*NEW_ReduceAction9_parser___ReduceAction9___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction10 = "init var of ReduceAction10";
+void INIT_ATTRIBUTES__ReduceAction10(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction10_t)(val_t p0);
+val_t NEW_ReduceAction10(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction10 = "check new ReduceAction10";
+void CHECKNEW_ReduceAction10(val_t p0);
+typedef void (*CHECKNEW_ReduceAction10_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction10_parser___ReduceAction10___init = "new ReduceAction10 parser::ReduceAction10::init";
+val_t NEW_ReduceAction10_parser___ReduceAction10___init(val_t p0);
+typedef val_t (*NEW_ReduceAction10_parser___ReduceAction10___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction11 = "init var of ReduceAction11";
+void INIT_ATTRIBUTES__ReduceAction11(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction11_t)(val_t p0);
+val_t NEW_ReduceAction11(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction11 = "check new ReduceAction11";
+void CHECKNEW_ReduceAction11(val_t p0);
+typedef void (*CHECKNEW_ReduceAction11_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction11_parser___ReduceAction11___init = "new ReduceAction11 parser::ReduceAction11::init";
+val_t NEW_ReduceAction11_parser___ReduceAction11___init(val_t p0);
+typedef val_t (*NEW_ReduceAction11_parser___ReduceAction11___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction12 = "init var of ReduceAction12";
+void INIT_ATTRIBUTES__ReduceAction12(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction12_t)(val_t p0);
+val_t NEW_ReduceAction12(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction12 = "check new ReduceAction12";
+void CHECKNEW_ReduceAction12(val_t p0);
+typedef void (*CHECKNEW_ReduceAction12_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction12_parser___ReduceAction12___init = "new ReduceAction12 parser::ReduceAction12::init";
+val_t NEW_ReduceAction12_parser___ReduceAction12___init(val_t p0);
+typedef val_t (*NEW_ReduceAction12_parser___ReduceAction12___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction13 = "init var of ReduceAction13";
+void INIT_ATTRIBUTES__ReduceAction13(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction13_t)(val_t p0);
+val_t NEW_ReduceAction13(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction13 = "check new ReduceAction13";
+void CHECKNEW_ReduceAction13(val_t p0);
+typedef void (*CHECKNEW_ReduceAction13_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction13_parser___ReduceAction13___init = "new ReduceAction13 parser::ReduceAction13::init";
+val_t NEW_ReduceAction13_parser___ReduceAction13___init(val_t p0);
+typedef val_t (*NEW_ReduceAction13_parser___ReduceAction13___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction14 = "init var of ReduceAction14";
+void INIT_ATTRIBUTES__ReduceAction14(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction14_t)(val_t p0);
+val_t NEW_ReduceAction14(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction14 = "check new ReduceAction14";
+void CHECKNEW_ReduceAction14(val_t p0);
+typedef void (*CHECKNEW_ReduceAction14_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction14_parser___ReduceAction14___init = "new ReduceAction14 parser::ReduceAction14::init";
+val_t NEW_ReduceAction14_parser___ReduceAction14___init(val_t p0);
+typedef val_t (*NEW_ReduceAction14_parser___ReduceAction14___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction15 = "init var of ReduceAction15";
+void INIT_ATTRIBUTES__ReduceAction15(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction15_t)(val_t p0);
+val_t NEW_ReduceAction15(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction15 = "check new ReduceAction15";
+void CHECKNEW_ReduceAction15(val_t p0);
+typedef void (*CHECKNEW_ReduceAction15_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction15_parser___ReduceAction15___init = "new ReduceAction15 parser::ReduceAction15::init";
+val_t NEW_ReduceAction15_parser___ReduceAction15___init(val_t p0);
+typedef val_t (*NEW_ReduceAction15_parser___ReduceAction15___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction16 = "init var of ReduceAction16";
+void INIT_ATTRIBUTES__ReduceAction16(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction16_t)(val_t p0);
+val_t NEW_ReduceAction16(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction16 = "check new ReduceAction16";
+void CHECKNEW_ReduceAction16(val_t p0);
+typedef void (*CHECKNEW_ReduceAction16_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction16_parser___ReduceAction16___init = "new ReduceAction16 parser::ReduceAction16::init";
+val_t NEW_ReduceAction16_parser___ReduceAction16___init(val_t p0);
+typedef val_t (*NEW_ReduceAction16_parser___ReduceAction16___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction17 = "init var of ReduceAction17";
+void INIT_ATTRIBUTES__ReduceAction17(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction17_t)(val_t p0);
+val_t NEW_ReduceAction17(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction17 = "check new ReduceAction17";
+void CHECKNEW_ReduceAction17(val_t p0);
+typedef void (*CHECKNEW_ReduceAction17_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction17_parser___ReduceAction17___init = "new ReduceAction17 parser::ReduceAction17::init";
+val_t NEW_ReduceAction17_parser___ReduceAction17___init(val_t p0);
+typedef val_t (*NEW_ReduceAction17_parser___ReduceAction17___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction18 = "init var of ReduceAction18";
+void INIT_ATTRIBUTES__ReduceAction18(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction18_t)(val_t p0);
+val_t NEW_ReduceAction18(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction18 = "check new ReduceAction18";
+void CHECKNEW_ReduceAction18(val_t p0);
+typedef void (*CHECKNEW_ReduceAction18_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction18_parser___ReduceAction18___init = "new ReduceAction18 parser::ReduceAction18::init";
+val_t NEW_ReduceAction18_parser___ReduceAction18___init(val_t p0);
+typedef val_t (*NEW_ReduceAction18_parser___ReduceAction18___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction19 = "init var of ReduceAction19";
+void INIT_ATTRIBUTES__ReduceAction19(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction19_t)(val_t p0);
+val_t NEW_ReduceAction19(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction19 = "check new ReduceAction19";
+void CHECKNEW_ReduceAction19(val_t p0);
+typedef void (*CHECKNEW_ReduceAction19_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction19_parser___ReduceAction19___init = "new ReduceAction19 parser::ReduceAction19::init";
+val_t NEW_ReduceAction19_parser___ReduceAction19___init(val_t p0);
+typedef val_t (*NEW_ReduceAction19_parser___ReduceAction19___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction20 = "init var of ReduceAction20";
+void INIT_ATTRIBUTES__ReduceAction20(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction20_t)(val_t p0);
+val_t NEW_ReduceAction20(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction20 = "check new ReduceAction20";
+void CHECKNEW_ReduceAction20(val_t p0);
+typedef void (*CHECKNEW_ReduceAction20_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction20_parser___ReduceAction20___init = "new ReduceAction20 parser::ReduceAction20::init";
+val_t NEW_ReduceAction20_parser___ReduceAction20___init(val_t p0);
+typedef val_t (*NEW_ReduceAction20_parser___ReduceAction20___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction21 = "init var of ReduceAction21";
+void INIT_ATTRIBUTES__ReduceAction21(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction21_t)(val_t p0);
+val_t NEW_ReduceAction21(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction21 = "check new ReduceAction21";
+void CHECKNEW_ReduceAction21(val_t p0);
+typedef void (*CHECKNEW_ReduceAction21_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction21_parser___ReduceAction21___init = "new ReduceAction21 parser::ReduceAction21::init";
+val_t NEW_ReduceAction21_parser___ReduceAction21___init(val_t p0);
+typedef val_t (*NEW_ReduceAction21_parser___ReduceAction21___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction22 = "init var of ReduceAction22";
+void INIT_ATTRIBUTES__ReduceAction22(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction22_t)(val_t p0);
+val_t NEW_ReduceAction22(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction22 = "check new ReduceAction22";
+void CHECKNEW_ReduceAction22(val_t p0);
+typedef void (*CHECKNEW_ReduceAction22_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction22_parser___ReduceAction22___init = "new ReduceAction22 parser::ReduceAction22::init";
+val_t NEW_ReduceAction22_parser___ReduceAction22___init(val_t p0);
+typedef val_t (*NEW_ReduceAction22_parser___ReduceAction22___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction23 = "init var of ReduceAction23";
+void INIT_ATTRIBUTES__ReduceAction23(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction23_t)(val_t p0);
+val_t NEW_ReduceAction23(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction23 = "check new ReduceAction23";
+void CHECKNEW_ReduceAction23(val_t p0);
+typedef void (*CHECKNEW_ReduceAction23_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction23_parser___ReduceAction23___init = "new ReduceAction23 parser::ReduceAction23::init";
+val_t NEW_ReduceAction23_parser___ReduceAction23___init(val_t p0);
+typedef val_t (*NEW_ReduceAction23_parser___ReduceAction23___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction24 = "init var of ReduceAction24";
+void INIT_ATTRIBUTES__ReduceAction24(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction24_t)(val_t p0);
+val_t NEW_ReduceAction24(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction24 = "check new ReduceAction24";
+void CHECKNEW_ReduceAction24(val_t p0);
+typedef void (*CHECKNEW_ReduceAction24_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction24_parser___ReduceAction24___init = "new ReduceAction24 parser::ReduceAction24::init";
+val_t NEW_ReduceAction24_parser___ReduceAction24___init(val_t p0);
+typedef val_t (*NEW_ReduceAction24_parser___ReduceAction24___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction25 = "init var of ReduceAction25";
+void INIT_ATTRIBUTES__ReduceAction25(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction25_t)(val_t p0);
+val_t NEW_ReduceAction25(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction25 = "check new ReduceAction25";
+void CHECKNEW_ReduceAction25(val_t p0);
+typedef void (*CHECKNEW_ReduceAction25_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction25_parser___ReduceAction25___init = "new ReduceAction25 parser::ReduceAction25::init";
+val_t NEW_ReduceAction25_parser___ReduceAction25___init(val_t p0);
+typedef val_t (*NEW_ReduceAction25_parser___ReduceAction25___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction26 = "init var of ReduceAction26";
+void INIT_ATTRIBUTES__ReduceAction26(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction26_t)(val_t p0);
+val_t NEW_ReduceAction26(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction26 = "check new ReduceAction26";
+void CHECKNEW_ReduceAction26(val_t p0);
+typedef void (*CHECKNEW_ReduceAction26_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction26_parser___ReduceAction26___init = "new ReduceAction26 parser::ReduceAction26::init";
+val_t NEW_ReduceAction26_parser___ReduceAction26___init(val_t p0);
+typedef val_t (*NEW_ReduceAction26_parser___ReduceAction26___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction27 = "init var of ReduceAction27";
+void INIT_ATTRIBUTES__ReduceAction27(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction27_t)(val_t p0);
+val_t NEW_ReduceAction27(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction27 = "check new ReduceAction27";
+void CHECKNEW_ReduceAction27(val_t p0);
+typedef void (*CHECKNEW_ReduceAction27_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction27_parser___ReduceAction27___init = "new ReduceAction27 parser::ReduceAction27::init";
+val_t NEW_ReduceAction27_parser___ReduceAction27___init(val_t p0);
+typedef val_t (*NEW_ReduceAction27_parser___ReduceAction27___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction28 = "init var of ReduceAction28";
+void INIT_ATTRIBUTES__ReduceAction28(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction28_t)(val_t p0);
+val_t NEW_ReduceAction28(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction28 = "check new ReduceAction28";
+void CHECKNEW_ReduceAction28(val_t p0);
+typedef void (*CHECKNEW_ReduceAction28_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction28_parser___ReduceAction28___init = "new ReduceAction28 parser::ReduceAction28::init";
+val_t NEW_ReduceAction28_parser___ReduceAction28___init(val_t p0);
+typedef val_t (*NEW_ReduceAction28_parser___ReduceAction28___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction29 = "init var of ReduceAction29";
+void INIT_ATTRIBUTES__ReduceAction29(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction29_t)(val_t p0);
+val_t NEW_ReduceAction29(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction29 = "check new ReduceAction29";
+void CHECKNEW_ReduceAction29(val_t p0);
+typedef void (*CHECKNEW_ReduceAction29_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction29_parser___ReduceAction29___init = "new ReduceAction29 parser::ReduceAction29::init";
+val_t NEW_ReduceAction29_parser___ReduceAction29___init(val_t p0);
+typedef val_t (*NEW_ReduceAction29_parser___ReduceAction29___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction30 = "init var of ReduceAction30";
+void INIT_ATTRIBUTES__ReduceAction30(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction30_t)(val_t p0);
+val_t NEW_ReduceAction30(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction30 = "check new ReduceAction30";
+void CHECKNEW_ReduceAction30(val_t p0);
+typedef void (*CHECKNEW_ReduceAction30_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction30_parser___ReduceAction30___init = "new ReduceAction30 parser::ReduceAction30::init";
+val_t NEW_ReduceAction30_parser___ReduceAction30___init(val_t p0);
+typedef val_t (*NEW_ReduceAction30_parser___ReduceAction30___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction31 = "init var of ReduceAction31";
+void INIT_ATTRIBUTES__ReduceAction31(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction31_t)(val_t p0);
+val_t NEW_ReduceAction31(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction31 = "check new ReduceAction31";
+void CHECKNEW_ReduceAction31(val_t p0);
+typedef void (*CHECKNEW_ReduceAction31_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction31_parser___ReduceAction31___init = "new ReduceAction31 parser::ReduceAction31::init";
+val_t NEW_ReduceAction31_parser___ReduceAction31___init(val_t p0);
+typedef val_t (*NEW_ReduceAction31_parser___ReduceAction31___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction32 = "init var of ReduceAction32";
+void INIT_ATTRIBUTES__ReduceAction32(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction32_t)(val_t p0);
+val_t NEW_ReduceAction32(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction32 = "check new ReduceAction32";
+void CHECKNEW_ReduceAction32(val_t p0);
+typedef void (*CHECKNEW_ReduceAction32_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction32_parser___ReduceAction32___init = "new ReduceAction32 parser::ReduceAction32::init";
+val_t NEW_ReduceAction32_parser___ReduceAction32___init(val_t p0);
+typedef val_t (*NEW_ReduceAction32_parser___ReduceAction32___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction33 = "init var of ReduceAction33";
+void INIT_ATTRIBUTES__ReduceAction33(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction33_t)(val_t p0);
+val_t NEW_ReduceAction33(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction33 = "check new ReduceAction33";
+void CHECKNEW_ReduceAction33(val_t p0);
+typedef void (*CHECKNEW_ReduceAction33_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction33_parser___ReduceAction33___init = "new ReduceAction33 parser::ReduceAction33::init";
+val_t NEW_ReduceAction33_parser___ReduceAction33___init(val_t p0);
+typedef val_t (*NEW_ReduceAction33_parser___ReduceAction33___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction34 = "init var of ReduceAction34";
+void INIT_ATTRIBUTES__ReduceAction34(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction34_t)(val_t p0);
+val_t NEW_ReduceAction34(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction34 = "check new ReduceAction34";
+void CHECKNEW_ReduceAction34(val_t p0);
+typedef void (*CHECKNEW_ReduceAction34_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction34_parser___ReduceAction34___init = "new ReduceAction34 parser::ReduceAction34::init";
+val_t NEW_ReduceAction34_parser___ReduceAction34___init(val_t p0);
+typedef val_t (*NEW_ReduceAction34_parser___ReduceAction34___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction35 = "init var of ReduceAction35";
+void INIT_ATTRIBUTES__ReduceAction35(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction35_t)(val_t p0);
+val_t NEW_ReduceAction35(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction35 = "check new ReduceAction35";
+void CHECKNEW_ReduceAction35(val_t p0);
+typedef void (*CHECKNEW_ReduceAction35_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction35_parser___ReduceAction35___init = "new ReduceAction35 parser::ReduceAction35::init";
+val_t NEW_ReduceAction35_parser___ReduceAction35___init(val_t p0);
+typedef val_t (*NEW_ReduceAction35_parser___ReduceAction35___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction36 = "init var of ReduceAction36";
+void INIT_ATTRIBUTES__ReduceAction36(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction36_t)(val_t p0);
+val_t NEW_ReduceAction36(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction36 = "check new ReduceAction36";
+void CHECKNEW_ReduceAction36(val_t p0);
+typedef void (*CHECKNEW_ReduceAction36_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction36_parser___ReduceAction36___init = "new ReduceAction36 parser::ReduceAction36::init";
+val_t NEW_ReduceAction36_parser___ReduceAction36___init(val_t p0);
+typedef val_t (*NEW_ReduceAction36_parser___ReduceAction36___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction37 = "init var of ReduceAction37";
+void INIT_ATTRIBUTES__ReduceAction37(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction37_t)(val_t p0);
+val_t NEW_ReduceAction37(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction37 = "check new ReduceAction37";
+void CHECKNEW_ReduceAction37(val_t p0);
+typedef void (*CHECKNEW_ReduceAction37_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction37_parser___ReduceAction37___init = "new ReduceAction37 parser::ReduceAction37::init";
+val_t NEW_ReduceAction37_parser___ReduceAction37___init(val_t p0);
+typedef val_t (*NEW_ReduceAction37_parser___ReduceAction37___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction39 = "init var of ReduceAction39";
+void INIT_ATTRIBUTES__ReduceAction39(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction39_t)(val_t p0);
+val_t NEW_ReduceAction39(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction39 = "check new ReduceAction39";
+void CHECKNEW_ReduceAction39(val_t p0);
+typedef void (*CHECKNEW_ReduceAction39_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction39_parser___ReduceAction39___init = "new ReduceAction39 parser::ReduceAction39::init";
+val_t NEW_ReduceAction39_parser___ReduceAction39___init(val_t p0);
+typedef val_t (*NEW_ReduceAction39_parser___ReduceAction39___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction40 = "init var of ReduceAction40";
+void INIT_ATTRIBUTES__ReduceAction40(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction40_t)(val_t p0);
+val_t NEW_ReduceAction40(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction40 = "check new ReduceAction40";
+void CHECKNEW_ReduceAction40(val_t p0);
+typedef void (*CHECKNEW_ReduceAction40_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction40_parser___ReduceAction40___init = "new ReduceAction40 parser::ReduceAction40::init";
+val_t NEW_ReduceAction40_parser___ReduceAction40___init(val_t p0);
+typedef val_t (*NEW_ReduceAction40_parser___ReduceAction40___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction41 = "init var of ReduceAction41";
+void INIT_ATTRIBUTES__ReduceAction41(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction41_t)(val_t p0);
+val_t NEW_ReduceAction41(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction41 = "check new ReduceAction41";
+void CHECKNEW_ReduceAction41(val_t p0);
+typedef void (*CHECKNEW_ReduceAction41_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction41_parser___ReduceAction41___init = "new ReduceAction41 parser::ReduceAction41::init";
+val_t NEW_ReduceAction41_parser___ReduceAction41___init(val_t p0);
+typedef val_t (*NEW_ReduceAction41_parser___ReduceAction41___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction42 = "init var of ReduceAction42";
+void INIT_ATTRIBUTES__ReduceAction42(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction42_t)(val_t p0);
+val_t NEW_ReduceAction42(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction42 = "check new ReduceAction42";
+void CHECKNEW_ReduceAction42(val_t p0);
+typedef void (*CHECKNEW_ReduceAction42_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction42_parser___ReduceAction42___init = "new ReduceAction42 parser::ReduceAction42::init";
+val_t NEW_ReduceAction42_parser___ReduceAction42___init(val_t p0);
+typedef val_t (*NEW_ReduceAction42_parser___ReduceAction42___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction43 = "init var of ReduceAction43";
+void INIT_ATTRIBUTES__ReduceAction43(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction43_t)(val_t p0);
+val_t NEW_ReduceAction43(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction43 = "check new ReduceAction43";
+void CHECKNEW_ReduceAction43(val_t p0);
+typedef void (*CHECKNEW_ReduceAction43_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction43_parser___ReduceAction43___init = "new ReduceAction43 parser::ReduceAction43::init";
+val_t NEW_ReduceAction43_parser___ReduceAction43___init(val_t p0);
+typedef val_t (*NEW_ReduceAction43_parser___ReduceAction43___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction44 = "init var of ReduceAction44";
+void INIT_ATTRIBUTES__ReduceAction44(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction44_t)(val_t p0);
+val_t NEW_ReduceAction44(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction44 = "check new ReduceAction44";
+void CHECKNEW_ReduceAction44(val_t p0);
+typedef void (*CHECKNEW_ReduceAction44_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction44_parser___ReduceAction44___init = "new ReduceAction44 parser::ReduceAction44::init";
+val_t NEW_ReduceAction44_parser___ReduceAction44___init(val_t p0);
+typedef val_t (*NEW_ReduceAction44_parser___ReduceAction44___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction45 = "init var of ReduceAction45";
+void INIT_ATTRIBUTES__ReduceAction45(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction45_t)(val_t p0);
+val_t NEW_ReduceAction45(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction45 = "check new ReduceAction45";
+void CHECKNEW_ReduceAction45(val_t p0);
+typedef void (*CHECKNEW_ReduceAction45_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction45_parser___ReduceAction45___init = "new ReduceAction45 parser::ReduceAction45::init";
+val_t NEW_ReduceAction45_parser___ReduceAction45___init(val_t p0);
+typedef val_t (*NEW_ReduceAction45_parser___ReduceAction45___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction46 = "init var of ReduceAction46";
+void INIT_ATTRIBUTES__ReduceAction46(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction46_t)(val_t p0);
+val_t NEW_ReduceAction46(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction46 = "check new ReduceAction46";
+void CHECKNEW_ReduceAction46(val_t p0);
+typedef void (*CHECKNEW_ReduceAction46_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction46_parser___ReduceAction46___init = "new ReduceAction46 parser::ReduceAction46::init";
+val_t NEW_ReduceAction46_parser___ReduceAction46___init(val_t p0);
+typedef val_t (*NEW_ReduceAction46_parser___ReduceAction46___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction47 = "init var of ReduceAction47";
+void INIT_ATTRIBUTES__ReduceAction47(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction47_t)(val_t p0);
+val_t NEW_ReduceAction47(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction47 = "check new ReduceAction47";
+void CHECKNEW_ReduceAction47(val_t p0);
+typedef void (*CHECKNEW_ReduceAction47_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction47_parser___ReduceAction47___init = "new ReduceAction47 parser::ReduceAction47::init";
+val_t NEW_ReduceAction47_parser___ReduceAction47___init(val_t p0);
+typedef val_t (*NEW_ReduceAction47_parser___ReduceAction47___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction48 = "init var of ReduceAction48";
+void INIT_ATTRIBUTES__ReduceAction48(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction48_t)(val_t p0);
+val_t NEW_ReduceAction48(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction48 = "check new ReduceAction48";
+void CHECKNEW_ReduceAction48(val_t p0);
+typedef void (*CHECKNEW_ReduceAction48_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction48_parser___ReduceAction48___init = "new ReduceAction48 parser::ReduceAction48::init";
+val_t NEW_ReduceAction48_parser___ReduceAction48___init(val_t p0);
+typedef val_t (*NEW_ReduceAction48_parser___ReduceAction48___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction49 = "init var of ReduceAction49";
+void INIT_ATTRIBUTES__ReduceAction49(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction49_t)(val_t p0);
+val_t NEW_ReduceAction49(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction49 = "check new ReduceAction49";
+void CHECKNEW_ReduceAction49(val_t p0);
+typedef void (*CHECKNEW_ReduceAction49_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction49_parser___ReduceAction49___init = "new ReduceAction49 parser::ReduceAction49::init";
+val_t NEW_ReduceAction49_parser___ReduceAction49___init(val_t p0);
+typedef val_t (*NEW_ReduceAction49_parser___ReduceAction49___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction50 = "init var of ReduceAction50";
+void INIT_ATTRIBUTES__ReduceAction50(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction50_t)(val_t p0);
+val_t NEW_ReduceAction50(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction50 = "check new ReduceAction50";
+void CHECKNEW_ReduceAction50(val_t p0);
+typedef void (*CHECKNEW_ReduceAction50_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction50_parser___ReduceAction50___init = "new ReduceAction50 parser::ReduceAction50::init";
+val_t NEW_ReduceAction50_parser___ReduceAction50___init(val_t p0);
+typedef val_t (*NEW_ReduceAction50_parser___ReduceAction50___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction51 = "init var of ReduceAction51";
+void INIT_ATTRIBUTES__ReduceAction51(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction51_t)(val_t p0);
+val_t NEW_ReduceAction51(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction51 = "check new ReduceAction51";
+void CHECKNEW_ReduceAction51(val_t p0);
+typedef void (*CHECKNEW_ReduceAction51_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction51_parser___ReduceAction51___init = "new ReduceAction51 parser::ReduceAction51::init";
+val_t NEW_ReduceAction51_parser___ReduceAction51___init(val_t p0);
+typedef val_t (*NEW_ReduceAction51_parser___ReduceAction51___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction52 = "init var of ReduceAction52";
+void INIT_ATTRIBUTES__ReduceAction52(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction52_t)(val_t p0);
+val_t NEW_ReduceAction52(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction52 = "check new ReduceAction52";
+void CHECKNEW_ReduceAction52(val_t p0);
+typedef void (*CHECKNEW_ReduceAction52_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction52_parser___ReduceAction52___init = "new ReduceAction52 parser::ReduceAction52::init";
+val_t NEW_ReduceAction52_parser___ReduceAction52___init(val_t p0);
+typedef val_t (*NEW_ReduceAction52_parser___ReduceAction52___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction53 = "init var of ReduceAction53";
+void INIT_ATTRIBUTES__ReduceAction53(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction53_t)(val_t p0);
+val_t NEW_ReduceAction53(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction53 = "check new ReduceAction53";
+void CHECKNEW_ReduceAction53(val_t p0);
+typedef void (*CHECKNEW_ReduceAction53_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction53_parser___ReduceAction53___init = "new ReduceAction53 parser::ReduceAction53::init";
+val_t NEW_ReduceAction53_parser___ReduceAction53___init(val_t p0);
+typedef val_t (*NEW_ReduceAction53_parser___ReduceAction53___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction54 = "init var of ReduceAction54";
+void INIT_ATTRIBUTES__ReduceAction54(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction54_t)(val_t p0);
+val_t NEW_ReduceAction54(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction54 = "check new ReduceAction54";
+void CHECKNEW_ReduceAction54(val_t p0);
+typedef void (*CHECKNEW_ReduceAction54_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction54_parser___ReduceAction54___init = "new ReduceAction54 parser::ReduceAction54::init";
+val_t NEW_ReduceAction54_parser___ReduceAction54___init(val_t p0);
+typedef val_t (*NEW_ReduceAction54_parser___ReduceAction54___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction55 = "init var of ReduceAction55";
+void INIT_ATTRIBUTES__ReduceAction55(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction55_t)(val_t p0);
+val_t NEW_ReduceAction55(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction55 = "check new ReduceAction55";
+void CHECKNEW_ReduceAction55(val_t p0);
+typedef void (*CHECKNEW_ReduceAction55_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction55_parser___ReduceAction55___init = "new ReduceAction55 parser::ReduceAction55::init";
+val_t NEW_ReduceAction55_parser___ReduceAction55___init(val_t p0);
+typedef val_t (*NEW_ReduceAction55_parser___ReduceAction55___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction56 = "init var of ReduceAction56";
+void INIT_ATTRIBUTES__ReduceAction56(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction56_t)(val_t p0);
+val_t NEW_ReduceAction56(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction56 = "check new ReduceAction56";
+void CHECKNEW_ReduceAction56(val_t p0);
+typedef void (*CHECKNEW_ReduceAction56_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction56_parser___ReduceAction56___init = "new ReduceAction56 parser::ReduceAction56::init";
+val_t NEW_ReduceAction56_parser___ReduceAction56___init(val_t p0);
+typedef val_t (*NEW_ReduceAction56_parser___ReduceAction56___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction57 = "init var of ReduceAction57";
+void INIT_ATTRIBUTES__ReduceAction57(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction57_t)(val_t p0);
+val_t NEW_ReduceAction57(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction57 = "check new ReduceAction57";
+void CHECKNEW_ReduceAction57(val_t p0);
+typedef void (*CHECKNEW_ReduceAction57_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction57_parser___ReduceAction57___init = "new ReduceAction57 parser::ReduceAction57::init";
+val_t NEW_ReduceAction57_parser___ReduceAction57___init(val_t p0);
+typedef val_t (*NEW_ReduceAction57_parser___ReduceAction57___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction58 = "init var of ReduceAction58";
+void INIT_ATTRIBUTES__ReduceAction58(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction58_t)(val_t p0);
+val_t NEW_ReduceAction58(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction58 = "check new ReduceAction58";
+void CHECKNEW_ReduceAction58(val_t p0);
+typedef void (*CHECKNEW_ReduceAction58_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction58_parser___ReduceAction58___init = "new ReduceAction58 parser::ReduceAction58::init";
+val_t NEW_ReduceAction58_parser___ReduceAction58___init(val_t p0);
+typedef val_t (*NEW_ReduceAction58_parser___ReduceAction58___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction59 = "init var of ReduceAction59";
+void INIT_ATTRIBUTES__ReduceAction59(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction59_t)(val_t p0);
+val_t NEW_ReduceAction59(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction59 = "check new ReduceAction59";
+void CHECKNEW_ReduceAction59(val_t p0);
+typedef void (*CHECKNEW_ReduceAction59_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction59_parser___ReduceAction59___init = "new ReduceAction59 parser::ReduceAction59::init";
+val_t NEW_ReduceAction59_parser___ReduceAction59___init(val_t p0);
+typedef val_t (*NEW_ReduceAction59_parser___ReduceAction59___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction60 = "init var of ReduceAction60";
+void INIT_ATTRIBUTES__ReduceAction60(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction60_t)(val_t p0);
+val_t NEW_ReduceAction60(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction60 = "check new ReduceAction60";
+void CHECKNEW_ReduceAction60(val_t p0);
+typedef void (*CHECKNEW_ReduceAction60_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction60_parser___ReduceAction60___init = "new ReduceAction60 parser::ReduceAction60::init";
+val_t NEW_ReduceAction60_parser___ReduceAction60___init(val_t p0);
+typedef val_t (*NEW_ReduceAction60_parser___ReduceAction60___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction61 = "init var of ReduceAction61";
+void INIT_ATTRIBUTES__ReduceAction61(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction61_t)(val_t p0);
+val_t NEW_ReduceAction61(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction61 = "check new ReduceAction61";
+void CHECKNEW_ReduceAction61(val_t p0);
+typedef void (*CHECKNEW_ReduceAction61_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction61_parser___ReduceAction61___init = "new ReduceAction61 parser::ReduceAction61::init";
+val_t NEW_ReduceAction61_parser___ReduceAction61___init(val_t p0);
+typedef val_t (*NEW_ReduceAction61_parser___ReduceAction61___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction62 = "init var of ReduceAction62";
+void INIT_ATTRIBUTES__ReduceAction62(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction62_t)(val_t p0);
+val_t NEW_ReduceAction62(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction62 = "check new ReduceAction62";
+void CHECKNEW_ReduceAction62(val_t p0);
+typedef void (*CHECKNEW_ReduceAction62_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction62_parser___ReduceAction62___init = "new ReduceAction62 parser::ReduceAction62::init";
+val_t NEW_ReduceAction62_parser___ReduceAction62___init(val_t p0);
+typedef val_t (*NEW_ReduceAction62_parser___ReduceAction62___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction63 = "init var of ReduceAction63";
+void INIT_ATTRIBUTES__ReduceAction63(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction63_t)(val_t p0);
+val_t NEW_ReduceAction63(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction63 = "check new ReduceAction63";
+void CHECKNEW_ReduceAction63(val_t p0);
+typedef void (*CHECKNEW_ReduceAction63_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction63_parser___ReduceAction63___init = "new ReduceAction63 parser::ReduceAction63::init";
+val_t NEW_ReduceAction63_parser___ReduceAction63___init(val_t p0);
+typedef val_t (*NEW_ReduceAction63_parser___ReduceAction63___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction64 = "init var of ReduceAction64";
+void INIT_ATTRIBUTES__ReduceAction64(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction64_t)(val_t p0);
+val_t NEW_ReduceAction64(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction64 = "check new ReduceAction64";
+void CHECKNEW_ReduceAction64(val_t p0);
+typedef void (*CHECKNEW_ReduceAction64_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction64_parser___ReduceAction64___init = "new ReduceAction64 parser::ReduceAction64::init";
+val_t NEW_ReduceAction64_parser___ReduceAction64___init(val_t p0);
+typedef val_t (*NEW_ReduceAction64_parser___ReduceAction64___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction65 = "init var of ReduceAction65";
+void INIT_ATTRIBUTES__ReduceAction65(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction65_t)(val_t p0);
+val_t NEW_ReduceAction65(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction65 = "check new ReduceAction65";
+void CHECKNEW_ReduceAction65(val_t p0);
+typedef void (*CHECKNEW_ReduceAction65_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction65_parser___ReduceAction65___init = "new ReduceAction65 parser::ReduceAction65::init";
+val_t NEW_ReduceAction65_parser___ReduceAction65___init(val_t p0);
+typedef val_t (*NEW_ReduceAction65_parser___ReduceAction65___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction66 = "init var of ReduceAction66";
+void INIT_ATTRIBUTES__ReduceAction66(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction66_t)(val_t p0);
+val_t NEW_ReduceAction66(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction66 = "check new ReduceAction66";
+void CHECKNEW_ReduceAction66(val_t p0);
+typedef void (*CHECKNEW_ReduceAction66_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction66_parser___ReduceAction66___init = "new ReduceAction66 parser::ReduceAction66::init";
+val_t NEW_ReduceAction66_parser___ReduceAction66___init(val_t p0);
+typedef val_t (*NEW_ReduceAction66_parser___ReduceAction66___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction67 = "init var of ReduceAction67";
+void INIT_ATTRIBUTES__ReduceAction67(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction67_t)(val_t p0);
+val_t NEW_ReduceAction67(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction67 = "check new ReduceAction67";
+void CHECKNEW_ReduceAction67(val_t p0);
+typedef void (*CHECKNEW_ReduceAction67_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction67_parser___ReduceAction67___init = "new ReduceAction67 parser::ReduceAction67::init";
+val_t NEW_ReduceAction67_parser___ReduceAction67___init(val_t p0);
+typedef val_t (*NEW_ReduceAction67_parser___ReduceAction67___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction68 = "init var of ReduceAction68";
+void INIT_ATTRIBUTES__ReduceAction68(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction68_t)(val_t p0);
+val_t NEW_ReduceAction68(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction68 = "check new ReduceAction68";
+void CHECKNEW_ReduceAction68(val_t p0);
+typedef void (*CHECKNEW_ReduceAction68_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction68_parser___ReduceAction68___init = "new ReduceAction68 parser::ReduceAction68::init";
+val_t NEW_ReduceAction68_parser___ReduceAction68___init(val_t p0);
+typedef val_t (*NEW_ReduceAction68_parser___ReduceAction68___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction69 = "init var of ReduceAction69";
+void INIT_ATTRIBUTES__ReduceAction69(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction69_t)(val_t p0);
+val_t NEW_ReduceAction69(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction69 = "check new ReduceAction69";
+void CHECKNEW_ReduceAction69(val_t p0);
+typedef void (*CHECKNEW_ReduceAction69_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction69_parser___ReduceAction69___init = "new ReduceAction69 parser::ReduceAction69::init";
+val_t NEW_ReduceAction69_parser___ReduceAction69___init(val_t p0);
+typedef val_t (*NEW_ReduceAction69_parser___ReduceAction69___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction70 = "init var of ReduceAction70";
+void INIT_ATTRIBUTES__ReduceAction70(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction70_t)(val_t p0);
+val_t NEW_ReduceAction70(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction70 = "check new ReduceAction70";
+void CHECKNEW_ReduceAction70(val_t p0);
+typedef void (*CHECKNEW_ReduceAction70_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction70_parser___ReduceAction70___init = "new ReduceAction70 parser::ReduceAction70::init";
+val_t NEW_ReduceAction70_parser___ReduceAction70___init(val_t p0);
+typedef val_t (*NEW_ReduceAction70_parser___ReduceAction70___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction71 = "init var of ReduceAction71";
+void INIT_ATTRIBUTES__ReduceAction71(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction71_t)(val_t p0);
+val_t NEW_ReduceAction71(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction71 = "check new ReduceAction71";
+void CHECKNEW_ReduceAction71(val_t p0);
+typedef void (*CHECKNEW_ReduceAction71_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction71_parser___ReduceAction71___init = "new ReduceAction71 parser::ReduceAction71::init";
+val_t NEW_ReduceAction71_parser___ReduceAction71___init(val_t p0);
+typedef val_t (*NEW_ReduceAction71_parser___ReduceAction71___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction72 = "init var of ReduceAction72";
+void INIT_ATTRIBUTES__ReduceAction72(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction72_t)(val_t p0);
+val_t NEW_ReduceAction72(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction72 = "check new ReduceAction72";
+void CHECKNEW_ReduceAction72(val_t p0);
+typedef void (*CHECKNEW_ReduceAction72_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction72_parser___ReduceAction72___init = "new ReduceAction72 parser::ReduceAction72::init";
+val_t NEW_ReduceAction72_parser___ReduceAction72___init(val_t p0);
+typedef val_t (*NEW_ReduceAction72_parser___ReduceAction72___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction73 = "init var of ReduceAction73";
+void INIT_ATTRIBUTES__ReduceAction73(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction73_t)(val_t p0);
+val_t NEW_ReduceAction73(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction73 = "check new ReduceAction73";
+void CHECKNEW_ReduceAction73(val_t p0);
+typedef void (*CHECKNEW_ReduceAction73_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction73_parser___ReduceAction73___init = "new ReduceAction73 parser::ReduceAction73::init";
+val_t NEW_ReduceAction73_parser___ReduceAction73___init(val_t p0);
+typedef val_t (*NEW_ReduceAction73_parser___ReduceAction73___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction74 = "init var of ReduceAction74";
+void INIT_ATTRIBUTES__ReduceAction74(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction74_t)(val_t p0);
+val_t NEW_ReduceAction74(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction74 = "check new ReduceAction74";
+void CHECKNEW_ReduceAction74(val_t p0);
+typedef void (*CHECKNEW_ReduceAction74_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction74_parser___ReduceAction74___init = "new ReduceAction74 parser::ReduceAction74::init";
+val_t NEW_ReduceAction74_parser___ReduceAction74___init(val_t p0);
+typedef val_t (*NEW_ReduceAction74_parser___ReduceAction74___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction75 = "init var of ReduceAction75";
+void INIT_ATTRIBUTES__ReduceAction75(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction75_t)(val_t p0);
+val_t NEW_ReduceAction75(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction75 = "check new ReduceAction75";
+void CHECKNEW_ReduceAction75(val_t p0);
+typedef void (*CHECKNEW_ReduceAction75_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction75_parser___ReduceAction75___init = "new ReduceAction75 parser::ReduceAction75::init";
+val_t NEW_ReduceAction75_parser___ReduceAction75___init(val_t p0);
+typedef val_t (*NEW_ReduceAction75_parser___ReduceAction75___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction76 = "init var of ReduceAction76";
+void INIT_ATTRIBUTES__ReduceAction76(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction76_t)(val_t p0);
+val_t NEW_ReduceAction76(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction76 = "check new ReduceAction76";
+void CHECKNEW_ReduceAction76(val_t p0);
+typedef void (*CHECKNEW_ReduceAction76_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction76_parser___ReduceAction76___init = "new ReduceAction76 parser::ReduceAction76::init";
+val_t NEW_ReduceAction76_parser___ReduceAction76___init(val_t p0);
+typedef val_t (*NEW_ReduceAction76_parser___ReduceAction76___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction77 = "init var of ReduceAction77";
+void INIT_ATTRIBUTES__ReduceAction77(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction77_t)(val_t p0);
+val_t NEW_ReduceAction77(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction77 = "check new ReduceAction77";
+void CHECKNEW_ReduceAction77(val_t p0);
+typedef void (*CHECKNEW_ReduceAction77_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction77_parser___ReduceAction77___init = "new ReduceAction77 parser::ReduceAction77::init";
+val_t NEW_ReduceAction77_parser___ReduceAction77___init(val_t p0);
+typedef val_t (*NEW_ReduceAction77_parser___ReduceAction77___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction78 = "init var of ReduceAction78";
+void INIT_ATTRIBUTES__ReduceAction78(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction78_t)(val_t p0);
+val_t NEW_ReduceAction78(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction78 = "check new ReduceAction78";
+void CHECKNEW_ReduceAction78(val_t p0);
+typedef void (*CHECKNEW_ReduceAction78_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction78_parser___ReduceAction78___init = "new ReduceAction78 parser::ReduceAction78::init";
+val_t NEW_ReduceAction78_parser___ReduceAction78___init(val_t p0);
+typedef val_t (*NEW_ReduceAction78_parser___ReduceAction78___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction79 = "init var of ReduceAction79";
+void INIT_ATTRIBUTES__ReduceAction79(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction79_t)(val_t p0);
+val_t NEW_ReduceAction79(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction79 = "check new ReduceAction79";
+void CHECKNEW_ReduceAction79(val_t p0);
+typedef void (*CHECKNEW_ReduceAction79_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction79_parser___ReduceAction79___init = "new ReduceAction79 parser::ReduceAction79::init";
+val_t NEW_ReduceAction79_parser___ReduceAction79___init(val_t p0);
+typedef val_t (*NEW_ReduceAction79_parser___ReduceAction79___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction80 = "init var of ReduceAction80";
+void INIT_ATTRIBUTES__ReduceAction80(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction80_t)(val_t p0);
+val_t NEW_ReduceAction80(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction80 = "check new ReduceAction80";
+void CHECKNEW_ReduceAction80(val_t p0);
+typedef void (*CHECKNEW_ReduceAction80_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction80_parser___ReduceAction80___init = "new ReduceAction80 parser::ReduceAction80::init";
+val_t NEW_ReduceAction80_parser___ReduceAction80___init(val_t p0);
+typedef val_t (*NEW_ReduceAction80_parser___ReduceAction80___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction81 = "init var of ReduceAction81";
+void INIT_ATTRIBUTES__ReduceAction81(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction81_t)(val_t p0);
+val_t NEW_ReduceAction81(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction81 = "check new ReduceAction81";
+void CHECKNEW_ReduceAction81(val_t p0);
+typedef void (*CHECKNEW_ReduceAction81_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction81_parser___ReduceAction81___init = "new ReduceAction81 parser::ReduceAction81::init";
+val_t NEW_ReduceAction81_parser___ReduceAction81___init(val_t p0);
+typedef val_t (*NEW_ReduceAction81_parser___ReduceAction81___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction82 = "init var of ReduceAction82";
+void INIT_ATTRIBUTES__ReduceAction82(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction82_t)(val_t p0);
+val_t NEW_ReduceAction82(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction82 = "check new ReduceAction82";
+void CHECKNEW_ReduceAction82(val_t p0);
+typedef void (*CHECKNEW_ReduceAction82_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction82_parser___ReduceAction82___init = "new ReduceAction82 parser::ReduceAction82::init";
+val_t NEW_ReduceAction82_parser___ReduceAction82___init(val_t p0);
+typedef val_t (*NEW_ReduceAction82_parser___ReduceAction82___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction83 = "init var of ReduceAction83";
+void INIT_ATTRIBUTES__ReduceAction83(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction83_t)(val_t p0);
+val_t NEW_ReduceAction83(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction83 = "check new ReduceAction83";
+void CHECKNEW_ReduceAction83(val_t p0);
+typedef void (*CHECKNEW_ReduceAction83_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction83_parser___ReduceAction83___init = "new ReduceAction83 parser::ReduceAction83::init";
+val_t NEW_ReduceAction83_parser___ReduceAction83___init(val_t p0);
+typedef val_t (*NEW_ReduceAction83_parser___ReduceAction83___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction84 = "init var of ReduceAction84";
+void INIT_ATTRIBUTES__ReduceAction84(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction84_t)(val_t p0);
+val_t NEW_ReduceAction84(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction84 = "check new ReduceAction84";
+void CHECKNEW_ReduceAction84(val_t p0);
+typedef void (*CHECKNEW_ReduceAction84_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction84_parser___ReduceAction84___init = "new ReduceAction84 parser::ReduceAction84::init";
+val_t NEW_ReduceAction84_parser___ReduceAction84___init(val_t p0);
+typedef val_t (*NEW_ReduceAction84_parser___ReduceAction84___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction85 = "init var of ReduceAction85";
+void INIT_ATTRIBUTES__ReduceAction85(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction85_t)(val_t p0);
+val_t NEW_ReduceAction85(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction85 = "check new ReduceAction85";
+void CHECKNEW_ReduceAction85(val_t p0);
+typedef void (*CHECKNEW_ReduceAction85_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction85_parser___ReduceAction85___init = "new ReduceAction85 parser::ReduceAction85::init";
+val_t NEW_ReduceAction85_parser___ReduceAction85___init(val_t p0);
+typedef val_t (*NEW_ReduceAction85_parser___ReduceAction85___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction86 = "init var of ReduceAction86";
+void INIT_ATTRIBUTES__ReduceAction86(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction86_t)(val_t p0);
+val_t NEW_ReduceAction86(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction86 = "check new ReduceAction86";
+void CHECKNEW_ReduceAction86(val_t p0);
+typedef void (*CHECKNEW_ReduceAction86_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction86_parser___ReduceAction86___init = "new ReduceAction86 parser::ReduceAction86::init";
+val_t NEW_ReduceAction86_parser___ReduceAction86___init(val_t p0);
+typedef val_t (*NEW_ReduceAction86_parser___ReduceAction86___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction87 = "init var of ReduceAction87";
+void INIT_ATTRIBUTES__ReduceAction87(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction87_t)(val_t p0);
+val_t NEW_ReduceAction87(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction87 = "check new ReduceAction87";
+void CHECKNEW_ReduceAction87(val_t p0);
+typedef void (*CHECKNEW_ReduceAction87_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction87_parser___ReduceAction87___init = "new ReduceAction87 parser::ReduceAction87::init";
+val_t NEW_ReduceAction87_parser___ReduceAction87___init(val_t p0);
+typedef val_t (*NEW_ReduceAction87_parser___ReduceAction87___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction88 = "init var of ReduceAction88";
+void INIT_ATTRIBUTES__ReduceAction88(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction88_t)(val_t p0);
+val_t NEW_ReduceAction88(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction88 = "check new ReduceAction88";
+void CHECKNEW_ReduceAction88(val_t p0);
+typedef void (*CHECKNEW_ReduceAction88_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction88_parser___ReduceAction88___init = "new ReduceAction88 parser::ReduceAction88::init";
+val_t NEW_ReduceAction88_parser___ReduceAction88___init(val_t p0);
+typedef val_t (*NEW_ReduceAction88_parser___ReduceAction88___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction89 = "init var of ReduceAction89";
+void INIT_ATTRIBUTES__ReduceAction89(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction89_t)(val_t p0);
+val_t NEW_ReduceAction89(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction89 = "check new ReduceAction89";
+void CHECKNEW_ReduceAction89(val_t p0);
+typedef void (*CHECKNEW_ReduceAction89_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction89_parser___ReduceAction89___init = "new ReduceAction89 parser::ReduceAction89::init";
+val_t NEW_ReduceAction89_parser___ReduceAction89___init(val_t p0);
+typedef val_t (*NEW_ReduceAction89_parser___ReduceAction89___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction90 = "init var of ReduceAction90";
+void INIT_ATTRIBUTES__ReduceAction90(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction90_t)(val_t p0);
+val_t NEW_ReduceAction90(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction90 = "check new ReduceAction90";
+void CHECKNEW_ReduceAction90(val_t p0);
+typedef void (*CHECKNEW_ReduceAction90_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction90_parser___ReduceAction90___init = "new ReduceAction90 parser::ReduceAction90::init";
+val_t NEW_ReduceAction90_parser___ReduceAction90___init(val_t p0);
+typedef val_t (*NEW_ReduceAction90_parser___ReduceAction90___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction91 = "init var of ReduceAction91";
+void INIT_ATTRIBUTES__ReduceAction91(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction91_t)(val_t p0);
+val_t NEW_ReduceAction91(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction91 = "check new ReduceAction91";
+void CHECKNEW_ReduceAction91(val_t p0);
+typedef void (*CHECKNEW_ReduceAction91_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction91_parser___ReduceAction91___init = "new ReduceAction91 parser::ReduceAction91::init";
+val_t NEW_ReduceAction91_parser___ReduceAction91___init(val_t p0);
+typedef val_t (*NEW_ReduceAction91_parser___ReduceAction91___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction92 = "init var of ReduceAction92";
+void INIT_ATTRIBUTES__ReduceAction92(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction92_t)(val_t p0);
+val_t NEW_ReduceAction92(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction92 = "check new ReduceAction92";
+void CHECKNEW_ReduceAction92(val_t p0);
+typedef void (*CHECKNEW_ReduceAction92_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction92_parser___ReduceAction92___init = "new ReduceAction92 parser::ReduceAction92::init";
+val_t NEW_ReduceAction92_parser___ReduceAction92___init(val_t p0);
+typedef val_t (*NEW_ReduceAction92_parser___ReduceAction92___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction93 = "init var of ReduceAction93";
+void INIT_ATTRIBUTES__ReduceAction93(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction93_t)(val_t p0);
+val_t NEW_ReduceAction93(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction93 = "check new ReduceAction93";
+void CHECKNEW_ReduceAction93(val_t p0);
+typedef void (*CHECKNEW_ReduceAction93_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction93_parser___ReduceAction93___init = "new ReduceAction93 parser::ReduceAction93::init";
+val_t NEW_ReduceAction93_parser___ReduceAction93___init(val_t p0);
+typedef val_t (*NEW_ReduceAction93_parser___ReduceAction93___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction94 = "init var of ReduceAction94";
+void INIT_ATTRIBUTES__ReduceAction94(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction94_t)(val_t p0);
+val_t NEW_ReduceAction94(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction94 = "check new ReduceAction94";
+void CHECKNEW_ReduceAction94(val_t p0);
+typedef void (*CHECKNEW_ReduceAction94_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction94_parser___ReduceAction94___init = "new ReduceAction94 parser::ReduceAction94::init";
+val_t NEW_ReduceAction94_parser___ReduceAction94___init(val_t p0);
+typedef val_t (*NEW_ReduceAction94_parser___ReduceAction94___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction95 = "init var of ReduceAction95";
+void INIT_ATTRIBUTES__ReduceAction95(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction95_t)(val_t p0);
+val_t NEW_ReduceAction95(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction95 = "check new ReduceAction95";
+void CHECKNEW_ReduceAction95(val_t p0);
+typedef void (*CHECKNEW_ReduceAction95_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction95_parser___ReduceAction95___init = "new ReduceAction95 parser::ReduceAction95::init";
+val_t NEW_ReduceAction95_parser___ReduceAction95___init(val_t p0);
+typedef val_t (*NEW_ReduceAction95_parser___ReduceAction95___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction96 = "init var of ReduceAction96";
+void INIT_ATTRIBUTES__ReduceAction96(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction96_t)(val_t p0);
+val_t NEW_ReduceAction96(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction96 = "check new ReduceAction96";
+void CHECKNEW_ReduceAction96(val_t p0);
+typedef void (*CHECKNEW_ReduceAction96_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction96_parser___ReduceAction96___init = "new ReduceAction96 parser::ReduceAction96::init";
+val_t NEW_ReduceAction96_parser___ReduceAction96___init(val_t p0);
+typedef val_t (*NEW_ReduceAction96_parser___ReduceAction96___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction97 = "init var of ReduceAction97";
+void INIT_ATTRIBUTES__ReduceAction97(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction97_t)(val_t p0);
+val_t NEW_ReduceAction97(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction97 = "check new ReduceAction97";
+void CHECKNEW_ReduceAction97(val_t p0);
+typedef void (*CHECKNEW_ReduceAction97_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction97_parser___ReduceAction97___init = "new ReduceAction97 parser::ReduceAction97::init";
+val_t NEW_ReduceAction97_parser___ReduceAction97___init(val_t p0);
+typedef val_t (*NEW_ReduceAction97_parser___ReduceAction97___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction98 = "init var of ReduceAction98";
+void INIT_ATTRIBUTES__ReduceAction98(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction98_t)(val_t p0);
+val_t NEW_ReduceAction98(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction98 = "check new ReduceAction98";
+void CHECKNEW_ReduceAction98(val_t p0);
+typedef void (*CHECKNEW_ReduceAction98_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction98_parser___ReduceAction98___init = "new ReduceAction98 parser::ReduceAction98::init";
+val_t NEW_ReduceAction98_parser___ReduceAction98___init(val_t p0);
+typedef val_t (*NEW_ReduceAction98_parser___ReduceAction98___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction99 = "init var of ReduceAction99";
+void INIT_ATTRIBUTES__ReduceAction99(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction99_t)(val_t p0);
+val_t NEW_ReduceAction99(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction99 = "check new ReduceAction99";
+void CHECKNEW_ReduceAction99(val_t p0);
+typedef void (*CHECKNEW_ReduceAction99_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction99_parser___ReduceAction99___init = "new ReduceAction99 parser::ReduceAction99::init";
+val_t NEW_ReduceAction99_parser___ReduceAction99___init(val_t p0);
+typedef val_t (*NEW_ReduceAction99_parser___ReduceAction99___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction100 = "init var of ReduceAction100";
+void INIT_ATTRIBUTES__ReduceAction100(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction100_t)(val_t p0);
+val_t NEW_ReduceAction100(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction100 = "check new ReduceAction100";
+void CHECKNEW_ReduceAction100(val_t p0);
+typedef void (*CHECKNEW_ReduceAction100_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction100_parser___ReduceAction100___init = "new ReduceAction100 parser::ReduceAction100::init";
+val_t NEW_ReduceAction100_parser___ReduceAction100___init(val_t p0);
+typedef val_t (*NEW_ReduceAction100_parser___ReduceAction100___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction101 = "init var of ReduceAction101";
+void INIT_ATTRIBUTES__ReduceAction101(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction101_t)(val_t p0);
+val_t NEW_ReduceAction101(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction101 = "check new ReduceAction101";
+void CHECKNEW_ReduceAction101(val_t p0);
+typedef void (*CHECKNEW_ReduceAction101_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction101_parser___ReduceAction101___init = "new ReduceAction101 parser::ReduceAction101::init";
+val_t NEW_ReduceAction101_parser___ReduceAction101___init(val_t p0);
+typedef val_t (*NEW_ReduceAction101_parser___ReduceAction101___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction102 = "init var of ReduceAction102";
+void INIT_ATTRIBUTES__ReduceAction102(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction102_t)(val_t p0);
+val_t NEW_ReduceAction102(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction102 = "check new ReduceAction102";
+void CHECKNEW_ReduceAction102(val_t p0);
+typedef void (*CHECKNEW_ReduceAction102_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction102_parser___ReduceAction102___init = "new ReduceAction102 parser::ReduceAction102::init";
+val_t NEW_ReduceAction102_parser___ReduceAction102___init(val_t p0);
+typedef val_t (*NEW_ReduceAction102_parser___ReduceAction102___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction103 = "init var of ReduceAction103";
+void INIT_ATTRIBUTES__ReduceAction103(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction103_t)(val_t p0);
+val_t NEW_ReduceAction103(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction103 = "check new ReduceAction103";
+void CHECKNEW_ReduceAction103(val_t p0);
+typedef void (*CHECKNEW_ReduceAction103_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction103_parser___ReduceAction103___init = "new ReduceAction103 parser::ReduceAction103::init";
+val_t NEW_ReduceAction103_parser___ReduceAction103___init(val_t p0);
+typedef val_t (*NEW_ReduceAction103_parser___ReduceAction103___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction104 = "init var of ReduceAction104";
+void INIT_ATTRIBUTES__ReduceAction104(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction104_t)(val_t p0);
+val_t NEW_ReduceAction104(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction104 = "check new ReduceAction104";
+void CHECKNEW_ReduceAction104(val_t p0);
+typedef void (*CHECKNEW_ReduceAction104_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction104_parser___ReduceAction104___init = "new ReduceAction104 parser::ReduceAction104::init";
+val_t NEW_ReduceAction104_parser___ReduceAction104___init(val_t p0);
+typedef val_t (*NEW_ReduceAction104_parser___ReduceAction104___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction105 = "init var of ReduceAction105";
+void INIT_ATTRIBUTES__ReduceAction105(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction105_t)(val_t p0);
+val_t NEW_ReduceAction105(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction105 = "check new ReduceAction105";
+void CHECKNEW_ReduceAction105(val_t p0);
+typedef void (*CHECKNEW_ReduceAction105_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction105_parser___ReduceAction105___init = "new ReduceAction105 parser::ReduceAction105::init";
+val_t NEW_ReduceAction105_parser___ReduceAction105___init(val_t p0);
+typedef val_t (*NEW_ReduceAction105_parser___ReduceAction105___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction106 = "init var of ReduceAction106";
+void INIT_ATTRIBUTES__ReduceAction106(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction106_t)(val_t p0);
+val_t NEW_ReduceAction106(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction106 = "check new ReduceAction106";
+void CHECKNEW_ReduceAction106(val_t p0);
+typedef void (*CHECKNEW_ReduceAction106_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction106_parser___ReduceAction106___init = "new ReduceAction106 parser::ReduceAction106::init";
+val_t NEW_ReduceAction106_parser___ReduceAction106___init(val_t p0);
+typedef val_t (*NEW_ReduceAction106_parser___ReduceAction106___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction107 = "init var of ReduceAction107";
+void INIT_ATTRIBUTES__ReduceAction107(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction107_t)(val_t p0);
+val_t NEW_ReduceAction107(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction107 = "check new ReduceAction107";
+void CHECKNEW_ReduceAction107(val_t p0);
+typedef void (*CHECKNEW_ReduceAction107_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction107_parser___ReduceAction107___init = "new ReduceAction107 parser::ReduceAction107::init";
+val_t NEW_ReduceAction107_parser___ReduceAction107___init(val_t p0);
+typedef val_t (*NEW_ReduceAction107_parser___ReduceAction107___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction108 = "init var of ReduceAction108";
+void INIT_ATTRIBUTES__ReduceAction108(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction108_t)(val_t p0);
+val_t NEW_ReduceAction108(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction108 = "check new ReduceAction108";
+void CHECKNEW_ReduceAction108(val_t p0);
+typedef void (*CHECKNEW_ReduceAction108_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction108_parser___ReduceAction108___init = "new ReduceAction108 parser::ReduceAction108::init";
+val_t NEW_ReduceAction108_parser___ReduceAction108___init(val_t p0);
+typedef val_t (*NEW_ReduceAction108_parser___ReduceAction108___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction109 = "init var of ReduceAction109";
+void INIT_ATTRIBUTES__ReduceAction109(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction109_t)(val_t p0);
+val_t NEW_ReduceAction109(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction109 = "check new ReduceAction109";
+void CHECKNEW_ReduceAction109(val_t p0);
+typedef void (*CHECKNEW_ReduceAction109_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction109_parser___ReduceAction109___init = "new ReduceAction109 parser::ReduceAction109::init";
+val_t NEW_ReduceAction109_parser___ReduceAction109___init(val_t p0);
+typedef val_t (*NEW_ReduceAction109_parser___ReduceAction109___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction110 = "init var of ReduceAction110";
+void INIT_ATTRIBUTES__ReduceAction110(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction110_t)(val_t p0);
+val_t NEW_ReduceAction110(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction110 = "check new ReduceAction110";
+void CHECKNEW_ReduceAction110(val_t p0);
+typedef void (*CHECKNEW_ReduceAction110_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction110_parser___ReduceAction110___init = "new ReduceAction110 parser::ReduceAction110::init";
+val_t NEW_ReduceAction110_parser___ReduceAction110___init(val_t p0);
+typedef val_t (*NEW_ReduceAction110_parser___ReduceAction110___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction111 = "init var of ReduceAction111";
+void INIT_ATTRIBUTES__ReduceAction111(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction111_t)(val_t p0);
+val_t NEW_ReduceAction111(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction111 = "check new ReduceAction111";
+void CHECKNEW_ReduceAction111(val_t p0);
+typedef void (*CHECKNEW_ReduceAction111_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction111_parser___ReduceAction111___init = "new ReduceAction111 parser::ReduceAction111::init";
+val_t NEW_ReduceAction111_parser___ReduceAction111___init(val_t p0);
+typedef val_t (*NEW_ReduceAction111_parser___ReduceAction111___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction112 = "init var of ReduceAction112";
+void INIT_ATTRIBUTES__ReduceAction112(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction112_t)(val_t p0);
+val_t NEW_ReduceAction112(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction112 = "check new ReduceAction112";
+void CHECKNEW_ReduceAction112(val_t p0);
+typedef void (*CHECKNEW_ReduceAction112_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction112_parser___ReduceAction112___init = "new ReduceAction112 parser::ReduceAction112::init";
+val_t NEW_ReduceAction112_parser___ReduceAction112___init(val_t p0);
+typedef val_t (*NEW_ReduceAction112_parser___ReduceAction112___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction113 = "init var of ReduceAction113";
+void INIT_ATTRIBUTES__ReduceAction113(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction113_t)(val_t p0);
+val_t NEW_ReduceAction113(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction113 = "check new ReduceAction113";
+void CHECKNEW_ReduceAction113(val_t p0);
+typedef void (*CHECKNEW_ReduceAction113_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction113_parser___ReduceAction113___init = "new ReduceAction113 parser::ReduceAction113::init";
+val_t NEW_ReduceAction113_parser___ReduceAction113___init(val_t p0);
+typedef val_t (*NEW_ReduceAction113_parser___ReduceAction113___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction114 = "init var of ReduceAction114";
+void INIT_ATTRIBUTES__ReduceAction114(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction114_t)(val_t p0);
+val_t NEW_ReduceAction114(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction114 = "check new ReduceAction114";
+void CHECKNEW_ReduceAction114(val_t p0);
+typedef void (*CHECKNEW_ReduceAction114_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction114_parser___ReduceAction114___init = "new ReduceAction114 parser::ReduceAction114::init";
+val_t NEW_ReduceAction114_parser___ReduceAction114___init(val_t p0);
+typedef val_t (*NEW_ReduceAction114_parser___ReduceAction114___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction115 = "init var of ReduceAction115";
+void INIT_ATTRIBUTES__ReduceAction115(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction115_t)(val_t p0);
+val_t NEW_ReduceAction115(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction115 = "check new ReduceAction115";
+void CHECKNEW_ReduceAction115(val_t p0);
+typedef void (*CHECKNEW_ReduceAction115_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction115_parser___ReduceAction115___init = "new ReduceAction115 parser::ReduceAction115::init";
+val_t NEW_ReduceAction115_parser___ReduceAction115___init(val_t p0);
+typedef val_t (*NEW_ReduceAction115_parser___ReduceAction115___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction116 = "init var of ReduceAction116";
+void INIT_ATTRIBUTES__ReduceAction116(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction116_t)(val_t p0);
+val_t NEW_ReduceAction116(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction116 = "check new ReduceAction116";
+void CHECKNEW_ReduceAction116(val_t p0);
+typedef void (*CHECKNEW_ReduceAction116_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction116_parser___ReduceAction116___init = "new ReduceAction116 parser::ReduceAction116::init";
+val_t NEW_ReduceAction116_parser___ReduceAction116___init(val_t p0);
+typedef val_t (*NEW_ReduceAction116_parser___ReduceAction116___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction117 = "init var of ReduceAction117";
+void INIT_ATTRIBUTES__ReduceAction117(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction117_t)(val_t p0);
+val_t NEW_ReduceAction117(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction117 = "check new ReduceAction117";
+void CHECKNEW_ReduceAction117(val_t p0);
+typedef void (*CHECKNEW_ReduceAction117_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction117_parser___ReduceAction117___init = "new ReduceAction117 parser::ReduceAction117::init";
+val_t NEW_ReduceAction117_parser___ReduceAction117___init(val_t p0);
+typedef val_t (*NEW_ReduceAction117_parser___ReduceAction117___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction118 = "init var of ReduceAction118";
+void INIT_ATTRIBUTES__ReduceAction118(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction118_t)(val_t p0);
+val_t NEW_ReduceAction118(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction118 = "check new ReduceAction118";
+void CHECKNEW_ReduceAction118(val_t p0);
+typedef void (*CHECKNEW_ReduceAction118_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction118_parser___ReduceAction118___init = "new ReduceAction118 parser::ReduceAction118::init";
+val_t NEW_ReduceAction118_parser___ReduceAction118___init(val_t p0);
+typedef val_t (*NEW_ReduceAction118_parser___ReduceAction118___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction119 = "init var of ReduceAction119";
+void INIT_ATTRIBUTES__ReduceAction119(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction119_t)(val_t p0);
+val_t NEW_ReduceAction119(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction119 = "check new ReduceAction119";
+void CHECKNEW_ReduceAction119(val_t p0);
+typedef void (*CHECKNEW_ReduceAction119_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction119_parser___ReduceAction119___init = "new ReduceAction119 parser::ReduceAction119::init";
+val_t NEW_ReduceAction119_parser___ReduceAction119___init(val_t p0);
+typedef val_t (*NEW_ReduceAction119_parser___ReduceAction119___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction120 = "init var of ReduceAction120";
+void INIT_ATTRIBUTES__ReduceAction120(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction120_t)(val_t p0);
+val_t NEW_ReduceAction120(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction120 = "check new ReduceAction120";
+void CHECKNEW_ReduceAction120(val_t p0);
+typedef void (*CHECKNEW_ReduceAction120_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction120_parser___ReduceAction120___init = "new ReduceAction120 parser::ReduceAction120::init";
+val_t NEW_ReduceAction120_parser___ReduceAction120___init(val_t p0);
+typedef val_t (*NEW_ReduceAction120_parser___ReduceAction120___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction121 = "init var of ReduceAction121";
+void INIT_ATTRIBUTES__ReduceAction121(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction121_t)(val_t p0);
+val_t NEW_ReduceAction121(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction121 = "check new ReduceAction121";
+void CHECKNEW_ReduceAction121(val_t p0);
+typedef void (*CHECKNEW_ReduceAction121_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction121_parser___ReduceAction121___init = "new ReduceAction121 parser::ReduceAction121::init";
+val_t NEW_ReduceAction121_parser___ReduceAction121___init(val_t p0);
+typedef val_t (*NEW_ReduceAction121_parser___ReduceAction121___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction122 = "init var of ReduceAction122";
+void INIT_ATTRIBUTES__ReduceAction122(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction122_t)(val_t p0);
+val_t NEW_ReduceAction122(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction122 = "check new ReduceAction122";
+void CHECKNEW_ReduceAction122(val_t p0);
+typedef void (*CHECKNEW_ReduceAction122_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction122_parser___ReduceAction122___init = "new ReduceAction122 parser::ReduceAction122::init";
+val_t NEW_ReduceAction122_parser___ReduceAction122___init(val_t p0);
+typedef val_t (*NEW_ReduceAction122_parser___ReduceAction122___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction123 = "init var of ReduceAction123";
+void INIT_ATTRIBUTES__ReduceAction123(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction123_t)(val_t p0);
+val_t NEW_ReduceAction123(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction123 = "check new ReduceAction123";
+void CHECKNEW_ReduceAction123(val_t p0);
+typedef void (*CHECKNEW_ReduceAction123_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction123_parser___ReduceAction123___init = "new ReduceAction123 parser::ReduceAction123::init";
+val_t NEW_ReduceAction123_parser___ReduceAction123___init(val_t p0);
+typedef val_t (*NEW_ReduceAction123_parser___ReduceAction123___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction124 = "init var of ReduceAction124";
+void INIT_ATTRIBUTES__ReduceAction124(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction124_t)(val_t p0);
+val_t NEW_ReduceAction124(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction124 = "check new ReduceAction124";
+void CHECKNEW_ReduceAction124(val_t p0);
+typedef void (*CHECKNEW_ReduceAction124_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction124_parser___ReduceAction124___init = "new ReduceAction124 parser::ReduceAction124::init";
+val_t NEW_ReduceAction124_parser___ReduceAction124___init(val_t p0);
+typedef val_t (*NEW_ReduceAction124_parser___ReduceAction124___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction125 = "init var of ReduceAction125";
+void INIT_ATTRIBUTES__ReduceAction125(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction125_t)(val_t p0);
+val_t NEW_ReduceAction125(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction125 = "check new ReduceAction125";
+void CHECKNEW_ReduceAction125(val_t p0);
+typedef void (*CHECKNEW_ReduceAction125_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction125_parser___ReduceAction125___init = "new ReduceAction125 parser::ReduceAction125::init";
+val_t NEW_ReduceAction125_parser___ReduceAction125___init(val_t p0);
+typedef val_t (*NEW_ReduceAction125_parser___ReduceAction125___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction126 = "init var of ReduceAction126";
+void INIT_ATTRIBUTES__ReduceAction126(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction126_t)(val_t p0);
+val_t NEW_ReduceAction126(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction126 = "check new ReduceAction126";
+void CHECKNEW_ReduceAction126(val_t p0);
+typedef void (*CHECKNEW_ReduceAction126_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction126_parser___ReduceAction126___init = "new ReduceAction126 parser::ReduceAction126::init";
+val_t NEW_ReduceAction126_parser___ReduceAction126___init(val_t p0);
+typedef val_t (*NEW_ReduceAction126_parser___ReduceAction126___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction127 = "init var of ReduceAction127";
+void INIT_ATTRIBUTES__ReduceAction127(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction127_t)(val_t p0);
+val_t NEW_ReduceAction127(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction127 = "check new ReduceAction127";
+void CHECKNEW_ReduceAction127(val_t p0);
+typedef void (*CHECKNEW_ReduceAction127_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction127_parser___ReduceAction127___init = "new ReduceAction127 parser::ReduceAction127::init";
+val_t NEW_ReduceAction127_parser___ReduceAction127___init(val_t p0);
+typedef val_t (*NEW_ReduceAction127_parser___ReduceAction127___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction128 = "init var of ReduceAction128";
+void INIT_ATTRIBUTES__ReduceAction128(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction128_t)(val_t p0);
+val_t NEW_ReduceAction128(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction128 = "check new ReduceAction128";
+void CHECKNEW_ReduceAction128(val_t p0);
+typedef void (*CHECKNEW_ReduceAction128_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction128_parser___ReduceAction128___init = "new ReduceAction128 parser::ReduceAction128::init";
+val_t NEW_ReduceAction128_parser___ReduceAction128___init(val_t p0);
+typedef val_t (*NEW_ReduceAction128_parser___ReduceAction128___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction129 = "init var of ReduceAction129";
+void INIT_ATTRIBUTES__ReduceAction129(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction129_t)(val_t p0);
+val_t NEW_ReduceAction129(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction129 = "check new ReduceAction129";
+void CHECKNEW_ReduceAction129(val_t p0);
+typedef void (*CHECKNEW_ReduceAction129_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction129_parser___ReduceAction129___init = "new ReduceAction129 parser::ReduceAction129::init";
+val_t NEW_ReduceAction129_parser___ReduceAction129___init(val_t p0);
+typedef val_t (*NEW_ReduceAction129_parser___ReduceAction129___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction130 = "init var of ReduceAction130";
+void INIT_ATTRIBUTES__ReduceAction130(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction130_t)(val_t p0);
+val_t NEW_ReduceAction130(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction130 = "check new ReduceAction130";
+void CHECKNEW_ReduceAction130(val_t p0);
+typedef void (*CHECKNEW_ReduceAction130_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction130_parser___ReduceAction130___init = "new ReduceAction130 parser::ReduceAction130::init";
+val_t NEW_ReduceAction130_parser___ReduceAction130___init(val_t p0);
+typedef val_t (*NEW_ReduceAction130_parser___ReduceAction130___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction131 = "init var of ReduceAction131";
+void INIT_ATTRIBUTES__ReduceAction131(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction131_t)(val_t p0);
+val_t NEW_ReduceAction131(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction131 = "check new ReduceAction131";
+void CHECKNEW_ReduceAction131(val_t p0);
+typedef void (*CHECKNEW_ReduceAction131_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction131_parser___ReduceAction131___init = "new ReduceAction131 parser::ReduceAction131::init";
+val_t NEW_ReduceAction131_parser___ReduceAction131___init(val_t p0);
+typedef val_t (*NEW_ReduceAction131_parser___ReduceAction131___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction132 = "init var of ReduceAction132";
+void INIT_ATTRIBUTES__ReduceAction132(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction132_t)(val_t p0);
+val_t NEW_ReduceAction132(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction132 = "check new ReduceAction132";
+void CHECKNEW_ReduceAction132(val_t p0);
+typedef void (*CHECKNEW_ReduceAction132_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction132_parser___ReduceAction132___init = "new ReduceAction132 parser::ReduceAction132::init";
+val_t NEW_ReduceAction132_parser___ReduceAction132___init(val_t p0);
+typedef val_t (*NEW_ReduceAction132_parser___ReduceAction132___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction133 = "init var of ReduceAction133";
+void INIT_ATTRIBUTES__ReduceAction133(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction133_t)(val_t p0);
+val_t NEW_ReduceAction133(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction133 = "check new ReduceAction133";
+void CHECKNEW_ReduceAction133(val_t p0);
+typedef void (*CHECKNEW_ReduceAction133_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction133_parser___ReduceAction133___init = "new ReduceAction133 parser::ReduceAction133::init";
+val_t NEW_ReduceAction133_parser___ReduceAction133___init(val_t p0);
+typedef val_t (*NEW_ReduceAction133_parser___ReduceAction133___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction134 = "init var of ReduceAction134";
+void INIT_ATTRIBUTES__ReduceAction134(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction134_t)(val_t p0);
+val_t NEW_ReduceAction134(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction134 = "check new ReduceAction134";
+void CHECKNEW_ReduceAction134(val_t p0);
+typedef void (*CHECKNEW_ReduceAction134_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction134_parser___ReduceAction134___init = "new ReduceAction134 parser::ReduceAction134::init";
+val_t NEW_ReduceAction134_parser___ReduceAction134___init(val_t p0);
+typedef val_t (*NEW_ReduceAction134_parser___ReduceAction134___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction135 = "init var of ReduceAction135";
+void INIT_ATTRIBUTES__ReduceAction135(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction135_t)(val_t p0);
+val_t NEW_ReduceAction135(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction135 = "check new ReduceAction135";
+void CHECKNEW_ReduceAction135(val_t p0);
+typedef void (*CHECKNEW_ReduceAction135_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction135_parser___ReduceAction135___init = "new ReduceAction135 parser::ReduceAction135::init";
+val_t NEW_ReduceAction135_parser___ReduceAction135___init(val_t p0);
+typedef val_t (*NEW_ReduceAction135_parser___ReduceAction135___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction136 = "init var of ReduceAction136";
+void INIT_ATTRIBUTES__ReduceAction136(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction136_t)(val_t p0);
+val_t NEW_ReduceAction136(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction136 = "check new ReduceAction136";
+void CHECKNEW_ReduceAction136(val_t p0);
+typedef void (*CHECKNEW_ReduceAction136_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction136_parser___ReduceAction136___init = "new ReduceAction136 parser::ReduceAction136::init";
+val_t NEW_ReduceAction136_parser___ReduceAction136___init(val_t p0);
+typedef val_t (*NEW_ReduceAction136_parser___ReduceAction136___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction137 = "init var of ReduceAction137";
+void INIT_ATTRIBUTES__ReduceAction137(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction137_t)(val_t p0);
+val_t NEW_ReduceAction137(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction137 = "check new ReduceAction137";
+void CHECKNEW_ReduceAction137(val_t p0);
+typedef void (*CHECKNEW_ReduceAction137_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction137_parser___ReduceAction137___init = "new ReduceAction137 parser::ReduceAction137::init";
+val_t NEW_ReduceAction137_parser___ReduceAction137___init(val_t p0);
+typedef val_t (*NEW_ReduceAction137_parser___ReduceAction137___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction138 = "init var of ReduceAction138";
+void INIT_ATTRIBUTES__ReduceAction138(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction138_t)(val_t p0);
+val_t NEW_ReduceAction138(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction138 = "check new ReduceAction138";
+void CHECKNEW_ReduceAction138(val_t p0);
+typedef void (*CHECKNEW_ReduceAction138_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction138_parser___ReduceAction138___init = "new ReduceAction138 parser::ReduceAction138::init";
+val_t NEW_ReduceAction138_parser___ReduceAction138___init(val_t p0);
+typedef val_t (*NEW_ReduceAction138_parser___ReduceAction138___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction139 = "init var of ReduceAction139";
+void INIT_ATTRIBUTES__ReduceAction139(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction139_t)(val_t p0);
+val_t NEW_ReduceAction139(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction139 = "check new ReduceAction139";
+void CHECKNEW_ReduceAction139(val_t p0);
+typedef void (*CHECKNEW_ReduceAction139_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction139_parser___ReduceAction139___init = "new ReduceAction139 parser::ReduceAction139::init";
+val_t NEW_ReduceAction139_parser___ReduceAction139___init(val_t p0);
+typedef val_t (*NEW_ReduceAction139_parser___ReduceAction139___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction140 = "init var of ReduceAction140";
+void INIT_ATTRIBUTES__ReduceAction140(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction140_t)(val_t p0);
+val_t NEW_ReduceAction140(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction140 = "check new ReduceAction140";
+void CHECKNEW_ReduceAction140(val_t p0);
+typedef void (*CHECKNEW_ReduceAction140_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction140_parser___ReduceAction140___init = "new ReduceAction140 parser::ReduceAction140::init";
+val_t NEW_ReduceAction140_parser___ReduceAction140___init(val_t p0);
+typedef val_t (*NEW_ReduceAction140_parser___ReduceAction140___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction141 = "init var of ReduceAction141";
+void INIT_ATTRIBUTES__ReduceAction141(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction141_t)(val_t p0);
+val_t NEW_ReduceAction141(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction141 = "check new ReduceAction141";
+void CHECKNEW_ReduceAction141(val_t p0);
+typedef void (*CHECKNEW_ReduceAction141_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction141_parser___ReduceAction141___init = "new ReduceAction141 parser::ReduceAction141::init";
+val_t NEW_ReduceAction141_parser___ReduceAction141___init(val_t p0);
+typedef val_t (*NEW_ReduceAction141_parser___ReduceAction141___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction142 = "init var of ReduceAction142";
+void INIT_ATTRIBUTES__ReduceAction142(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction142_t)(val_t p0);
+val_t NEW_ReduceAction142(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction142 = "check new ReduceAction142";
+void CHECKNEW_ReduceAction142(val_t p0);
+typedef void (*CHECKNEW_ReduceAction142_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction142_parser___ReduceAction142___init = "new ReduceAction142 parser::ReduceAction142::init";
+val_t NEW_ReduceAction142_parser___ReduceAction142___init(val_t p0);
+typedef val_t (*NEW_ReduceAction142_parser___ReduceAction142___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction143 = "init var of ReduceAction143";
+void INIT_ATTRIBUTES__ReduceAction143(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction143_t)(val_t p0);
+val_t NEW_ReduceAction143(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction143 = "check new ReduceAction143";
+void CHECKNEW_ReduceAction143(val_t p0);
+typedef void (*CHECKNEW_ReduceAction143_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction143_parser___ReduceAction143___init = "new ReduceAction143 parser::ReduceAction143::init";
+val_t NEW_ReduceAction143_parser___ReduceAction143___init(val_t p0);
+typedef val_t (*NEW_ReduceAction143_parser___ReduceAction143___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction144 = "init var of ReduceAction144";
+void INIT_ATTRIBUTES__ReduceAction144(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction144_t)(val_t p0);
+val_t NEW_ReduceAction144(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction144 = "check new ReduceAction144";
+void CHECKNEW_ReduceAction144(val_t p0);
+typedef void (*CHECKNEW_ReduceAction144_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction144_parser___ReduceAction144___init = "new ReduceAction144 parser::ReduceAction144::init";
+val_t NEW_ReduceAction144_parser___ReduceAction144___init(val_t p0);
+typedef val_t (*NEW_ReduceAction144_parser___ReduceAction144___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction145 = "init var of ReduceAction145";
+void INIT_ATTRIBUTES__ReduceAction145(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction145_t)(val_t p0);
+val_t NEW_ReduceAction145(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction145 = "check new ReduceAction145";
+void CHECKNEW_ReduceAction145(val_t p0);
+typedef void (*CHECKNEW_ReduceAction145_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction145_parser___ReduceAction145___init = "new ReduceAction145 parser::ReduceAction145::init";
+val_t NEW_ReduceAction145_parser___ReduceAction145___init(val_t p0);
+typedef val_t (*NEW_ReduceAction145_parser___ReduceAction145___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction146 = "init var of ReduceAction146";
+void INIT_ATTRIBUTES__ReduceAction146(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction146_t)(val_t p0);
+val_t NEW_ReduceAction146(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction146 = "check new ReduceAction146";
+void CHECKNEW_ReduceAction146(val_t p0);
+typedef void (*CHECKNEW_ReduceAction146_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction146_parser___ReduceAction146___init = "new ReduceAction146 parser::ReduceAction146::init";
+val_t NEW_ReduceAction146_parser___ReduceAction146___init(val_t p0);
+typedef val_t (*NEW_ReduceAction146_parser___ReduceAction146___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction147 = "init var of ReduceAction147";
+void INIT_ATTRIBUTES__ReduceAction147(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction147_t)(val_t p0);
+val_t NEW_ReduceAction147(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction147 = "check new ReduceAction147";
+void CHECKNEW_ReduceAction147(val_t p0);
+typedef void (*CHECKNEW_ReduceAction147_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction147_parser___ReduceAction147___init = "new ReduceAction147 parser::ReduceAction147::init";
+val_t NEW_ReduceAction147_parser___ReduceAction147___init(val_t p0);
+typedef val_t (*NEW_ReduceAction147_parser___ReduceAction147___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction148 = "init var of ReduceAction148";
+void INIT_ATTRIBUTES__ReduceAction148(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction148_t)(val_t p0);
+val_t NEW_ReduceAction148(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction148 = "check new ReduceAction148";
+void CHECKNEW_ReduceAction148(val_t p0);
+typedef void (*CHECKNEW_ReduceAction148_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction148_parser___ReduceAction148___init = "new ReduceAction148 parser::ReduceAction148::init";
+val_t NEW_ReduceAction148_parser___ReduceAction148___init(val_t p0);
+typedef val_t (*NEW_ReduceAction148_parser___ReduceAction148___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction149 = "init var of ReduceAction149";
+void INIT_ATTRIBUTES__ReduceAction149(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction149_t)(val_t p0);
+val_t NEW_ReduceAction149(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction149 = "check new ReduceAction149";
+void CHECKNEW_ReduceAction149(val_t p0);
+typedef void (*CHECKNEW_ReduceAction149_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction149_parser___ReduceAction149___init = "new ReduceAction149 parser::ReduceAction149::init";
+val_t NEW_ReduceAction149_parser___ReduceAction149___init(val_t p0);
+typedef val_t (*NEW_ReduceAction149_parser___ReduceAction149___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction150 = "init var of ReduceAction150";
+void INIT_ATTRIBUTES__ReduceAction150(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction150_t)(val_t p0);
+val_t NEW_ReduceAction150(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction150 = "check new ReduceAction150";
+void CHECKNEW_ReduceAction150(val_t p0);
+typedef void (*CHECKNEW_ReduceAction150_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction150_parser___ReduceAction150___init = "new ReduceAction150 parser::ReduceAction150::init";
+val_t NEW_ReduceAction150_parser___ReduceAction150___init(val_t p0);
+typedef val_t (*NEW_ReduceAction150_parser___ReduceAction150___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction151 = "init var of ReduceAction151";
+void INIT_ATTRIBUTES__ReduceAction151(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction151_t)(val_t p0);
+val_t NEW_ReduceAction151(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction151 = "check new ReduceAction151";
+void CHECKNEW_ReduceAction151(val_t p0);
+typedef void (*CHECKNEW_ReduceAction151_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction151_parser___ReduceAction151___init = "new ReduceAction151 parser::ReduceAction151::init";
+val_t NEW_ReduceAction151_parser___ReduceAction151___init(val_t p0);
+typedef val_t (*NEW_ReduceAction151_parser___ReduceAction151___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction152 = "init var of ReduceAction152";
+void INIT_ATTRIBUTES__ReduceAction152(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction152_t)(val_t p0);
+val_t NEW_ReduceAction152(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction152 = "check new ReduceAction152";
+void CHECKNEW_ReduceAction152(val_t p0);
+typedef void (*CHECKNEW_ReduceAction152_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction152_parser___ReduceAction152___init = "new ReduceAction152 parser::ReduceAction152::init";
+val_t NEW_ReduceAction152_parser___ReduceAction152___init(val_t p0);
+typedef val_t (*NEW_ReduceAction152_parser___ReduceAction152___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction153 = "init var of ReduceAction153";
+void INIT_ATTRIBUTES__ReduceAction153(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction153_t)(val_t p0);
+val_t NEW_ReduceAction153(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction153 = "check new ReduceAction153";
+void CHECKNEW_ReduceAction153(val_t p0);
+typedef void (*CHECKNEW_ReduceAction153_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction153_parser___ReduceAction153___init = "new ReduceAction153 parser::ReduceAction153::init";
+val_t NEW_ReduceAction153_parser___ReduceAction153___init(val_t p0);
+typedef val_t (*NEW_ReduceAction153_parser___ReduceAction153___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction154 = "init var of ReduceAction154";
+void INIT_ATTRIBUTES__ReduceAction154(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction154_t)(val_t p0);
+val_t NEW_ReduceAction154(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction154 = "check new ReduceAction154";
+void CHECKNEW_ReduceAction154(val_t p0);
+typedef void (*CHECKNEW_ReduceAction154_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction154_parser___ReduceAction154___init = "new ReduceAction154 parser::ReduceAction154::init";
+val_t NEW_ReduceAction154_parser___ReduceAction154___init(val_t p0);
+typedef val_t (*NEW_ReduceAction154_parser___ReduceAction154___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction155 = "init var of ReduceAction155";
+void INIT_ATTRIBUTES__ReduceAction155(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction155_t)(val_t p0);
+val_t NEW_ReduceAction155(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction155 = "check new ReduceAction155";
+void CHECKNEW_ReduceAction155(val_t p0);
+typedef void (*CHECKNEW_ReduceAction155_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction155_parser___ReduceAction155___init = "new ReduceAction155 parser::ReduceAction155::init";
+val_t NEW_ReduceAction155_parser___ReduceAction155___init(val_t p0);
+typedef val_t (*NEW_ReduceAction155_parser___ReduceAction155___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction156 = "init var of ReduceAction156";
+void INIT_ATTRIBUTES__ReduceAction156(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction156_t)(val_t p0);
+val_t NEW_ReduceAction156(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction156 = "check new ReduceAction156";
+void CHECKNEW_ReduceAction156(val_t p0);
+typedef void (*CHECKNEW_ReduceAction156_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction156_parser___ReduceAction156___init = "new ReduceAction156 parser::ReduceAction156::init";
+val_t NEW_ReduceAction156_parser___ReduceAction156___init(val_t p0);
+typedef val_t (*NEW_ReduceAction156_parser___ReduceAction156___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction157 = "init var of ReduceAction157";
+void INIT_ATTRIBUTES__ReduceAction157(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction157_t)(val_t p0);
+val_t NEW_ReduceAction157(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction157 = "check new ReduceAction157";
+void CHECKNEW_ReduceAction157(val_t p0);
+typedef void (*CHECKNEW_ReduceAction157_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction157_parser___ReduceAction157___init = "new ReduceAction157 parser::ReduceAction157::init";
+val_t NEW_ReduceAction157_parser___ReduceAction157___init(val_t p0);
+typedef val_t (*NEW_ReduceAction157_parser___ReduceAction157___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction158 = "init var of ReduceAction158";
+void INIT_ATTRIBUTES__ReduceAction158(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction158_t)(val_t p0);
+val_t NEW_ReduceAction158(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction158 = "check new ReduceAction158";
+void CHECKNEW_ReduceAction158(val_t p0);
+typedef void (*CHECKNEW_ReduceAction158_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction158_parser___ReduceAction158___init = "new ReduceAction158 parser::ReduceAction158::init";
+val_t NEW_ReduceAction158_parser___ReduceAction158___init(val_t p0);
+typedef val_t (*NEW_ReduceAction158_parser___ReduceAction158___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction159 = "init var of ReduceAction159";
+void INIT_ATTRIBUTES__ReduceAction159(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction159_t)(val_t p0);
+val_t NEW_ReduceAction159(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction159 = "check new ReduceAction159";
+void CHECKNEW_ReduceAction159(val_t p0);
+typedef void (*CHECKNEW_ReduceAction159_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction159_parser___ReduceAction159___init = "new ReduceAction159 parser::ReduceAction159::init";
+val_t NEW_ReduceAction159_parser___ReduceAction159___init(val_t p0);
+typedef val_t (*NEW_ReduceAction159_parser___ReduceAction159___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction160 = "init var of ReduceAction160";
+void INIT_ATTRIBUTES__ReduceAction160(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction160_t)(val_t p0);
+val_t NEW_ReduceAction160(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction160 = "check new ReduceAction160";
+void CHECKNEW_ReduceAction160(val_t p0);
+typedef void (*CHECKNEW_ReduceAction160_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction160_parser___ReduceAction160___init = "new ReduceAction160 parser::ReduceAction160::init";
+val_t NEW_ReduceAction160_parser___ReduceAction160___init(val_t p0);
+typedef val_t (*NEW_ReduceAction160_parser___ReduceAction160___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction161 = "init var of ReduceAction161";
+void INIT_ATTRIBUTES__ReduceAction161(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction161_t)(val_t p0);
+val_t NEW_ReduceAction161(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction161 = "check new ReduceAction161";
+void CHECKNEW_ReduceAction161(val_t p0);
+typedef void (*CHECKNEW_ReduceAction161_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction161_parser___ReduceAction161___init = "new ReduceAction161 parser::ReduceAction161::init";
+val_t NEW_ReduceAction161_parser___ReduceAction161___init(val_t p0);
+typedef val_t (*NEW_ReduceAction161_parser___ReduceAction161___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction162 = "init var of ReduceAction162";
+void INIT_ATTRIBUTES__ReduceAction162(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction162_t)(val_t p0);
+val_t NEW_ReduceAction162(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction162 = "check new ReduceAction162";
+void CHECKNEW_ReduceAction162(val_t p0);
+typedef void (*CHECKNEW_ReduceAction162_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction162_parser___ReduceAction162___init = "new ReduceAction162 parser::ReduceAction162::init";
+val_t NEW_ReduceAction162_parser___ReduceAction162___init(val_t p0);
+typedef val_t (*NEW_ReduceAction162_parser___ReduceAction162___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction163 = "init var of ReduceAction163";
+void INIT_ATTRIBUTES__ReduceAction163(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction163_t)(val_t p0);
+val_t NEW_ReduceAction163(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction163 = "check new ReduceAction163";
+void CHECKNEW_ReduceAction163(val_t p0);
+typedef void (*CHECKNEW_ReduceAction163_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction163_parser___ReduceAction163___init = "new ReduceAction163 parser::ReduceAction163::init";
+val_t NEW_ReduceAction163_parser___ReduceAction163___init(val_t p0);
+typedef val_t (*NEW_ReduceAction163_parser___ReduceAction163___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction164 = "init var of ReduceAction164";
+void INIT_ATTRIBUTES__ReduceAction164(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction164_t)(val_t p0);
+val_t NEW_ReduceAction164(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction164 = "check new ReduceAction164";
+void CHECKNEW_ReduceAction164(val_t p0);
+typedef void (*CHECKNEW_ReduceAction164_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction164_parser___ReduceAction164___init = "new ReduceAction164 parser::ReduceAction164::init";
+val_t NEW_ReduceAction164_parser___ReduceAction164___init(val_t p0);
+typedef val_t (*NEW_ReduceAction164_parser___ReduceAction164___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction165 = "init var of ReduceAction165";
+void INIT_ATTRIBUTES__ReduceAction165(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction165_t)(val_t p0);
+val_t NEW_ReduceAction165(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction165 = "check new ReduceAction165";
+void CHECKNEW_ReduceAction165(val_t p0);
+typedef void (*CHECKNEW_ReduceAction165_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction165_parser___ReduceAction165___init = "new ReduceAction165 parser::ReduceAction165::init";
+val_t NEW_ReduceAction165_parser___ReduceAction165___init(val_t p0);
+typedef val_t (*NEW_ReduceAction165_parser___ReduceAction165___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction166 = "init var of ReduceAction166";
+void INIT_ATTRIBUTES__ReduceAction166(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction166_t)(val_t p0);
+val_t NEW_ReduceAction166(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction166 = "check new ReduceAction166";
+void CHECKNEW_ReduceAction166(val_t p0);
+typedef void (*CHECKNEW_ReduceAction166_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction166_parser___ReduceAction166___init = "new ReduceAction166 parser::ReduceAction166::init";
+val_t NEW_ReduceAction166_parser___ReduceAction166___init(val_t p0);
+typedef val_t (*NEW_ReduceAction166_parser___ReduceAction166___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction167 = "init var of ReduceAction167";
+void INIT_ATTRIBUTES__ReduceAction167(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction167_t)(val_t p0);
+val_t NEW_ReduceAction167(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction167 = "check new ReduceAction167";
+void CHECKNEW_ReduceAction167(val_t p0);
+typedef void (*CHECKNEW_ReduceAction167_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction167_parser___ReduceAction167___init = "new ReduceAction167 parser::ReduceAction167::init";
+val_t NEW_ReduceAction167_parser___ReduceAction167___init(val_t p0);
+typedef val_t (*NEW_ReduceAction167_parser___ReduceAction167___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction168 = "init var of ReduceAction168";
+void INIT_ATTRIBUTES__ReduceAction168(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction168_t)(val_t p0);
+val_t NEW_ReduceAction168(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction168 = "check new ReduceAction168";
+void CHECKNEW_ReduceAction168(val_t p0);
+typedef void (*CHECKNEW_ReduceAction168_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction168_parser___ReduceAction168___init = "new ReduceAction168 parser::ReduceAction168::init";
+val_t NEW_ReduceAction168_parser___ReduceAction168___init(val_t p0);
+typedef val_t (*NEW_ReduceAction168_parser___ReduceAction168___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction169 = "init var of ReduceAction169";
+void INIT_ATTRIBUTES__ReduceAction169(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction169_t)(val_t p0);
+val_t NEW_ReduceAction169(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction169 = "check new ReduceAction169";
+void CHECKNEW_ReduceAction169(val_t p0);
+typedef void (*CHECKNEW_ReduceAction169_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction169_parser___ReduceAction169___init = "new ReduceAction169 parser::ReduceAction169::init";
+val_t NEW_ReduceAction169_parser___ReduceAction169___init(val_t p0);
+typedef val_t (*NEW_ReduceAction169_parser___ReduceAction169___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction170 = "init var of ReduceAction170";
+void INIT_ATTRIBUTES__ReduceAction170(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction170_t)(val_t p0);
+val_t NEW_ReduceAction170(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction170 = "check new ReduceAction170";
+void CHECKNEW_ReduceAction170(val_t p0);
+typedef void (*CHECKNEW_ReduceAction170_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction170_parser___ReduceAction170___init = "new ReduceAction170 parser::ReduceAction170::init";
+val_t NEW_ReduceAction170_parser___ReduceAction170___init(val_t p0);
+typedef val_t (*NEW_ReduceAction170_parser___ReduceAction170___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction171 = "init var of ReduceAction171";
+void INIT_ATTRIBUTES__ReduceAction171(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction171_t)(val_t p0);
+val_t NEW_ReduceAction171(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction171 = "check new ReduceAction171";
+void CHECKNEW_ReduceAction171(val_t p0);
+typedef void (*CHECKNEW_ReduceAction171_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction171_parser___ReduceAction171___init = "new ReduceAction171 parser::ReduceAction171::init";
+val_t NEW_ReduceAction171_parser___ReduceAction171___init(val_t p0);
+typedef val_t (*NEW_ReduceAction171_parser___ReduceAction171___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction172 = "init var of ReduceAction172";
+void INIT_ATTRIBUTES__ReduceAction172(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction172_t)(val_t p0);
+val_t NEW_ReduceAction172(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction172 = "check new ReduceAction172";
+void CHECKNEW_ReduceAction172(val_t p0);
+typedef void (*CHECKNEW_ReduceAction172_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction172_parser___ReduceAction172___init = "new ReduceAction172 parser::ReduceAction172::init";
+val_t NEW_ReduceAction172_parser___ReduceAction172___init(val_t p0);
+typedef val_t (*NEW_ReduceAction172_parser___ReduceAction172___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction173 = "init var of ReduceAction173";
+void INIT_ATTRIBUTES__ReduceAction173(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction173_t)(val_t p0);
+val_t NEW_ReduceAction173(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction173 = "check new ReduceAction173";
+void CHECKNEW_ReduceAction173(val_t p0);
+typedef void (*CHECKNEW_ReduceAction173_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction173_parser___ReduceAction173___init = "new ReduceAction173 parser::ReduceAction173::init";
+val_t NEW_ReduceAction173_parser___ReduceAction173___init(val_t p0);
+typedef val_t (*NEW_ReduceAction173_parser___ReduceAction173___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction174 = "init var of ReduceAction174";
+void INIT_ATTRIBUTES__ReduceAction174(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction174_t)(val_t p0);
+val_t NEW_ReduceAction174(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction174 = "check new ReduceAction174";
+void CHECKNEW_ReduceAction174(val_t p0);
+typedef void (*CHECKNEW_ReduceAction174_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction174_parser___ReduceAction174___init = "new ReduceAction174 parser::ReduceAction174::init";
+val_t NEW_ReduceAction174_parser___ReduceAction174___init(val_t p0);
+typedef val_t (*NEW_ReduceAction174_parser___ReduceAction174___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction175 = "init var of ReduceAction175";
+void INIT_ATTRIBUTES__ReduceAction175(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction175_t)(val_t p0);
+val_t NEW_ReduceAction175(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction175 = "check new ReduceAction175";
+void CHECKNEW_ReduceAction175(val_t p0);
+typedef void (*CHECKNEW_ReduceAction175_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction175_parser___ReduceAction175___init = "new ReduceAction175 parser::ReduceAction175::init";
+val_t NEW_ReduceAction175_parser___ReduceAction175___init(val_t p0);
+typedef val_t (*NEW_ReduceAction175_parser___ReduceAction175___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction176 = "init var of ReduceAction176";
+void INIT_ATTRIBUTES__ReduceAction176(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction176_t)(val_t p0);
+val_t NEW_ReduceAction176(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction176 = "check new ReduceAction176";
+void CHECKNEW_ReduceAction176(val_t p0);
+typedef void (*CHECKNEW_ReduceAction176_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction176_parser___ReduceAction176___init = "new ReduceAction176 parser::ReduceAction176::init";
+val_t NEW_ReduceAction176_parser___ReduceAction176___init(val_t p0);
+typedef val_t (*NEW_ReduceAction176_parser___ReduceAction176___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction177 = "init var of ReduceAction177";
+void INIT_ATTRIBUTES__ReduceAction177(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction177_t)(val_t p0);
+val_t NEW_ReduceAction177(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction177 = "check new ReduceAction177";
+void CHECKNEW_ReduceAction177(val_t p0);
+typedef void (*CHECKNEW_ReduceAction177_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction177_parser___ReduceAction177___init = "new ReduceAction177 parser::ReduceAction177::init";
+val_t NEW_ReduceAction177_parser___ReduceAction177___init(val_t p0);
+typedef val_t (*NEW_ReduceAction177_parser___ReduceAction177___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction178 = "init var of ReduceAction178";
+void INIT_ATTRIBUTES__ReduceAction178(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction178_t)(val_t p0);
+val_t NEW_ReduceAction178(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction178 = "check new ReduceAction178";
+void CHECKNEW_ReduceAction178(val_t p0);
+typedef void (*CHECKNEW_ReduceAction178_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction178_parser___ReduceAction178___init = "new ReduceAction178 parser::ReduceAction178::init";
+val_t NEW_ReduceAction178_parser___ReduceAction178___init(val_t p0);
+typedef val_t (*NEW_ReduceAction178_parser___ReduceAction178___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction179 = "init var of ReduceAction179";
+void INIT_ATTRIBUTES__ReduceAction179(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction179_t)(val_t p0);
+val_t NEW_ReduceAction179(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction179 = "check new ReduceAction179";
+void CHECKNEW_ReduceAction179(val_t p0);
+typedef void (*CHECKNEW_ReduceAction179_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction179_parser___ReduceAction179___init = "new ReduceAction179 parser::ReduceAction179::init";
+val_t NEW_ReduceAction179_parser___ReduceAction179___init(val_t p0);
+typedef val_t (*NEW_ReduceAction179_parser___ReduceAction179___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction180 = "init var of ReduceAction180";
+void INIT_ATTRIBUTES__ReduceAction180(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction180_t)(val_t p0);
+val_t NEW_ReduceAction180(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction180 = "check new ReduceAction180";
+void CHECKNEW_ReduceAction180(val_t p0);
+typedef void (*CHECKNEW_ReduceAction180_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction180_parser___ReduceAction180___init = "new ReduceAction180 parser::ReduceAction180::init";
+val_t NEW_ReduceAction180_parser___ReduceAction180___init(val_t p0);
+typedef val_t (*NEW_ReduceAction180_parser___ReduceAction180___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction181 = "init var of ReduceAction181";
+void INIT_ATTRIBUTES__ReduceAction181(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction181_t)(val_t p0);
+val_t NEW_ReduceAction181(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction181 = "check new ReduceAction181";
+void CHECKNEW_ReduceAction181(val_t p0);
+typedef void (*CHECKNEW_ReduceAction181_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction181_parser___ReduceAction181___init = "new ReduceAction181 parser::ReduceAction181::init";
+val_t NEW_ReduceAction181_parser___ReduceAction181___init(val_t p0);
+typedef val_t (*NEW_ReduceAction181_parser___ReduceAction181___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction182 = "init var of ReduceAction182";
+void INIT_ATTRIBUTES__ReduceAction182(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction182_t)(val_t p0);
+val_t NEW_ReduceAction182(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction182 = "check new ReduceAction182";
+void CHECKNEW_ReduceAction182(val_t p0);
+typedef void (*CHECKNEW_ReduceAction182_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction182_parser___ReduceAction182___init = "new ReduceAction182 parser::ReduceAction182::init";
+val_t NEW_ReduceAction182_parser___ReduceAction182___init(val_t p0);
+typedef val_t (*NEW_ReduceAction182_parser___ReduceAction182___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction183 = "init var of ReduceAction183";
+void INIT_ATTRIBUTES__ReduceAction183(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction183_t)(val_t p0);
+val_t NEW_ReduceAction183(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction183 = "check new ReduceAction183";
+void CHECKNEW_ReduceAction183(val_t p0);
+typedef void (*CHECKNEW_ReduceAction183_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction183_parser___ReduceAction183___init = "new ReduceAction183 parser::ReduceAction183::init";
+val_t NEW_ReduceAction183_parser___ReduceAction183___init(val_t p0);
+typedef val_t (*NEW_ReduceAction183_parser___ReduceAction183___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction184 = "init var of ReduceAction184";
+void INIT_ATTRIBUTES__ReduceAction184(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction184_t)(val_t p0);
+val_t NEW_ReduceAction184(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction184 = "check new ReduceAction184";
+void CHECKNEW_ReduceAction184(val_t p0);
+typedef void (*CHECKNEW_ReduceAction184_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction184_parser___ReduceAction184___init = "new ReduceAction184 parser::ReduceAction184::init";
+val_t NEW_ReduceAction184_parser___ReduceAction184___init(val_t p0);
+typedef val_t (*NEW_ReduceAction184_parser___ReduceAction184___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction185 = "init var of ReduceAction185";
+void INIT_ATTRIBUTES__ReduceAction185(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction185_t)(val_t p0);
+val_t NEW_ReduceAction185(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction185 = "check new ReduceAction185";
+void CHECKNEW_ReduceAction185(val_t p0);
+typedef void (*CHECKNEW_ReduceAction185_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction185_parser___ReduceAction185___init = "new ReduceAction185 parser::ReduceAction185::init";
+val_t NEW_ReduceAction185_parser___ReduceAction185___init(val_t p0);
+typedef val_t (*NEW_ReduceAction185_parser___ReduceAction185___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction186 = "init var of ReduceAction186";
+void INIT_ATTRIBUTES__ReduceAction186(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction186_t)(val_t p0);
+val_t NEW_ReduceAction186(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction186 = "check new ReduceAction186";
+void CHECKNEW_ReduceAction186(val_t p0);
+typedef void (*CHECKNEW_ReduceAction186_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction186_parser___ReduceAction186___init = "new ReduceAction186 parser::ReduceAction186::init";
+val_t NEW_ReduceAction186_parser___ReduceAction186___init(val_t p0);
+typedef val_t (*NEW_ReduceAction186_parser___ReduceAction186___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction187 = "init var of ReduceAction187";
+void INIT_ATTRIBUTES__ReduceAction187(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction187_t)(val_t p0);
+val_t NEW_ReduceAction187(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction187 = "check new ReduceAction187";
+void CHECKNEW_ReduceAction187(val_t p0);
+typedef void (*CHECKNEW_ReduceAction187_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction187_parser___ReduceAction187___init = "new ReduceAction187 parser::ReduceAction187::init";
+val_t NEW_ReduceAction187_parser___ReduceAction187___init(val_t p0);
+typedef val_t (*NEW_ReduceAction187_parser___ReduceAction187___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction188 = "init var of ReduceAction188";
+void INIT_ATTRIBUTES__ReduceAction188(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction188_t)(val_t p0);
+val_t NEW_ReduceAction188(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction188 = "check new ReduceAction188";
+void CHECKNEW_ReduceAction188(val_t p0);
+typedef void (*CHECKNEW_ReduceAction188_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction188_parser___ReduceAction188___init = "new ReduceAction188 parser::ReduceAction188::init";
+val_t NEW_ReduceAction188_parser___ReduceAction188___init(val_t p0);
+typedef val_t (*NEW_ReduceAction188_parser___ReduceAction188___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction189 = "init var of ReduceAction189";
+void INIT_ATTRIBUTES__ReduceAction189(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction189_t)(val_t p0);
+val_t NEW_ReduceAction189(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction189 = "check new ReduceAction189";
+void CHECKNEW_ReduceAction189(val_t p0);
+typedef void (*CHECKNEW_ReduceAction189_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction189_parser___ReduceAction189___init = "new ReduceAction189 parser::ReduceAction189::init";
+val_t NEW_ReduceAction189_parser___ReduceAction189___init(val_t p0);
+typedef val_t (*NEW_ReduceAction189_parser___ReduceAction189___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction190 = "init var of ReduceAction190";
+void INIT_ATTRIBUTES__ReduceAction190(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction190_t)(val_t p0);
+val_t NEW_ReduceAction190(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction190 = "check new ReduceAction190";
+void CHECKNEW_ReduceAction190(val_t p0);
+typedef void (*CHECKNEW_ReduceAction190_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction190_parser___ReduceAction190___init = "new ReduceAction190 parser::ReduceAction190::init";
+val_t NEW_ReduceAction190_parser___ReduceAction190___init(val_t p0);
+typedef val_t (*NEW_ReduceAction190_parser___ReduceAction190___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction191 = "init var of ReduceAction191";
+void INIT_ATTRIBUTES__ReduceAction191(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction191_t)(val_t p0);
+val_t NEW_ReduceAction191(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction191 = "check new ReduceAction191";
+void CHECKNEW_ReduceAction191(val_t p0);
+typedef void (*CHECKNEW_ReduceAction191_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction191_parser___ReduceAction191___init = "new ReduceAction191 parser::ReduceAction191::init";
+val_t NEW_ReduceAction191_parser___ReduceAction191___init(val_t p0);
+typedef val_t (*NEW_ReduceAction191_parser___ReduceAction191___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction192 = "init var of ReduceAction192";
+void INIT_ATTRIBUTES__ReduceAction192(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction192_t)(val_t p0);
+val_t NEW_ReduceAction192(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction192 = "check new ReduceAction192";
+void CHECKNEW_ReduceAction192(val_t p0);
+typedef void (*CHECKNEW_ReduceAction192_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction192_parser___ReduceAction192___init = "new ReduceAction192 parser::ReduceAction192::init";
+val_t NEW_ReduceAction192_parser___ReduceAction192___init(val_t p0);
+typedef val_t (*NEW_ReduceAction192_parser___ReduceAction192___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction193 = "init var of ReduceAction193";
+void INIT_ATTRIBUTES__ReduceAction193(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction193_t)(val_t p0);
+val_t NEW_ReduceAction193(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction193 = "check new ReduceAction193";
+void CHECKNEW_ReduceAction193(val_t p0);
+typedef void (*CHECKNEW_ReduceAction193_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction193_parser___ReduceAction193___init = "new ReduceAction193 parser::ReduceAction193::init";
+val_t NEW_ReduceAction193_parser___ReduceAction193___init(val_t p0);
+typedef val_t (*NEW_ReduceAction193_parser___ReduceAction193___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction194 = "init var of ReduceAction194";
+void INIT_ATTRIBUTES__ReduceAction194(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction194_t)(val_t p0);
+val_t NEW_ReduceAction194(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction194 = "check new ReduceAction194";
+void CHECKNEW_ReduceAction194(val_t p0);
+typedef void (*CHECKNEW_ReduceAction194_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction194_parser___ReduceAction194___init = "new ReduceAction194 parser::ReduceAction194::init";
+val_t NEW_ReduceAction194_parser___ReduceAction194___init(val_t p0);
+typedef val_t (*NEW_ReduceAction194_parser___ReduceAction194___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction195 = "init var of ReduceAction195";
+void INIT_ATTRIBUTES__ReduceAction195(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction195_t)(val_t p0);
+val_t NEW_ReduceAction195(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction195 = "check new ReduceAction195";
+void CHECKNEW_ReduceAction195(val_t p0);
+typedef void (*CHECKNEW_ReduceAction195_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction195_parser___ReduceAction195___init = "new ReduceAction195 parser::ReduceAction195::init";
+val_t NEW_ReduceAction195_parser___ReduceAction195___init(val_t p0);
+typedef val_t (*NEW_ReduceAction195_parser___ReduceAction195___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction196 = "init var of ReduceAction196";
+void INIT_ATTRIBUTES__ReduceAction196(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction196_t)(val_t p0);
+val_t NEW_ReduceAction196(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction196 = "check new ReduceAction196";
+void CHECKNEW_ReduceAction196(val_t p0);
+typedef void (*CHECKNEW_ReduceAction196_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction196_parser___ReduceAction196___init = "new ReduceAction196 parser::ReduceAction196::init";
+val_t NEW_ReduceAction196_parser___ReduceAction196___init(val_t p0);
+typedef val_t (*NEW_ReduceAction196_parser___ReduceAction196___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction197 = "init var of ReduceAction197";
+void INIT_ATTRIBUTES__ReduceAction197(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction197_t)(val_t p0);
+val_t NEW_ReduceAction197(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction197 = "check new ReduceAction197";
+void CHECKNEW_ReduceAction197(val_t p0);
+typedef void (*CHECKNEW_ReduceAction197_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction197_parser___ReduceAction197___init = "new ReduceAction197 parser::ReduceAction197::init";
+val_t NEW_ReduceAction197_parser___ReduceAction197___init(val_t p0);
+typedef val_t (*NEW_ReduceAction197_parser___ReduceAction197___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction198 = "init var of ReduceAction198";
+void INIT_ATTRIBUTES__ReduceAction198(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction198_t)(val_t p0);
+val_t NEW_ReduceAction198(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction198 = "check new ReduceAction198";
+void CHECKNEW_ReduceAction198(val_t p0);
+typedef void (*CHECKNEW_ReduceAction198_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction198_parser___ReduceAction198___init = "new ReduceAction198 parser::ReduceAction198::init";
+val_t NEW_ReduceAction198_parser___ReduceAction198___init(val_t p0);
+typedef val_t (*NEW_ReduceAction198_parser___ReduceAction198___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction199 = "init var of ReduceAction199";
+void INIT_ATTRIBUTES__ReduceAction199(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction199_t)(val_t p0);
+val_t NEW_ReduceAction199(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction199 = "check new ReduceAction199";
+void CHECKNEW_ReduceAction199(val_t p0);
+typedef void (*CHECKNEW_ReduceAction199_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction199_parser___ReduceAction199___init = "new ReduceAction199 parser::ReduceAction199::init";
+val_t NEW_ReduceAction199_parser___ReduceAction199___init(val_t p0);
+typedef val_t (*NEW_ReduceAction199_parser___ReduceAction199___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction200 = "init var of ReduceAction200";
+void INIT_ATTRIBUTES__ReduceAction200(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction200_t)(val_t p0);
+val_t NEW_ReduceAction200(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction200 = "check new ReduceAction200";
+void CHECKNEW_ReduceAction200(val_t p0);
+typedef void (*CHECKNEW_ReduceAction200_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction200_parser___ReduceAction200___init = "new ReduceAction200 parser::ReduceAction200::init";
+val_t NEW_ReduceAction200_parser___ReduceAction200___init(val_t p0);
+typedef val_t (*NEW_ReduceAction200_parser___ReduceAction200___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction202 = "init var of ReduceAction202";
+void INIT_ATTRIBUTES__ReduceAction202(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction202_t)(val_t p0);
+val_t NEW_ReduceAction202(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction202 = "check new ReduceAction202";
+void CHECKNEW_ReduceAction202(val_t p0);
+typedef void (*CHECKNEW_ReduceAction202_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction202_parser___ReduceAction202___init = "new ReduceAction202 parser::ReduceAction202::init";
+val_t NEW_ReduceAction202_parser___ReduceAction202___init(val_t p0);
+typedef val_t (*NEW_ReduceAction202_parser___ReduceAction202___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction203 = "init var of ReduceAction203";
+void INIT_ATTRIBUTES__ReduceAction203(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction203_t)(val_t p0);
+val_t NEW_ReduceAction203(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction203 = "check new ReduceAction203";
+void CHECKNEW_ReduceAction203(val_t p0);
+typedef void (*CHECKNEW_ReduceAction203_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction203_parser___ReduceAction203___init = "new ReduceAction203 parser::ReduceAction203::init";
+val_t NEW_ReduceAction203_parser___ReduceAction203___init(val_t p0);
+typedef val_t (*NEW_ReduceAction203_parser___ReduceAction203___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction204 = "init var of ReduceAction204";
+void INIT_ATTRIBUTES__ReduceAction204(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction204_t)(val_t p0);
+val_t NEW_ReduceAction204(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction204 = "check new ReduceAction204";
+void CHECKNEW_ReduceAction204(val_t p0);
+typedef void (*CHECKNEW_ReduceAction204_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction204_parser___ReduceAction204___init = "new ReduceAction204 parser::ReduceAction204::init";
+val_t NEW_ReduceAction204_parser___ReduceAction204___init(val_t p0);
+typedef val_t (*NEW_ReduceAction204_parser___ReduceAction204___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction205 = "init var of ReduceAction205";
+void INIT_ATTRIBUTES__ReduceAction205(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction205_t)(val_t p0);
+val_t NEW_ReduceAction205(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction205 = "check new ReduceAction205";
+void CHECKNEW_ReduceAction205(val_t p0);
+typedef void (*CHECKNEW_ReduceAction205_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction205_parser___ReduceAction205___init = "new ReduceAction205 parser::ReduceAction205::init";
+val_t NEW_ReduceAction205_parser___ReduceAction205___init(val_t p0);
+typedef val_t (*NEW_ReduceAction205_parser___ReduceAction205___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction206 = "init var of ReduceAction206";
+void INIT_ATTRIBUTES__ReduceAction206(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction206_t)(val_t p0);
+val_t NEW_ReduceAction206(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction206 = "check new ReduceAction206";
+void CHECKNEW_ReduceAction206(val_t p0);
+typedef void (*CHECKNEW_ReduceAction206_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction206_parser___ReduceAction206___init = "new ReduceAction206 parser::ReduceAction206::init";
+val_t NEW_ReduceAction206_parser___ReduceAction206___init(val_t p0);
+typedef val_t (*NEW_ReduceAction206_parser___ReduceAction206___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction207 = "init var of ReduceAction207";
+void INIT_ATTRIBUTES__ReduceAction207(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction207_t)(val_t p0);
+val_t NEW_ReduceAction207(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction207 = "check new ReduceAction207";
+void CHECKNEW_ReduceAction207(val_t p0);
+typedef void (*CHECKNEW_ReduceAction207_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction207_parser___ReduceAction207___init = "new ReduceAction207 parser::ReduceAction207::init";
+val_t NEW_ReduceAction207_parser___ReduceAction207___init(val_t p0);
+typedef val_t (*NEW_ReduceAction207_parser___ReduceAction207___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction208 = "init var of ReduceAction208";
+void INIT_ATTRIBUTES__ReduceAction208(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction208_t)(val_t p0);
+val_t NEW_ReduceAction208(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction208 = "check new ReduceAction208";
+void CHECKNEW_ReduceAction208(val_t p0);
+typedef void (*CHECKNEW_ReduceAction208_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction208_parser___ReduceAction208___init = "new ReduceAction208 parser::ReduceAction208::init";
+val_t NEW_ReduceAction208_parser___ReduceAction208___init(val_t p0);
+typedef val_t (*NEW_ReduceAction208_parser___ReduceAction208___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction209 = "init var of ReduceAction209";
+void INIT_ATTRIBUTES__ReduceAction209(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction209_t)(val_t p0);
+val_t NEW_ReduceAction209(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction209 = "check new ReduceAction209";
+void CHECKNEW_ReduceAction209(val_t p0);
+typedef void (*CHECKNEW_ReduceAction209_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction209_parser___ReduceAction209___init = "new ReduceAction209 parser::ReduceAction209::init";
+val_t NEW_ReduceAction209_parser___ReduceAction209___init(val_t p0);
+typedef val_t (*NEW_ReduceAction209_parser___ReduceAction209___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction210 = "init var of ReduceAction210";
+void INIT_ATTRIBUTES__ReduceAction210(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction210_t)(val_t p0);
+val_t NEW_ReduceAction210(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction210 = "check new ReduceAction210";
+void CHECKNEW_ReduceAction210(val_t p0);
+typedef void (*CHECKNEW_ReduceAction210_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction210_parser___ReduceAction210___init = "new ReduceAction210 parser::ReduceAction210::init";
+val_t NEW_ReduceAction210_parser___ReduceAction210___init(val_t p0);
+typedef val_t (*NEW_ReduceAction210_parser___ReduceAction210___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction213 = "init var of ReduceAction213";
+void INIT_ATTRIBUTES__ReduceAction213(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction213_t)(val_t p0);
+val_t NEW_ReduceAction213(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction213 = "check new ReduceAction213";
+void CHECKNEW_ReduceAction213(val_t p0);
+typedef void (*CHECKNEW_ReduceAction213_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction213_parser___ReduceAction213___init = "new ReduceAction213 parser::ReduceAction213::init";
+val_t NEW_ReduceAction213_parser___ReduceAction213___init(val_t p0);
+typedef val_t (*NEW_ReduceAction213_parser___ReduceAction213___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction214 = "init var of ReduceAction214";
+void INIT_ATTRIBUTES__ReduceAction214(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction214_t)(val_t p0);
+val_t NEW_ReduceAction214(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction214 = "check new ReduceAction214";
+void CHECKNEW_ReduceAction214(val_t p0);
+typedef void (*CHECKNEW_ReduceAction214_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction214_parser___ReduceAction214___init = "new ReduceAction214 parser::ReduceAction214::init";
+val_t NEW_ReduceAction214_parser___ReduceAction214___init(val_t p0);
+typedef val_t (*NEW_ReduceAction214_parser___ReduceAction214___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction215 = "init var of ReduceAction215";
+void INIT_ATTRIBUTES__ReduceAction215(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction215_t)(val_t p0);
+val_t NEW_ReduceAction215(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction215 = "check new ReduceAction215";
+void CHECKNEW_ReduceAction215(val_t p0);
+typedef void (*CHECKNEW_ReduceAction215_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction215_parser___ReduceAction215___init = "new ReduceAction215 parser::ReduceAction215::init";
+val_t NEW_ReduceAction215_parser___ReduceAction215___init(val_t p0);
+typedef val_t (*NEW_ReduceAction215_parser___ReduceAction215___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction216 = "init var of ReduceAction216";
+void INIT_ATTRIBUTES__ReduceAction216(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction216_t)(val_t p0);
+val_t NEW_ReduceAction216(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction216 = "check new ReduceAction216";
+void CHECKNEW_ReduceAction216(val_t p0);
+typedef void (*CHECKNEW_ReduceAction216_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction216_parser___ReduceAction216___init = "new ReduceAction216 parser::ReduceAction216::init";
+val_t NEW_ReduceAction216_parser___ReduceAction216___init(val_t p0);
+typedef val_t (*NEW_ReduceAction216_parser___ReduceAction216___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction217 = "init var of ReduceAction217";
+void INIT_ATTRIBUTES__ReduceAction217(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction217_t)(val_t p0);
+val_t NEW_ReduceAction217(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction217 = "check new ReduceAction217";
+void CHECKNEW_ReduceAction217(val_t p0);
+typedef void (*CHECKNEW_ReduceAction217_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction217_parser___ReduceAction217___init = "new ReduceAction217 parser::ReduceAction217::init";
+val_t NEW_ReduceAction217_parser___ReduceAction217___init(val_t p0);
+typedef val_t (*NEW_ReduceAction217_parser___ReduceAction217___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction218 = "init var of ReduceAction218";
+void INIT_ATTRIBUTES__ReduceAction218(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction218_t)(val_t p0);
+val_t NEW_ReduceAction218(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction218 = "check new ReduceAction218";
+void CHECKNEW_ReduceAction218(val_t p0);
+typedef void (*CHECKNEW_ReduceAction218_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction218_parser___ReduceAction218___init = "new ReduceAction218 parser::ReduceAction218::init";
+val_t NEW_ReduceAction218_parser___ReduceAction218___init(val_t p0);
+typedef val_t (*NEW_ReduceAction218_parser___ReduceAction218___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction219 = "init var of ReduceAction219";
+void INIT_ATTRIBUTES__ReduceAction219(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction219_t)(val_t p0);
+val_t NEW_ReduceAction219(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction219 = "check new ReduceAction219";
+void CHECKNEW_ReduceAction219(val_t p0);
+typedef void (*CHECKNEW_ReduceAction219_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction219_parser___ReduceAction219___init = "new ReduceAction219 parser::ReduceAction219::init";
+val_t NEW_ReduceAction219_parser___ReduceAction219___init(val_t p0);
+typedef val_t (*NEW_ReduceAction219_parser___ReduceAction219___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction220 = "init var of ReduceAction220";
+void INIT_ATTRIBUTES__ReduceAction220(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction220_t)(val_t p0);
+val_t NEW_ReduceAction220(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction220 = "check new ReduceAction220";
+void CHECKNEW_ReduceAction220(val_t p0);
+typedef void (*CHECKNEW_ReduceAction220_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction220_parser___ReduceAction220___init = "new ReduceAction220 parser::ReduceAction220::init";
+val_t NEW_ReduceAction220_parser___ReduceAction220___init(val_t p0);
+typedef val_t (*NEW_ReduceAction220_parser___ReduceAction220___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction221 = "init var of ReduceAction221";
+void INIT_ATTRIBUTES__ReduceAction221(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction221_t)(val_t p0);
+val_t NEW_ReduceAction221(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction221 = "check new ReduceAction221";
+void CHECKNEW_ReduceAction221(val_t p0);
+typedef void (*CHECKNEW_ReduceAction221_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction221_parser___ReduceAction221___init = "new ReduceAction221 parser::ReduceAction221::init";
+val_t NEW_ReduceAction221_parser___ReduceAction221___init(val_t p0);
+typedef val_t (*NEW_ReduceAction221_parser___ReduceAction221___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction222 = "init var of ReduceAction222";
+void INIT_ATTRIBUTES__ReduceAction222(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction222_t)(val_t p0);
+val_t NEW_ReduceAction222(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction222 = "check new ReduceAction222";
+void CHECKNEW_ReduceAction222(val_t p0);
+typedef void (*CHECKNEW_ReduceAction222_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction222_parser___ReduceAction222___init = "new ReduceAction222 parser::ReduceAction222::init";
+val_t NEW_ReduceAction222_parser___ReduceAction222___init(val_t p0);
+typedef val_t (*NEW_ReduceAction222_parser___ReduceAction222___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction223 = "init var of ReduceAction223";
+void INIT_ATTRIBUTES__ReduceAction223(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction223_t)(val_t p0);
+val_t NEW_ReduceAction223(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction223 = "check new ReduceAction223";
+void CHECKNEW_ReduceAction223(val_t p0);
+typedef void (*CHECKNEW_ReduceAction223_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction223_parser___ReduceAction223___init = "new ReduceAction223 parser::ReduceAction223::init";
+val_t NEW_ReduceAction223_parser___ReduceAction223___init(val_t p0);
+typedef val_t (*NEW_ReduceAction223_parser___ReduceAction223___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction230 = "init var of ReduceAction230";
+void INIT_ATTRIBUTES__ReduceAction230(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction230_t)(val_t p0);
+val_t NEW_ReduceAction230(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction230 = "check new ReduceAction230";
+void CHECKNEW_ReduceAction230(val_t p0);
+typedef void (*CHECKNEW_ReduceAction230_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction230_parser___ReduceAction230___init = "new ReduceAction230 parser::ReduceAction230::init";
+val_t NEW_ReduceAction230_parser___ReduceAction230___init(val_t p0);
+typedef val_t (*NEW_ReduceAction230_parser___ReduceAction230___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction231 = "init var of ReduceAction231";
+void INIT_ATTRIBUTES__ReduceAction231(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction231_t)(val_t p0);
+val_t NEW_ReduceAction231(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction231 = "check new ReduceAction231";
+void CHECKNEW_ReduceAction231(val_t p0);
+typedef void (*CHECKNEW_ReduceAction231_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction231_parser___ReduceAction231___init = "new ReduceAction231 parser::ReduceAction231::init";
+val_t NEW_ReduceAction231_parser___ReduceAction231___init(val_t p0);
+typedef val_t (*NEW_ReduceAction231_parser___ReduceAction231___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction232 = "init var of ReduceAction232";
+void INIT_ATTRIBUTES__ReduceAction232(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction232_t)(val_t p0);
+val_t NEW_ReduceAction232(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction232 = "check new ReduceAction232";
+void CHECKNEW_ReduceAction232(val_t p0);
+typedef void (*CHECKNEW_ReduceAction232_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction232_parser___ReduceAction232___init = "new ReduceAction232 parser::ReduceAction232::init";
+val_t NEW_ReduceAction232_parser___ReduceAction232___init(val_t p0);
+typedef val_t (*NEW_ReduceAction232_parser___ReduceAction232___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction233 = "init var of ReduceAction233";
+void INIT_ATTRIBUTES__ReduceAction233(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction233_t)(val_t p0);
+val_t NEW_ReduceAction233(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction233 = "check new ReduceAction233";
+void CHECKNEW_ReduceAction233(val_t p0);
+typedef void (*CHECKNEW_ReduceAction233_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction233_parser___ReduceAction233___init = "new ReduceAction233 parser::ReduceAction233::init";
+val_t NEW_ReduceAction233_parser___ReduceAction233___init(val_t p0);
+typedef val_t (*NEW_ReduceAction233_parser___ReduceAction233___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction234 = "init var of ReduceAction234";
+void INIT_ATTRIBUTES__ReduceAction234(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction234_t)(val_t p0);
+val_t NEW_ReduceAction234(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction234 = "check new ReduceAction234";
+void CHECKNEW_ReduceAction234(val_t p0);
+typedef void (*CHECKNEW_ReduceAction234_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction234_parser___ReduceAction234___init = "new ReduceAction234 parser::ReduceAction234::init";
+val_t NEW_ReduceAction234_parser___ReduceAction234___init(val_t p0);
+typedef val_t (*NEW_ReduceAction234_parser___ReduceAction234___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction235 = "init var of ReduceAction235";
+void INIT_ATTRIBUTES__ReduceAction235(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction235_t)(val_t p0);
+val_t NEW_ReduceAction235(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction235 = "check new ReduceAction235";
+void CHECKNEW_ReduceAction235(val_t p0);
+typedef void (*CHECKNEW_ReduceAction235_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction235_parser___ReduceAction235___init = "new ReduceAction235 parser::ReduceAction235::init";
+val_t NEW_ReduceAction235_parser___ReduceAction235___init(val_t p0);
+typedef val_t (*NEW_ReduceAction235_parser___ReduceAction235___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction236 = "init var of ReduceAction236";
+void INIT_ATTRIBUTES__ReduceAction236(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction236_t)(val_t p0);
+val_t NEW_ReduceAction236(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction236 = "check new ReduceAction236";
+void CHECKNEW_ReduceAction236(val_t p0);
+typedef void (*CHECKNEW_ReduceAction236_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction236_parser___ReduceAction236___init = "new ReduceAction236 parser::ReduceAction236::init";
+val_t NEW_ReduceAction236_parser___ReduceAction236___init(val_t p0);
+typedef val_t (*NEW_ReduceAction236_parser___ReduceAction236___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction237 = "init var of ReduceAction237";
+void INIT_ATTRIBUTES__ReduceAction237(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction237_t)(val_t p0);
+val_t NEW_ReduceAction237(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction237 = "check new ReduceAction237";
+void CHECKNEW_ReduceAction237(val_t p0);
+typedef void (*CHECKNEW_ReduceAction237_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction237_parser___ReduceAction237___init = "new ReduceAction237 parser::ReduceAction237::init";
+val_t NEW_ReduceAction237_parser___ReduceAction237___init(val_t p0);
+typedef val_t (*NEW_ReduceAction237_parser___ReduceAction237___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction238 = "init var of ReduceAction238";
+void INIT_ATTRIBUTES__ReduceAction238(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction238_t)(val_t p0);
+val_t NEW_ReduceAction238(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction238 = "check new ReduceAction238";
+void CHECKNEW_ReduceAction238(val_t p0);
+typedef void (*CHECKNEW_ReduceAction238_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction238_parser___ReduceAction238___init = "new ReduceAction238 parser::ReduceAction238::init";
+val_t NEW_ReduceAction238_parser___ReduceAction238___init(val_t p0);
+typedef val_t (*NEW_ReduceAction238_parser___ReduceAction238___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction239 = "init var of ReduceAction239";
+void INIT_ATTRIBUTES__ReduceAction239(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction239_t)(val_t p0);
+val_t NEW_ReduceAction239(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction239 = "check new ReduceAction239";
+void CHECKNEW_ReduceAction239(val_t p0);
+typedef void (*CHECKNEW_ReduceAction239_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction239_parser___ReduceAction239___init = "new ReduceAction239 parser::ReduceAction239::init";
+val_t NEW_ReduceAction239_parser___ReduceAction239___init(val_t p0);
+typedef val_t (*NEW_ReduceAction239_parser___ReduceAction239___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction240 = "init var of ReduceAction240";
+void INIT_ATTRIBUTES__ReduceAction240(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction240_t)(val_t p0);
+val_t NEW_ReduceAction240(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction240 = "check new ReduceAction240";
+void CHECKNEW_ReduceAction240(val_t p0);
+typedef void (*CHECKNEW_ReduceAction240_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction240_parser___ReduceAction240___init = "new ReduceAction240 parser::ReduceAction240::init";
+val_t NEW_ReduceAction240_parser___ReduceAction240___init(val_t p0);
+typedef val_t (*NEW_ReduceAction240_parser___ReduceAction240___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction241 = "init var of ReduceAction241";
+void INIT_ATTRIBUTES__ReduceAction241(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction241_t)(val_t p0);
+val_t NEW_ReduceAction241(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction241 = "check new ReduceAction241";
+void CHECKNEW_ReduceAction241(val_t p0);
+typedef void (*CHECKNEW_ReduceAction241_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction241_parser___ReduceAction241___init = "new ReduceAction241 parser::ReduceAction241::init";
+val_t NEW_ReduceAction241_parser___ReduceAction241___init(val_t p0);
+typedef val_t (*NEW_ReduceAction241_parser___ReduceAction241___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction242 = "init var of ReduceAction242";
+void INIT_ATTRIBUTES__ReduceAction242(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction242_t)(val_t p0);
+val_t NEW_ReduceAction242(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction242 = "check new ReduceAction242";
+void CHECKNEW_ReduceAction242(val_t p0);
+typedef void (*CHECKNEW_ReduceAction242_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction242_parser___ReduceAction242___init = "new ReduceAction242 parser::ReduceAction242::init";
+val_t NEW_ReduceAction242_parser___ReduceAction242___init(val_t p0);
+typedef val_t (*NEW_ReduceAction242_parser___ReduceAction242___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction243 = "init var of ReduceAction243";
+void INIT_ATTRIBUTES__ReduceAction243(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction243_t)(val_t p0);
+val_t NEW_ReduceAction243(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction243 = "check new ReduceAction243";
+void CHECKNEW_ReduceAction243(val_t p0);
+typedef void (*CHECKNEW_ReduceAction243_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction243_parser___ReduceAction243___init = "new ReduceAction243 parser::ReduceAction243::init";
+val_t NEW_ReduceAction243_parser___ReduceAction243___init(val_t p0);
+typedef val_t (*NEW_ReduceAction243_parser___ReduceAction243___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction244 = "init var of ReduceAction244";
+void INIT_ATTRIBUTES__ReduceAction244(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction244_t)(val_t p0);
+val_t NEW_ReduceAction244(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction244 = "check new ReduceAction244";
+void CHECKNEW_ReduceAction244(val_t p0);
+typedef void (*CHECKNEW_ReduceAction244_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction244_parser___ReduceAction244___init = "new ReduceAction244 parser::ReduceAction244::init";
+val_t NEW_ReduceAction244_parser___ReduceAction244___init(val_t p0);
+typedef val_t (*NEW_ReduceAction244_parser___ReduceAction244___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction245 = "init var of ReduceAction245";
+void INIT_ATTRIBUTES__ReduceAction245(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction245_t)(val_t p0);
+val_t NEW_ReduceAction245(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction245 = "check new ReduceAction245";
+void CHECKNEW_ReduceAction245(val_t p0);
+typedef void (*CHECKNEW_ReduceAction245_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction245_parser___ReduceAction245___init = "new ReduceAction245 parser::ReduceAction245::init";
+val_t NEW_ReduceAction245_parser___ReduceAction245___init(val_t p0);
+typedef val_t (*NEW_ReduceAction245_parser___ReduceAction245___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction246 = "init var of ReduceAction246";
+void INIT_ATTRIBUTES__ReduceAction246(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction246_t)(val_t p0);
+val_t NEW_ReduceAction246(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction246 = "check new ReduceAction246";
+void CHECKNEW_ReduceAction246(val_t p0);
+typedef void (*CHECKNEW_ReduceAction246_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction246_parser___ReduceAction246___init = "new ReduceAction246 parser::ReduceAction246::init";
+val_t NEW_ReduceAction246_parser___ReduceAction246___init(val_t p0);
+typedef val_t (*NEW_ReduceAction246_parser___ReduceAction246___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction247 = "init var of ReduceAction247";
+void INIT_ATTRIBUTES__ReduceAction247(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction247_t)(val_t p0);
+val_t NEW_ReduceAction247(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction247 = "check new ReduceAction247";
+void CHECKNEW_ReduceAction247(val_t p0);
+typedef void (*CHECKNEW_ReduceAction247_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction247_parser___ReduceAction247___init = "new ReduceAction247 parser::ReduceAction247::init";
+val_t NEW_ReduceAction247_parser___ReduceAction247___init(val_t p0);
+typedef val_t (*NEW_ReduceAction247_parser___ReduceAction247___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction248 = "init var of ReduceAction248";
+void INIT_ATTRIBUTES__ReduceAction248(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction248_t)(val_t p0);
+val_t NEW_ReduceAction248(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction248 = "check new ReduceAction248";
+void CHECKNEW_ReduceAction248(val_t p0);
+typedef void (*CHECKNEW_ReduceAction248_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction248_parser___ReduceAction248___init = "new ReduceAction248 parser::ReduceAction248::init";
+val_t NEW_ReduceAction248_parser___ReduceAction248___init(val_t p0);
+typedef val_t (*NEW_ReduceAction248_parser___ReduceAction248___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction249 = "init var of ReduceAction249";
+void INIT_ATTRIBUTES__ReduceAction249(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction249_t)(val_t p0);
+val_t NEW_ReduceAction249(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction249 = "check new ReduceAction249";
+void CHECKNEW_ReduceAction249(val_t p0);
+typedef void (*CHECKNEW_ReduceAction249_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction249_parser___ReduceAction249___init = "new ReduceAction249 parser::ReduceAction249::init";
+val_t NEW_ReduceAction249_parser___ReduceAction249___init(val_t p0);
+typedef val_t (*NEW_ReduceAction249_parser___ReduceAction249___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction250 = "init var of ReduceAction250";
+void INIT_ATTRIBUTES__ReduceAction250(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction250_t)(val_t p0);
+val_t NEW_ReduceAction250(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction250 = "check new ReduceAction250";
+void CHECKNEW_ReduceAction250(val_t p0);
+typedef void (*CHECKNEW_ReduceAction250_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction250_parser___ReduceAction250___init = "new ReduceAction250 parser::ReduceAction250::init";
+val_t NEW_ReduceAction250_parser___ReduceAction250___init(val_t p0);
+typedef val_t (*NEW_ReduceAction250_parser___ReduceAction250___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction251 = "init var of ReduceAction251";
+void INIT_ATTRIBUTES__ReduceAction251(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction251_t)(val_t p0);
+val_t NEW_ReduceAction251(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction251 = "check new ReduceAction251";
+void CHECKNEW_ReduceAction251(val_t p0);
+typedef void (*CHECKNEW_ReduceAction251_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction251_parser___ReduceAction251___init = "new ReduceAction251 parser::ReduceAction251::init";
+val_t NEW_ReduceAction251_parser___ReduceAction251___init(val_t p0);
+typedef val_t (*NEW_ReduceAction251_parser___ReduceAction251___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction252 = "init var of ReduceAction252";
+void INIT_ATTRIBUTES__ReduceAction252(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction252_t)(val_t p0);
+val_t NEW_ReduceAction252(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction252 = "check new ReduceAction252";
+void CHECKNEW_ReduceAction252(val_t p0);
+typedef void (*CHECKNEW_ReduceAction252_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction252_parser___ReduceAction252___init = "new ReduceAction252 parser::ReduceAction252::init";
+val_t NEW_ReduceAction252_parser___ReduceAction252___init(val_t p0);
+typedef val_t (*NEW_ReduceAction252_parser___ReduceAction252___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction253 = "init var of ReduceAction253";
+void INIT_ATTRIBUTES__ReduceAction253(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction253_t)(val_t p0);
+val_t NEW_ReduceAction253(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction253 = "check new ReduceAction253";
+void CHECKNEW_ReduceAction253(val_t p0);
+typedef void (*CHECKNEW_ReduceAction253_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction253_parser___ReduceAction253___init = "new ReduceAction253 parser::ReduceAction253::init";
+val_t NEW_ReduceAction253_parser___ReduceAction253___init(val_t p0);
+typedef val_t (*NEW_ReduceAction253_parser___ReduceAction253___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction254 = "init var of ReduceAction254";
+void INIT_ATTRIBUTES__ReduceAction254(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction254_t)(val_t p0);
+val_t NEW_ReduceAction254(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction254 = "check new ReduceAction254";
+void CHECKNEW_ReduceAction254(val_t p0);
+typedef void (*CHECKNEW_ReduceAction254_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction254_parser___ReduceAction254___init = "new ReduceAction254 parser::ReduceAction254::init";
+val_t NEW_ReduceAction254_parser___ReduceAction254___init(val_t p0);
+typedef val_t (*NEW_ReduceAction254_parser___ReduceAction254___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction255 = "init var of ReduceAction255";
+void INIT_ATTRIBUTES__ReduceAction255(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction255_t)(val_t p0);
+val_t NEW_ReduceAction255(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction255 = "check new ReduceAction255";
+void CHECKNEW_ReduceAction255(val_t p0);
+typedef void (*CHECKNEW_ReduceAction255_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction255_parser___ReduceAction255___init = "new ReduceAction255 parser::ReduceAction255::init";
+val_t NEW_ReduceAction255_parser___ReduceAction255___init(val_t p0);
+typedef val_t (*NEW_ReduceAction255_parser___ReduceAction255___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction256 = "init var of ReduceAction256";
+void INIT_ATTRIBUTES__ReduceAction256(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction256_t)(val_t p0);
+val_t NEW_ReduceAction256(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction256 = "check new ReduceAction256";
+void CHECKNEW_ReduceAction256(val_t p0);
+typedef void (*CHECKNEW_ReduceAction256_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction256_parser___ReduceAction256___init = "new ReduceAction256 parser::ReduceAction256::init";
+val_t NEW_ReduceAction256_parser___ReduceAction256___init(val_t p0);
+typedef val_t (*NEW_ReduceAction256_parser___ReduceAction256___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction257 = "init var of ReduceAction257";
+void INIT_ATTRIBUTES__ReduceAction257(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction257_t)(val_t p0);
+val_t NEW_ReduceAction257(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction257 = "check new ReduceAction257";
+void CHECKNEW_ReduceAction257(val_t p0);
+typedef void (*CHECKNEW_ReduceAction257_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction257_parser___ReduceAction257___init = "new ReduceAction257 parser::ReduceAction257::init";
+val_t NEW_ReduceAction257_parser___ReduceAction257___init(val_t p0);
+typedef val_t (*NEW_ReduceAction257_parser___ReduceAction257___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction258 = "init var of ReduceAction258";
+void INIT_ATTRIBUTES__ReduceAction258(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction258_t)(val_t p0);
+val_t NEW_ReduceAction258(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction258 = "check new ReduceAction258";
+void CHECKNEW_ReduceAction258(val_t p0);
+typedef void (*CHECKNEW_ReduceAction258_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction258_parser___ReduceAction258___init = "new ReduceAction258 parser::ReduceAction258::init";
+val_t NEW_ReduceAction258_parser___ReduceAction258___init(val_t p0);
+typedef val_t (*NEW_ReduceAction258_parser___ReduceAction258___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction259 = "init var of ReduceAction259";
+void INIT_ATTRIBUTES__ReduceAction259(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction259_t)(val_t p0);
+val_t NEW_ReduceAction259(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction259 = "check new ReduceAction259";
+void CHECKNEW_ReduceAction259(val_t p0);
+typedef void (*CHECKNEW_ReduceAction259_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction259_parser___ReduceAction259___init = "new ReduceAction259 parser::ReduceAction259::init";
+val_t NEW_ReduceAction259_parser___ReduceAction259___init(val_t p0);
+typedef val_t (*NEW_ReduceAction259_parser___ReduceAction259___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction260 = "init var of ReduceAction260";
+void INIT_ATTRIBUTES__ReduceAction260(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction260_t)(val_t p0);
+val_t NEW_ReduceAction260(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction260 = "check new ReduceAction260";
+void CHECKNEW_ReduceAction260(val_t p0);
+typedef void (*CHECKNEW_ReduceAction260_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction260_parser___ReduceAction260___init = "new ReduceAction260 parser::ReduceAction260::init";
+val_t NEW_ReduceAction260_parser___ReduceAction260___init(val_t p0);
+typedef val_t (*NEW_ReduceAction260_parser___ReduceAction260___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction261 = "init var of ReduceAction261";
+void INIT_ATTRIBUTES__ReduceAction261(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction261_t)(val_t p0);
+val_t NEW_ReduceAction261(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction261 = "check new ReduceAction261";
+void CHECKNEW_ReduceAction261(val_t p0);
+typedef void (*CHECKNEW_ReduceAction261_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction261_parser___ReduceAction261___init = "new ReduceAction261 parser::ReduceAction261::init";
+val_t NEW_ReduceAction261_parser___ReduceAction261___init(val_t p0);
+typedef val_t (*NEW_ReduceAction261_parser___ReduceAction261___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction262 = "init var of ReduceAction262";
+void INIT_ATTRIBUTES__ReduceAction262(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction262_t)(val_t p0);
+val_t NEW_ReduceAction262(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction262 = "check new ReduceAction262";
+void CHECKNEW_ReduceAction262(val_t p0);
+typedef void (*CHECKNEW_ReduceAction262_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction262_parser___ReduceAction262___init = "new ReduceAction262 parser::ReduceAction262::init";
+val_t NEW_ReduceAction262_parser___ReduceAction262___init(val_t p0);
+typedef val_t (*NEW_ReduceAction262_parser___ReduceAction262___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction263 = "init var of ReduceAction263";
+void INIT_ATTRIBUTES__ReduceAction263(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction263_t)(val_t p0);
+val_t NEW_ReduceAction263(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction263 = "check new ReduceAction263";
+void CHECKNEW_ReduceAction263(val_t p0);
+typedef void (*CHECKNEW_ReduceAction263_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction263_parser___ReduceAction263___init = "new ReduceAction263 parser::ReduceAction263::init";
+val_t NEW_ReduceAction263_parser___ReduceAction263___init(val_t p0);
+typedef val_t (*NEW_ReduceAction263_parser___ReduceAction263___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction264 = "init var of ReduceAction264";
+void INIT_ATTRIBUTES__ReduceAction264(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction264_t)(val_t p0);
+val_t NEW_ReduceAction264(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction264 = "check new ReduceAction264";
+void CHECKNEW_ReduceAction264(val_t p0);
+typedef void (*CHECKNEW_ReduceAction264_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction264_parser___ReduceAction264___init = "new ReduceAction264 parser::ReduceAction264::init";
+val_t NEW_ReduceAction264_parser___ReduceAction264___init(val_t p0);
+typedef val_t (*NEW_ReduceAction264_parser___ReduceAction264___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction265 = "init var of ReduceAction265";
+void INIT_ATTRIBUTES__ReduceAction265(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction265_t)(val_t p0);
+val_t NEW_ReduceAction265(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction265 = "check new ReduceAction265";
+void CHECKNEW_ReduceAction265(val_t p0);
+typedef void (*CHECKNEW_ReduceAction265_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction265_parser___ReduceAction265___init = "new ReduceAction265 parser::ReduceAction265::init";
+val_t NEW_ReduceAction265_parser___ReduceAction265___init(val_t p0);
+typedef val_t (*NEW_ReduceAction265_parser___ReduceAction265___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction266 = "init var of ReduceAction266";
+void INIT_ATTRIBUTES__ReduceAction266(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction266_t)(val_t p0);
+val_t NEW_ReduceAction266(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction266 = "check new ReduceAction266";
+void CHECKNEW_ReduceAction266(val_t p0);
+typedef void (*CHECKNEW_ReduceAction266_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction266_parser___ReduceAction266___init = "new ReduceAction266 parser::ReduceAction266::init";
+val_t NEW_ReduceAction266_parser___ReduceAction266___init(val_t p0);
+typedef val_t (*NEW_ReduceAction266_parser___ReduceAction266___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction267 = "init var of ReduceAction267";
+void INIT_ATTRIBUTES__ReduceAction267(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction267_t)(val_t p0);
+val_t NEW_ReduceAction267(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction267 = "check new ReduceAction267";
+void CHECKNEW_ReduceAction267(val_t p0);
+typedef void (*CHECKNEW_ReduceAction267_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction267_parser___ReduceAction267___init = "new ReduceAction267 parser::ReduceAction267::init";
+val_t NEW_ReduceAction267_parser___ReduceAction267___init(val_t p0);
+typedef val_t (*NEW_ReduceAction267_parser___ReduceAction267___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction268 = "init var of ReduceAction268";
+void INIT_ATTRIBUTES__ReduceAction268(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction268_t)(val_t p0);
+val_t NEW_ReduceAction268(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction268 = "check new ReduceAction268";
+void CHECKNEW_ReduceAction268(val_t p0);
+typedef void (*CHECKNEW_ReduceAction268_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction268_parser___ReduceAction268___init = "new ReduceAction268 parser::ReduceAction268::init";
+val_t NEW_ReduceAction268_parser___ReduceAction268___init(val_t p0);
+typedef val_t (*NEW_ReduceAction268_parser___ReduceAction268___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction269 = "init var of ReduceAction269";
+void INIT_ATTRIBUTES__ReduceAction269(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction269_t)(val_t p0);
+val_t NEW_ReduceAction269(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction269 = "check new ReduceAction269";
+void CHECKNEW_ReduceAction269(val_t p0);
+typedef void (*CHECKNEW_ReduceAction269_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction269_parser___ReduceAction269___init = "new ReduceAction269 parser::ReduceAction269::init";
+val_t NEW_ReduceAction269_parser___ReduceAction269___init(val_t p0);
+typedef val_t (*NEW_ReduceAction269_parser___ReduceAction269___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction270 = "init var of ReduceAction270";
+void INIT_ATTRIBUTES__ReduceAction270(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction270_t)(val_t p0);
+val_t NEW_ReduceAction270(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction270 = "check new ReduceAction270";
+void CHECKNEW_ReduceAction270(val_t p0);
+typedef void (*CHECKNEW_ReduceAction270_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction270_parser___ReduceAction270___init = "new ReduceAction270 parser::ReduceAction270::init";
+val_t NEW_ReduceAction270_parser___ReduceAction270___init(val_t p0);
+typedef val_t (*NEW_ReduceAction270_parser___ReduceAction270___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction271 = "init var of ReduceAction271";
+void INIT_ATTRIBUTES__ReduceAction271(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction271_t)(val_t p0);
+val_t NEW_ReduceAction271(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction271 = "check new ReduceAction271";
+void CHECKNEW_ReduceAction271(val_t p0);
+typedef void (*CHECKNEW_ReduceAction271_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction271_parser___ReduceAction271___init = "new ReduceAction271 parser::ReduceAction271::init";
+val_t NEW_ReduceAction271_parser___ReduceAction271___init(val_t p0);
+typedef val_t (*NEW_ReduceAction271_parser___ReduceAction271___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction272 = "init var of ReduceAction272";
+void INIT_ATTRIBUTES__ReduceAction272(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction272_t)(val_t p0);
+val_t NEW_ReduceAction272(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction272 = "check new ReduceAction272";
+void CHECKNEW_ReduceAction272(val_t p0);
+typedef void (*CHECKNEW_ReduceAction272_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction272_parser___ReduceAction272___init = "new ReduceAction272 parser::ReduceAction272::init";
+val_t NEW_ReduceAction272_parser___ReduceAction272___init(val_t p0);
+typedef val_t (*NEW_ReduceAction272_parser___ReduceAction272___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction273 = "init var of ReduceAction273";
+void INIT_ATTRIBUTES__ReduceAction273(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction273_t)(val_t p0);
+val_t NEW_ReduceAction273(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction273 = "check new ReduceAction273";
+void CHECKNEW_ReduceAction273(val_t p0);
+typedef void (*CHECKNEW_ReduceAction273_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction273_parser___ReduceAction273___init = "new ReduceAction273 parser::ReduceAction273::init";
+val_t NEW_ReduceAction273_parser___ReduceAction273___init(val_t p0);
+typedef val_t (*NEW_ReduceAction273_parser___ReduceAction273___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction274 = "init var of ReduceAction274";
+void INIT_ATTRIBUTES__ReduceAction274(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction274_t)(val_t p0);
+val_t NEW_ReduceAction274(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction274 = "check new ReduceAction274";
+void CHECKNEW_ReduceAction274(val_t p0);
+typedef void (*CHECKNEW_ReduceAction274_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction274_parser___ReduceAction274___init = "new ReduceAction274 parser::ReduceAction274::init";
+val_t NEW_ReduceAction274_parser___ReduceAction274___init(val_t p0);
+typedef val_t (*NEW_ReduceAction274_parser___ReduceAction274___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction275 = "init var of ReduceAction275";
+void INIT_ATTRIBUTES__ReduceAction275(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction275_t)(val_t p0);
+val_t NEW_ReduceAction275(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction275 = "check new ReduceAction275";
+void CHECKNEW_ReduceAction275(val_t p0);
+typedef void (*CHECKNEW_ReduceAction275_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction275_parser___ReduceAction275___init = "new ReduceAction275 parser::ReduceAction275::init";
+val_t NEW_ReduceAction275_parser___ReduceAction275___init(val_t p0);
+typedef val_t (*NEW_ReduceAction275_parser___ReduceAction275___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction276 = "init var of ReduceAction276";
+void INIT_ATTRIBUTES__ReduceAction276(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction276_t)(val_t p0);
+val_t NEW_ReduceAction276(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction276 = "check new ReduceAction276";
+void CHECKNEW_ReduceAction276(val_t p0);
+typedef void (*CHECKNEW_ReduceAction276_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction276_parser___ReduceAction276___init = "new ReduceAction276 parser::ReduceAction276::init";
+val_t NEW_ReduceAction276_parser___ReduceAction276___init(val_t p0);
+typedef val_t (*NEW_ReduceAction276_parser___ReduceAction276___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction279 = "init var of ReduceAction279";
+void INIT_ATTRIBUTES__ReduceAction279(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction279_t)(val_t p0);
+val_t NEW_ReduceAction279(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction279 = "check new ReduceAction279";
+void CHECKNEW_ReduceAction279(val_t p0);
+typedef void (*CHECKNEW_ReduceAction279_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction279_parser___ReduceAction279___init = "new ReduceAction279 parser::ReduceAction279::init";
+val_t NEW_ReduceAction279_parser___ReduceAction279___init(val_t p0);
+typedef val_t (*NEW_ReduceAction279_parser___ReduceAction279___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction280 = "init var of ReduceAction280";
+void INIT_ATTRIBUTES__ReduceAction280(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction280_t)(val_t p0);
+val_t NEW_ReduceAction280(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction280 = "check new ReduceAction280";
+void CHECKNEW_ReduceAction280(val_t p0);
+typedef void (*CHECKNEW_ReduceAction280_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction280_parser___ReduceAction280___init = "new ReduceAction280 parser::ReduceAction280::init";
+val_t NEW_ReduceAction280_parser___ReduceAction280___init(val_t p0);
+typedef val_t (*NEW_ReduceAction280_parser___ReduceAction280___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction281 = "init var of ReduceAction281";
+void INIT_ATTRIBUTES__ReduceAction281(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction281_t)(val_t p0);
+val_t NEW_ReduceAction281(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction281 = "check new ReduceAction281";
+void CHECKNEW_ReduceAction281(val_t p0);
+typedef void (*CHECKNEW_ReduceAction281_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction281_parser___ReduceAction281___init = "new ReduceAction281 parser::ReduceAction281::init";
+val_t NEW_ReduceAction281_parser___ReduceAction281___init(val_t p0);
+typedef val_t (*NEW_ReduceAction281_parser___ReduceAction281___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction282 = "init var of ReduceAction282";
+void INIT_ATTRIBUTES__ReduceAction282(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction282_t)(val_t p0);
+val_t NEW_ReduceAction282(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction282 = "check new ReduceAction282";
+void CHECKNEW_ReduceAction282(val_t p0);
+typedef void (*CHECKNEW_ReduceAction282_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction282_parser___ReduceAction282___init = "new ReduceAction282 parser::ReduceAction282::init";
+val_t NEW_ReduceAction282_parser___ReduceAction282___init(val_t p0);
+typedef val_t (*NEW_ReduceAction282_parser___ReduceAction282___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction283 = "init var of ReduceAction283";
+void INIT_ATTRIBUTES__ReduceAction283(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction283_t)(val_t p0);
+val_t NEW_ReduceAction283(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction283 = "check new ReduceAction283";
+void CHECKNEW_ReduceAction283(val_t p0);
+typedef void (*CHECKNEW_ReduceAction283_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction283_parser___ReduceAction283___init = "new ReduceAction283 parser::ReduceAction283::init";
+val_t NEW_ReduceAction283_parser___ReduceAction283___init(val_t p0);
+typedef val_t (*NEW_ReduceAction283_parser___ReduceAction283___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction284 = "init var of ReduceAction284";
+void INIT_ATTRIBUTES__ReduceAction284(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction284_t)(val_t p0);
+val_t NEW_ReduceAction284(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction284 = "check new ReduceAction284";
+void CHECKNEW_ReduceAction284(val_t p0);
+typedef void (*CHECKNEW_ReduceAction284_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction284_parser___ReduceAction284___init = "new ReduceAction284 parser::ReduceAction284::init";
+val_t NEW_ReduceAction284_parser___ReduceAction284___init(val_t p0);
+typedef val_t (*NEW_ReduceAction284_parser___ReduceAction284___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction285 = "init var of ReduceAction285";
+void INIT_ATTRIBUTES__ReduceAction285(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction285_t)(val_t p0);
+val_t NEW_ReduceAction285(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction285 = "check new ReduceAction285";
+void CHECKNEW_ReduceAction285(val_t p0);
+typedef void (*CHECKNEW_ReduceAction285_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction285_parser___ReduceAction285___init = "new ReduceAction285 parser::ReduceAction285::init";
+val_t NEW_ReduceAction285_parser___ReduceAction285___init(val_t p0);
+typedef val_t (*NEW_ReduceAction285_parser___ReduceAction285___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction286 = "init var of ReduceAction286";
+void INIT_ATTRIBUTES__ReduceAction286(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction286_t)(val_t p0);
+val_t NEW_ReduceAction286(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction286 = "check new ReduceAction286";
+void CHECKNEW_ReduceAction286(val_t p0);
+typedef void (*CHECKNEW_ReduceAction286_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction286_parser___ReduceAction286___init = "new ReduceAction286 parser::ReduceAction286::init";
+val_t NEW_ReduceAction286_parser___ReduceAction286___init(val_t p0);
+typedef val_t (*NEW_ReduceAction286_parser___ReduceAction286___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction287 = "init var of ReduceAction287";
+void INIT_ATTRIBUTES__ReduceAction287(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction287_t)(val_t p0);
+val_t NEW_ReduceAction287(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction287 = "check new ReduceAction287";
+void CHECKNEW_ReduceAction287(val_t p0);
+typedef void (*CHECKNEW_ReduceAction287_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction287_parser___ReduceAction287___init = "new ReduceAction287 parser::ReduceAction287::init";
+val_t NEW_ReduceAction287_parser___ReduceAction287___init(val_t p0);
+typedef val_t (*NEW_ReduceAction287_parser___ReduceAction287___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction288 = "init var of ReduceAction288";
+void INIT_ATTRIBUTES__ReduceAction288(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction288_t)(val_t p0);
+val_t NEW_ReduceAction288(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction288 = "check new ReduceAction288";
+void CHECKNEW_ReduceAction288(val_t p0);
+typedef void (*CHECKNEW_ReduceAction288_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction288_parser___ReduceAction288___init = "new ReduceAction288 parser::ReduceAction288::init";
+val_t NEW_ReduceAction288_parser___ReduceAction288___init(val_t p0);
+typedef val_t (*NEW_ReduceAction288_parser___ReduceAction288___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction289 = "init var of ReduceAction289";
+void INIT_ATTRIBUTES__ReduceAction289(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction289_t)(val_t p0);
+val_t NEW_ReduceAction289(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction289 = "check new ReduceAction289";
+void CHECKNEW_ReduceAction289(val_t p0);
+typedef void (*CHECKNEW_ReduceAction289_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction289_parser___ReduceAction289___init = "new ReduceAction289 parser::ReduceAction289::init";
+val_t NEW_ReduceAction289_parser___ReduceAction289___init(val_t p0);
+typedef val_t (*NEW_ReduceAction289_parser___ReduceAction289___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction293 = "init var of ReduceAction293";
+void INIT_ATTRIBUTES__ReduceAction293(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction293_t)(val_t p0);
+val_t NEW_ReduceAction293(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction293 = "check new ReduceAction293";
+void CHECKNEW_ReduceAction293(val_t p0);
+typedef void (*CHECKNEW_ReduceAction293_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction293_parser___ReduceAction293___init = "new ReduceAction293 parser::ReduceAction293::init";
+val_t NEW_ReduceAction293_parser___ReduceAction293___init(val_t p0);
+typedef val_t (*NEW_ReduceAction293_parser___ReduceAction293___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction295 = "init var of ReduceAction295";
+void INIT_ATTRIBUTES__ReduceAction295(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction295_t)(val_t p0);
+val_t NEW_ReduceAction295(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction295 = "check new ReduceAction295";
+void CHECKNEW_ReduceAction295(val_t p0);
+typedef void (*CHECKNEW_ReduceAction295_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction295_parser___ReduceAction295___init = "new ReduceAction295 parser::ReduceAction295::init";
+val_t NEW_ReduceAction295_parser___ReduceAction295___init(val_t p0);
+typedef val_t (*NEW_ReduceAction295_parser___ReduceAction295___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction297 = "init var of ReduceAction297";
+void INIT_ATTRIBUTES__ReduceAction297(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction297_t)(val_t p0);
+val_t NEW_ReduceAction297(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction297 = "check new ReduceAction297";
+void CHECKNEW_ReduceAction297(val_t p0);
+typedef void (*CHECKNEW_ReduceAction297_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction297_parser___ReduceAction297___init = "new ReduceAction297 parser::ReduceAction297::init";
+val_t NEW_ReduceAction297_parser___ReduceAction297___init(val_t p0);
+typedef val_t (*NEW_ReduceAction297_parser___ReduceAction297___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction298 = "init var of ReduceAction298";
+void INIT_ATTRIBUTES__ReduceAction298(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction298_t)(val_t p0);
+val_t NEW_ReduceAction298(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction298 = "check new ReduceAction298";
+void CHECKNEW_ReduceAction298(val_t p0);
+typedef void (*CHECKNEW_ReduceAction298_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction298_parser___ReduceAction298___init = "new ReduceAction298 parser::ReduceAction298::init";
+val_t NEW_ReduceAction298_parser___ReduceAction298___init(val_t p0);
+typedef val_t (*NEW_ReduceAction298_parser___ReduceAction298___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction299 = "init var of ReduceAction299";
+void INIT_ATTRIBUTES__ReduceAction299(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction299_t)(val_t p0);
+val_t NEW_ReduceAction299(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction299 = "check new ReduceAction299";
+void CHECKNEW_ReduceAction299(val_t p0);
+typedef void (*CHECKNEW_ReduceAction299_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction299_parser___ReduceAction299___init = "new ReduceAction299 parser::ReduceAction299::init";
+val_t NEW_ReduceAction299_parser___ReduceAction299___init(val_t p0);
+typedef val_t (*NEW_ReduceAction299_parser___ReduceAction299___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction301 = "init var of ReduceAction301";
+void INIT_ATTRIBUTES__ReduceAction301(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction301_t)(val_t p0);
+val_t NEW_ReduceAction301(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction301 = "check new ReduceAction301";
+void CHECKNEW_ReduceAction301(val_t p0);
+typedef void (*CHECKNEW_ReduceAction301_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction301_parser___ReduceAction301___init = "new ReduceAction301 parser::ReduceAction301::init";
+val_t NEW_ReduceAction301_parser___ReduceAction301___init(val_t p0);
+typedef val_t (*NEW_ReduceAction301_parser___ReduceAction301___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction303 = "init var of ReduceAction303";
+void INIT_ATTRIBUTES__ReduceAction303(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction303_t)(val_t p0);
+val_t NEW_ReduceAction303(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction303 = "check new ReduceAction303";
+void CHECKNEW_ReduceAction303(val_t p0);
+typedef void (*CHECKNEW_ReduceAction303_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction303_parser___ReduceAction303___init = "new ReduceAction303 parser::ReduceAction303::init";
+val_t NEW_ReduceAction303_parser___ReduceAction303___init(val_t p0);
+typedef val_t (*NEW_ReduceAction303_parser___ReduceAction303___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction304 = "init var of ReduceAction304";
+void INIT_ATTRIBUTES__ReduceAction304(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction304_t)(val_t p0);
+val_t NEW_ReduceAction304(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction304 = "check new ReduceAction304";
+void CHECKNEW_ReduceAction304(val_t p0);
+typedef void (*CHECKNEW_ReduceAction304_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction304_parser___ReduceAction304___init = "new ReduceAction304 parser::ReduceAction304::init";
+val_t NEW_ReduceAction304_parser___ReduceAction304___init(val_t p0);
+typedef val_t (*NEW_ReduceAction304_parser___ReduceAction304___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction305 = "init var of ReduceAction305";
+void INIT_ATTRIBUTES__ReduceAction305(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction305_t)(val_t p0);
+val_t NEW_ReduceAction305(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction305 = "check new ReduceAction305";
+void CHECKNEW_ReduceAction305(val_t p0);
+typedef void (*CHECKNEW_ReduceAction305_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction305_parser___ReduceAction305___init = "new ReduceAction305 parser::ReduceAction305::init";
+val_t NEW_ReduceAction305_parser___ReduceAction305___init(val_t p0);
+typedef val_t (*NEW_ReduceAction305_parser___ReduceAction305___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction306 = "init var of ReduceAction306";
+void INIT_ATTRIBUTES__ReduceAction306(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction306_t)(val_t p0);
+val_t NEW_ReduceAction306(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction306 = "check new ReduceAction306";
+void CHECKNEW_ReduceAction306(val_t p0);
+typedef void (*CHECKNEW_ReduceAction306_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction306_parser___ReduceAction306___init = "new ReduceAction306 parser::ReduceAction306::init";
+val_t NEW_ReduceAction306_parser___ReduceAction306___init(val_t p0);
+typedef val_t (*NEW_ReduceAction306_parser___ReduceAction306___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction307 = "init var of ReduceAction307";
+void INIT_ATTRIBUTES__ReduceAction307(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction307_t)(val_t p0);
+val_t NEW_ReduceAction307(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction307 = "check new ReduceAction307";
+void CHECKNEW_ReduceAction307(val_t p0);
+typedef void (*CHECKNEW_ReduceAction307_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction307_parser___ReduceAction307___init = "new ReduceAction307 parser::ReduceAction307::init";
+val_t NEW_ReduceAction307_parser___ReduceAction307___init(val_t p0);
+typedef val_t (*NEW_ReduceAction307_parser___ReduceAction307___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction308 = "init var of ReduceAction308";
+void INIT_ATTRIBUTES__ReduceAction308(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction308_t)(val_t p0);
+val_t NEW_ReduceAction308(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction308 = "check new ReduceAction308";
+void CHECKNEW_ReduceAction308(val_t p0);
+typedef void (*CHECKNEW_ReduceAction308_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction308_parser___ReduceAction308___init = "new ReduceAction308 parser::ReduceAction308::init";
+val_t NEW_ReduceAction308_parser___ReduceAction308___init(val_t p0);
+typedef val_t (*NEW_ReduceAction308_parser___ReduceAction308___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction309 = "init var of ReduceAction309";
+void INIT_ATTRIBUTES__ReduceAction309(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction309_t)(val_t p0);
+val_t NEW_ReduceAction309(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction309 = "check new ReduceAction309";
+void CHECKNEW_ReduceAction309(val_t p0);
+typedef void (*CHECKNEW_ReduceAction309_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction309_parser___ReduceAction309___init = "new ReduceAction309 parser::ReduceAction309::init";
+val_t NEW_ReduceAction309_parser___ReduceAction309___init(val_t p0);
+typedef val_t (*NEW_ReduceAction309_parser___ReduceAction309___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction310 = "init var of ReduceAction310";
+void INIT_ATTRIBUTES__ReduceAction310(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction310_t)(val_t p0);
+val_t NEW_ReduceAction310(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction310 = "check new ReduceAction310";
+void CHECKNEW_ReduceAction310(val_t p0);
+typedef void (*CHECKNEW_ReduceAction310_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction310_parser___ReduceAction310___init = "new ReduceAction310 parser::ReduceAction310::init";
+val_t NEW_ReduceAction310_parser___ReduceAction310___init(val_t p0);
+typedef val_t (*NEW_ReduceAction310_parser___ReduceAction310___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction311 = "init var of ReduceAction311";
+void INIT_ATTRIBUTES__ReduceAction311(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction311_t)(val_t p0);
+val_t NEW_ReduceAction311(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction311 = "check new ReduceAction311";
+void CHECKNEW_ReduceAction311(val_t p0);
+typedef void (*CHECKNEW_ReduceAction311_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction311_parser___ReduceAction311___init = "new ReduceAction311 parser::ReduceAction311::init";
+val_t NEW_ReduceAction311_parser___ReduceAction311___init(val_t p0);
+typedef val_t (*NEW_ReduceAction311_parser___ReduceAction311___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction312 = "init var of ReduceAction312";
+void INIT_ATTRIBUTES__ReduceAction312(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction312_t)(val_t p0);
+val_t NEW_ReduceAction312(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction312 = "check new ReduceAction312";
+void CHECKNEW_ReduceAction312(val_t p0);
+typedef void (*CHECKNEW_ReduceAction312_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction312_parser___ReduceAction312___init = "new ReduceAction312 parser::ReduceAction312::init";
+val_t NEW_ReduceAction312_parser___ReduceAction312___init(val_t p0);
+typedef val_t (*NEW_ReduceAction312_parser___ReduceAction312___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction313 = "init var of ReduceAction313";
+void INIT_ATTRIBUTES__ReduceAction313(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction313_t)(val_t p0);
+val_t NEW_ReduceAction313(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction313 = "check new ReduceAction313";
+void CHECKNEW_ReduceAction313(val_t p0);
+typedef void (*CHECKNEW_ReduceAction313_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction313_parser___ReduceAction313___init = "new ReduceAction313 parser::ReduceAction313::init";
+val_t NEW_ReduceAction313_parser___ReduceAction313___init(val_t p0);
+typedef val_t (*NEW_ReduceAction313_parser___ReduceAction313___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction315 = "init var of ReduceAction315";
+void INIT_ATTRIBUTES__ReduceAction315(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction315_t)(val_t p0);
+val_t NEW_ReduceAction315(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction315 = "check new ReduceAction315";
+void CHECKNEW_ReduceAction315(val_t p0);
+typedef void (*CHECKNEW_ReduceAction315_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction315_parser___ReduceAction315___init = "new ReduceAction315 parser::ReduceAction315::init";
+val_t NEW_ReduceAction315_parser___ReduceAction315___init(val_t p0);
+typedef val_t (*NEW_ReduceAction315_parser___ReduceAction315___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction316 = "init var of ReduceAction316";
+void INIT_ATTRIBUTES__ReduceAction316(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction316_t)(val_t p0);
+val_t NEW_ReduceAction316(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction316 = "check new ReduceAction316";
+void CHECKNEW_ReduceAction316(val_t p0);
+typedef void (*CHECKNEW_ReduceAction316_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction316_parser___ReduceAction316___init = "new ReduceAction316 parser::ReduceAction316::init";
+val_t NEW_ReduceAction316_parser___ReduceAction316___init(val_t p0);
+typedef val_t (*NEW_ReduceAction316_parser___ReduceAction316___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction318 = "init var of ReduceAction318";
+void INIT_ATTRIBUTES__ReduceAction318(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction318_t)(val_t p0);
+val_t NEW_ReduceAction318(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction318 = "check new ReduceAction318";
+void CHECKNEW_ReduceAction318(val_t p0);
+typedef void (*CHECKNEW_ReduceAction318_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction318_parser___ReduceAction318___init = "new ReduceAction318 parser::ReduceAction318::init";
+val_t NEW_ReduceAction318_parser___ReduceAction318___init(val_t p0);
+typedef val_t (*NEW_ReduceAction318_parser___ReduceAction318___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction319 = "init var of ReduceAction319";
+void INIT_ATTRIBUTES__ReduceAction319(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction319_t)(val_t p0);
+val_t NEW_ReduceAction319(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction319 = "check new ReduceAction319";
+void CHECKNEW_ReduceAction319(val_t p0);
+typedef void (*CHECKNEW_ReduceAction319_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction319_parser___ReduceAction319___init = "new ReduceAction319 parser::ReduceAction319::init";
+val_t NEW_ReduceAction319_parser___ReduceAction319___init(val_t p0);
+typedef val_t (*NEW_ReduceAction319_parser___ReduceAction319___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction320 = "init var of ReduceAction320";
+void INIT_ATTRIBUTES__ReduceAction320(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction320_t)(val_t p0);
+val_t NEW_ReduceAction320(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction320 = "check new ReduceAction320";
+void CHECKNEW_ReduceAction320(val_t p0);
+typedef void (*CHECKNEW_ReduceAction320_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction320_parser___ReduceAction320___init = "new ReduceAction320 parser::ReduceAction320::init";
+val_t NEW_ReduceAction320_parser___ReduceAction320___init(val_t p0);
+typedef val_t (*NEW_ReduceAction320_parser___ReduceAction320___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction322 = "init var of ReduceAction322";
+void INIT_ATTRIBUTES__ReduceAction322(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction322_t)(val_t p0);
+val_t NEW_ReduceAction322(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction322 = "check new ReduceAction322";
+void CHECKNEW_ReduceAction322(val_t p0);
+typedef void (*CHECKNEW_ReduceAction322_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction322_parser___ReduceAction322___init = "new ReduceAction322 parser::ReduceAction322::init";
+val_t NEW_ReduceAction322_parser___ReduceAction322___init(val_t p0);
+typedef val_t (*NEW_ReduceAction322_parser___ReduceAction322___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction323 = "init var of ReduceAction323";
+void INIT_ATTRIBUTES__ReduceAction323(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction323_t)(val_t p0);
+val_t NEW_ReduceAction323(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction323 = "check new ReduceAction323";
+void CHECKNEW_ReduceAction323(val_t p0);
+typedef void (*CHECKNEW_ReduceAction323_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction323_parser___ReduceAction323___init = "new ReduceAction323 parser::ReduceAction323::init";
+val_t NEW_ReduceAction323_parser___ReduceAction323___init(val_t p0);
+typedef val_t (*NEW_ReduceAction323_parser___ReduceAction323___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction325 = "init var of ReduceAction325";
+void INIT_ATTRIBUTES__ReduceAction325(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction325_t)(val_t p0);
+val_t NEW_ReduceAction325(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction325 = "check new ReduceAction325";
+void CHECKNEW_ReduceAction325(val_t p0);
+typedef void (*CHECKNEW_ReduceAction325_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction325_parser___ReduceAction325___init = "new ReduceAction325 parser::ReduceAction325::init";
+val_t NEW_ReduceAction325_parser___ReduceAction325___init(val_t p0);
+typedef val_t (*NEW_ReduceAction325_parser___ReduceAction325___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction326 = "init var of ReduceAction326";
+void INIT_ATTRIBUTES__ReduceAction326(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction326_t)(val_t p0);
+val_t NEW_ReduceAction326(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction326 = "check new ReduceAction326";
+void CHECKNEW_ReduceAction326(val_t p0);
+typedef void (*CHECKNEW_ReduceAction326_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction326_parser___ReduceAction326___init = "new ReduceAction326 parser::ReduceAction326::init";
+val_t NEW_ReduceAction326_parser___ReduceAction326___init(val_t p0);
+typedef val_t (*NEW_ReduceAction326_parser___ReduceAction326___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction327 = "init var of ReduceAction327";
+void INIT_ATTRIBUTES__ReduceAction327(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction327_t)(val_t p0);
+val_t NEW_ReduceAction327(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction327 = "check new ReduceAction327";
+void CHECKNEW_ReduceAction327(val_t p0);
+typedef void (*CHECKNEW_ReduceAction327_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction327_parser___ReduceAction327___init = "new ReduceAction327 parser::ReduceAction327::init";
+val_t NEW_ReduceAction327_parser___ReduceAction327___init(val_t p0);
+typedef val_t (*NEW_ReduceAction327_parser___ReduceAction327___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction328 = "init var of ReduceAction328";
+void INIT_ATTRIBUTES__ReduceAction328(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction328_t)(val_t p0);
+val_t NEW_ReduceAction328(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction328 = "check new ReduceAction328";
+void CHECKNEW_ReduceAction328(val_t p0);
+typedef void (*CHECKNEW_ReduceAction328_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction328_parser___ReduceAction328___init = "new ReduceAction328 parser::ReduceAction328::init";
+val_t NEW_ReduceAction328_parser___ReduceAction328___init(val_t p0);
+typedef val_t (*NEW_ReduceAction328_parser___ReduceAction328___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction329 = "init var of ReduceAction329";
+void INIT_ATTRIBUTES__ReduceAction329(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction329_t)(val_t p0);
+val_t NEW_ReduceAction329(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction329 = "check new ReduceAction329";
+void CHECKNEW_ReduceAction329(val_t p0);
+typedef void (*CHECKNEW_ReduceAction329_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction329_parser___ReduceAction329___init = "new ReduceAction329 parser::ReduceAction329::init";
+val_t NEW_ReduceAction329_parser___ReduceAction329___init(val_t p0);
+typedef val_t (*NEW_ReduceAction329_parser___ReduceAction329___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction336 = "init var of ReduceAction336";
+void INIT_ATTRIBUTES__ReduceAction336(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction336_t)(val_t p0);
+val_t NEW_ReduceAction336(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction336 = "check new ReduceAction336";
+void CHECKNEW_ReduceAction336(val_t p0);
+typedef void (*CHECKNEW_ReduceAction336_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction336_parser___ReduceAction336___init = "new ReduceAction336 parser::ReduceAction336::init";
+val_t NEW_ReduceAction336_parser___ReduceAction336___init(val_t p0);
+typedef val_t (*NEW_ReduceAction336_parser___ReduceAction336___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction337 = "init var of ReduceAction337";
+void INIT_ATTRIBUTES__ReduceAction337(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction337_t)(val_t p0);
+val_t NEW_ReduceAction337(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction337 = "check new ReduceAction337";
+void CHECKNEW_ReduceAction337(val_t p0);
+typedef void (*CHECKNEW_ReduceAction337_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction337_parser___ReduceAction337___init = "new ReduceAction337 parser::ReduceAction337::init";
+val_t NEW_ReduceAction337_parser___ReduceAction337___init(val_t p0);
+typedef val_t (*NEW_ReduceAction337_parser___ReduceAction337___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction338 = "init var of ReduceAction338";
+void INIT_ATTRIBUTES__ReduceAction338(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction338_t)(val_t p0);
+val_t NEW_ReduceAction338(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction338 = "check new ReduceAction338";
+void CHECKNEW_ReduceAction338(val_t p0);
+typedef void (*CHECKNEW_ReduceAction338_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction338_parser___ReduceAction338___init = "new ReduceAction338 parser::ReduceAction338::init";
+val_t NEW_ReduceAction338_parser___ReduceAction338___init(val_t p0);
+typedef val_t (*NEW_ReduceAction338_parser___ReduceAction338___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction339 = "init var of ReduceAction339";
+void INIT_ATTRIBUTES__ReduceAction339(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction339_t)(val_t p0);
+val_t NEW_ReduceAction339(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction339 = "check new ReduceAction339";
+void CHECKNEW_ReduceAction339(val_t p0);
+typedef void (*CHECKNEW_ReduceAction339_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction339_parser___ReduceAction339___init = "new ReduceAction339 parser::ReduceAction339::init";
+val_t NEW_ReduceAction339_parser___ReduceAction339___init(val_t p0);
+typedef val_t (*NEW_ReduceAction339_parser___ReduceAction339___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction340 = "init var of ReduceAction340";
+void INIT_ATTRIBUTES__ReduceAction340(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction340_t)(val_t p0);
+val_t NEW_ReduceAction340(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction340 = "check new ReduceAction340";
+void CHECKNEW_ReduceAction340(val_t p0);
+typedef void (*CHECKNEW_ReduceAction340_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction340_parser___ReduceAction340___init = "new ReduceAction340 parser::ReduceAction340::init";
+val_t NEW_ReduceAction340_parser___ReduceAction340___init(val_t p0);
+typedef val_t (*NEW_ReduceAction340_parser___ReduceAction340___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction341 = "init var of ReduceAction341";
+void INIT_ATTRIBUTES__ReduceAction341(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction341_t)(val_t p0);
+val_t NEW_ReduceAction341(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction341 = "check new ReduceAction341";
+void CHECKNEW_ReduceAction341(val_t p0);
+typedef void (*CHECKNEW_ReduceAction341_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction341_parser___ReduceAction341___init = "new ReduceAction341 parser::ReduceAction341::init";
+val_t NEW_ReduceAction341_parser___ReduceAction341___init(val_t p0);
+typedef val_t (*NEW_ReduceAction341_parser___ReduceAction341___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction342 = "init var of ReduceAction342";
+void INIT_ATTRIBUTES__ReduceAction342(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction342_t)(val_t p0);
+val_t NEW_ReduceAction342(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction342 = "check new ReduceAction342";
+void CHECKNEW_ReduceAction342(val_t p0);
+typedef void (*CHECKNEW_ReduceAction342_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction342_parser___ReduceAction342___init = "new ReduceAction342 parser::ReduceAction342::init";
+val_t NEW_ReduceAction342_parser___ReduceAction342___init(val_t p0);
+typedef val_t (*NEW_ReduceAction342_parser___ReduceAction342___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction343 = "init var of ReduceAction343";
+void INIT_ATTRIBUTES__ReduceAction343(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction343_t)(val_t p0);
+val_t NEW_ReduceAction343(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction343 = "check new ReduceAction343";
+void CHECKNEW_ReduceAction343(val_t p0);
+typedef void (*CHECKNEW_ReduceAction343_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction343_parser___ReduceAction343___init = "new ReduceAction343 parser::ReduceAction343::init";
+val_t NEW_ReduceAction343_parser___ReduceAction343___init(val_t p0);
+typedef val_t (*NEW_ReduceAction343_parser___ReduceAction343___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction344 = "init var of ReduceAction344";
+void INIT_ATTRIBUTES__ReduceAction344(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction344_t)(val_t p0);
+val_t NEW_ReduceAction344(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction344 = "check new ReduceAction344";
+void CHECKNEW_ReduceAction344(val_t p0);
+typedef void (*CHECKNEW_ReduceAction344_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction344_parser___ReduceAction344___init = "new ReduceAction344 parser::ReduceAction344::init";
+val_t NEW_ReduceAction344_parser___ReduceAction344___init(val_t p0);
+typedef val_t (*NEW_ReduceAction344_parser___ReduceAction344___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction345 = "init var of ReduceAction345";
+void INIT_ATTRIBUTES__ReduceAction345(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction345_t)(val_t p0);
+val_t NEW_ReduceAction345(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction345 = "check new ReduceAction345";
+void CHECKNEW_ReduceAction345(val_t p0);
+typedef void (*CHECKNEW_ReduceAction345_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction345_parser___ReduceAction345___init = "new ReduceAction345 parser::ReduceAction345::init";
+val_t NEW_ReduceAction345_parser___ReduceAction345___init(val_t p0);
+typedef val_t (*NEW_ReduceAction345_parser___ReduceAction345___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction346 = "init var of ReduceAction346";
+void INIT_ATTRIBUTES__ReduceAction346(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction346_t)(val_t p0);
+val_t NEW_ReduceAction346(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction346 = "check new ReduceAction346";
+void CHECKNEW_ReduceAction346(val_t p0);
+typedef void (*CHECKNEW_ReduceAction346_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction346_parser___ReduceAction346___init = "new ReduceAction346 parser::ReduceAction346::init";
+val_t NEW_ReduceAction346_parser___ReduceAction346___init(val_t p0);
+typedef val_t (*NEW_ReduceAction346_parser___ReduceAction346___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction347 = "init var of ReduceAction347";
+void INIT_ATTRIBUTES__ReduceAction347(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction347_t)(val_t p0);
+val_t NEW_ReduceAction347(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction347 = "check new ReduceAction347";
+void CHECKNEW_ReduceAction347(val_t p0);
+typedef void (*CHECKNEW_ReduceAction347_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction347_parser___ReduceAction347___init = "new ReduceAction347 parser::ReduceAction347::init";
+val_t NEW_ReduceAction347_parser___ReduceAction347___init(val_t p0);
+typedef val_t (*NEW_ReduceAction347_parser___ReduceAction347___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction348 = "init var of ReduceAction348";
+void INIT_ATTRIBUTES__ReduceAction348(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction348_t)(val_t p0);
+val_t NEW_ReduceAction348(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction348 = "check new ReduceAction348";
+void CHECKNEW_ReduceAction348(val_t p0);
+typedef void (*CHECKNEW_ReduceAction348_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction348_parser___ReduceAction348___init = "new ReduceAction348 parser::ReduceAction348::init";
+val_t NEW_ReduceAction348_parser___ReduceAction348___init(val_t p0);
+typedef val_t (*NEW_ReduceAction348_parser___ReduceAction348___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction351 = "init var of ReduceAction351";
+void INIT_ATTRIBUTES__ReduceAction351(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction351_t)(val_t p0);
+val_t NEW_ReduceAction351(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction351 = "check new ReduceAction351";
+void CHECKNEW_ReduceAction351(val_t p0);
+typedef void (*CHECKNEW_ReduceAction351_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction351_parser___ReduceAction351___init = "new ReduceAction351 parser::ReduceAction351::init";
+val_t NEW_ReduceAction351_parser___ReduceAction351___init(val_t p0);
+typedef val_t (*NEW_ReduceAction351_parser___ReduceAction351___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction352 = "init var of ReduceAction352";
+void INIT_ATTRIBUTES__ReduceAction352(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction352_t)(val_t p0);
+val_t NEW_ReduceAction352(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction352 = "check new ReduceAction352";
+void CHECKNEW_ReduceAction352(val_t p0);
+typedef void (*CHECKNEW_ReduceAction352_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction352_parser___ReduceAction352___init = "new ReduceAction352 parser::ReduceAction352::init";
+val_t NEW_ReduceAction352_parser___ReduceAction352___init(val_t p0);
+typedef val_t (*NEW_ReduceAction352_parser___ReduceAction352___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction353 = "init var of ReduceAction353";
+void INIT_ATTRIBUTES__ReduceAction353(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction353_t)(val_t p0);
+val_t NEW_ReduceAction353(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction353 = "check new ReduceAction353";
+void CHECKNEW_ReduceAction353(val_t p0);
+typedef void (*CHECKNEW_ReduceAction353_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction353_parser___ReduceAction353___init = "new ReduceAction353 parser::ReduceAction353::init";
+val_t NEW_ReduceAction353_parser___ReduceAction353___init(val_t p0);
+typedef val_t (*NEW_ReduceAction353_parser___ReduceAction353___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction354 = "init var of ReduceAction354";
+void INIT_ATTRIBUTES__ReduceAction354(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction354_t)(val_t p0);
+val_t NEW_ReduceAction354(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction354 = "check new ReduceAction354";
+void CHECKNEW_ReduceAction354(val_t p0);
+typedef void (*CHECKNEW_ReduceAction354_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction354_parser___ReduceAction354___init = "new ReduceAction354 parser::ReduceAction354::init";
+val_t NEW_ReduceAction354_parser___ReduceAction354___init(val_t p0);
+typedef val_t (*NEW_ReduceAction354_parser___ReduceAction354___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction355 = "init var of ReduceAction355";
+void INIT_ATTRIBUTES__ReduceAction355(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction355_t)(val_t p0);
+val_t NEW_ReduceAction355(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction355 = "check new ReduceAction355";
+void CHECKNEW_ReduceAction355(val_t p0);
+typedef void (*CHECKNEW_ReduceAction355_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction355_parser___ReduceAction355___init = "new ReduceAction355 parser::ReduceAction355::init";
+val_t NEW_ReduceAction355_parser___ReduceAction355___init(val_t p0);
+typedef val_t (*NEW_ReduceAction355_parser___ReduceAction355___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction356 = "init var of ReduceAction356";
+void INIT_ATTRIBUTES__ReduceAction356(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction356_t)(val_t p0);
+val_t NEW_ReduceAction356(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction356 = "check new ReduceAction356";
+void CHECKNEW_ReduceAction356(val_t p0);
+typedef void (*CHECKNEW_ReduceAction356_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction356_parser___ReduceAction356___init = "new ReduceAction356 parser::ReduceAction356::init";
+val_t NEW_ReduceAction356_parser___ReduceAction356___init(val_t p0);
+typedef val_t (*NEW_ReduceAction356_parser___ReduceAction356___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction358 = "init var of ReduceAction358";
+void INIT_ATTRIBUTES__ReduceAction358(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction358_t)(val_t p0);
+val_t NEW_ReduceAction358(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction358 = "check new ReduceAction358";
+void CHECKNEW_ReduceAction358(val_t p0);
+typedef void (*CHECKNEW_ReduceAction358_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction358_parser___ReduceAction358___init = "new ReduceAction358 parser::ReduceAction358::init";
+val_t NEW_ReduceAction358_parser___ReduceAction358___init(val_t p0);
+typedef val_t (*NEW_ReduceAction358_parser___ReduceAction358___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction359 = "init var of ReduceAction359";
+void INIT_ATTRIBUTES__ReduceAction359(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction359_t)(val_t p0);
+val_t NEW_ReduceAction359(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction359 = "check new ReduceAction359";
+void CHECKNEW_ReduceAction359(val_t p0);
+typedef void (*CHECKNEW_ReduceAction359_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction359_parser___ReduceAction359___init = "new ReduceAction359 parser::ReduceAction359::init";
+val_t NEW_ReduceAction359_parser___ReduceAction359___init(val_t p0);
+typedef val_t (*NEW_ReduceAction359_parser___ReduceAction359___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction360 = "init var of ReduceAction360";
+void INIT_ATTRIBUTES__ReduceAction360(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction360_t)(val_t p0);
+val_t NEW_ReduceAction360(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction360 = "check new ReduceAction360";
+void CHECKNEW_ReduceAction360(val_t p0);
+typedef void (*CHECKNEW_ReduceAction360_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction360_parser___ReduceAction360___init = "new ReduceAction360 parser::ReduceAction360::init";
+val_t NEW_ReduceAction360_parser___ReduceAction360___init(val_t p0);
+typedef val_t (*NEW_ReduceAction360_parser___ReduceAction360___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction361 = "init var of ReduceAction361";
+void INIT_ATTRIBUTES__ReduceAction361(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction361_t)(val_t p0);
+val_t NEW_ReduceAction361(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction361 = "check new ReduceAction361";
+void CHECKNEW_ReduceAction361(val_t p0);
+typedef void (*CHECKNEW_ReduceAction361_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction361_parser___ReduceAction361___init = "new ReduceAction361 parser::ReduceAction361::init";
+val_t NEW_ReduceAction361_parser___ReduceAction361___init(val_t p0);
+typedef val_t (*NEW_ReduceAction361_parser___ReduceAction361___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction363 = "init var of ReduceAction363";
+void INIT_ATTRIBUTES__ReduceAction363(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction363_t)(val_t p0);
+val_t NEW_ReduceAction363(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction363 = "check new ReduceAction363";
+void CHECKNEW_ReduceAction363(val_t p0);
+typedef void (*CHECKNEW_ReduceAction363_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction363_parser___ReduceAction363___init = "new ReduceAction363 parser::ReduceAction363::init";
+val_t NEW_ReduceAction363_parser___ReduceAction363___init(val_t p0);
+typedef val_t (*NEW_ReduceAction363_parser___ReduceAction363___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction366 = "init var of ReduceAction366";
+void INIT_ATTRIBUTES__ReduceAction366(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction366_t)(val_t p0);
+val_t NEW_ReduceAction366(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction366 = "check new ReduceAction366";
+void CHECKNEW_ReduceAction366(val_t p0);
+typedef void (*CHECKNEW_ReduceAction366_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction366_parser___ReduceAction366___init = "new ReduceAction366 parser::ReduceAction366::init";
+val_t NEW_ReduceAction366_parser___ReduceAction366___init(val_t p0);
+typedef val_t (*NEW_ReduceAction366_parser___ReduceAction366___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction371 = "init var of ReduceAction371";
+void INIT_ATTRIBUTES__ReduceAction371(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction371_t)(val_t p0);
+val_t NEW_ReduceAction371(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction371 = "check new ReduceAction371";
+void CHECKNEW_ReduceAction371(val_t p0);
+typedef void (*CHECKNEW_ReduceAction371_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction371_parser___ReduceAction371___init = "new ReduceAction371 parser::ReduceAction371::init";
+val_t NEW_ReduceAction371_parser___ReduceAction371___init(val_t p0);
+typedef val_t (*NEW_ReduceAction371_parser___ReduceAction371___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction372 = "init var of ReduceAction372";
+void INIT_ATTRIBUTES__ReduceAction372(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction372_t)(val_t p0);
+val_t NEW_ReduceAction372(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction372 = "check new ReduceAction372";
+void CHECKNEW_ReduceAction372(val_t p0);
+typedef void (*CHECKNEW_ReduceAction372_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction372_parser___ReduceAction372___init = "new ReduceAction372 parser::ReduceAction372::init";
+val_t NEW_ReduceAction372_parser___ReduceAction372___init(val_t p0);
+typedef val_t (*NEW_ReduceAction372_parser___ReduceAction372___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction373 = "init var of ReduceAction373";
+void INIT_ATTRIBUTES__ReduceAction373(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction373_t)(val_t p0);
+val_t NEW_ReduceAction373(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction373 = "check new ReduceAction373";
+void CHECKNEW_ReduceAction373(val_t p0);
+typedef void (*CHECKNEW_ReduceAction373_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction373_parser___ReduceAction373___init = "new ReduceAction373 parser::ReduceAction373::init";
+val_t NEW_ReduceAction373_parser___ReduceAction373___init(val_t p0);
+typedef val_t (*NEW_ReduceAction373_parser___ReduceAction373___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction374 = "init var of ReduceAction374";
+void INIT_ATTRIBUTES__ReduceAction374(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction374_t)(val_t p0);
+val_t NEW_ReduceAction374(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction374 = "check new ReduceAction374";
+void CHECKNEW_ReduceAction374(val_t p0);
+typedef void (*CHECKNEW_ReduceAction374_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction374_parser___ReduceAction374___init = "new ReduceAction374 parser::ReduceAction374::init";
+val_t NEW_ReduceAction374_parser___ReduceAction374___init(val_t p0);
+typedef val_t (*NEW_ReduceAction374_parser___ReduceAction374___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction375 = "init var of ReduceAction375";
+void INIT_ATTRIBUTES__ReduceAction375(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction375_t)(val_t p0);
+val_t NEW_ReduceAction375(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction375 = "check new ReduceAction375";
+void CHECKNEW_ReduceAction375(val_t p0);
+typedef void (*CHECKNEW_ReduceAction375_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction375_parser___ReduceAction375___init = "new ReduceAction375 parser::ReduceAction375::init";
+val_t NEW_ReduceAction375_parser___ReduceAction375___init(val_t p0);
+typedef val_t (*NEW_ReduceAction375_parser___ReduceAction375___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction376 = "init var of ReduceAction376";
+void INIT_ATTRIBUTES__ReduceAction376(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction376_t)(val_t p0);
+val_t NEW_ReduceAction376(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction376 = "check new ReduceAction376";
+void CHECKNEW_ReduceAction376(val_t p0);
+typedef void (*CHECKNEW_ReduceAction376_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction376_parser___ReduceAction376___init = "new ReduceAction376 parser::ReduceAction376::init";
+val_t NEW_ReduceAction376_parser___ReduceAction376___init(val_t p0);
+typedef val_t (*NEW_ReduceAction376_parser___ReduceAction376___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction377 = "init var of ReduceAction377";
+void INIT_ATTRIBUTES__ReduceAction377(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction377_t)(val_t p0);
+val_t NEW_ReduceAction377(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction377 = "check new ReduceAction377";
+void CHECKNEW_ReduceAction377(val_t p0);
+typedef void (*CHECKNEW_ReduceAction377_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction377_parser___ReduceAction377___init = "new ReduceAction377 parser::ReduceAction377::init";
+val_t NEW_ReduceAction377_parser___ReduceAction377___init(val_t p0);
+typedef val_t (*NEW_ReduceAction377_parser___ReduceAction377___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction378 = "init var of ReduceAction378";
+void INIT_ATTRIBUTES__ReduceAction378(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction378_t)(val_t p0);
+val_t NEW_ReduceAction378(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction378 = "check new ReduceAction378";
+void CHECKNEW_ReduceAction378(val_t p0);
+typedef void (*CHECKNEW_ReduceAction378_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction378_parser___ReduceAction378___init = "new ReduceAction378 parser::ReduceAction378::init";
+val_t NEW_ReduceAction378_parser___ReduceAction378___init(val_t p0);
+typedef val_t (*NEW_ReduceAction378_parser___ReduceAction378___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction379 = "init var of ReduceAction379";
+void INIT_ATTRIBUTES__ReduceAction379(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction379_t)(val_t p0);
+val_t NEW_ReduceAction379(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction379 = "check new ReduceAction379";
+void CHECKNEW_ReduceAction379(val_t p0);
+typedef void (*CHECKNEW_ReduceAction379_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction379_parser___ReduceAction379___init = "new ReduceAction379 parser::ReduceAction379::init";
+val_t NEW_ReduceAction379_parser___ReduceAction379___init(val_t p0);
+typedef val_t (*NEW_ReduceAction379_parser___ReduceAction379___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction380 = "init var of ReduceAction380";
+void INIT_ATTRIBUTES__ReduceAction380(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction380_t)(val_t p0);
+val_t NEW_ReduceAction380(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction380 = "check new ReduceAction380";
+void CHECKNEW_ReduceAction380(val_t p0);
+typedef void (*CHECKNEW_ReduceAction380_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction380_parser___ReduceAction380___init = "new ReduceAction380 parser::ReduceAction380::init";
+val_t NEW_ReduceAction380_parser___ReduceAction380___init(val_t p0);
+typedef val_t (*NEW_ReduceAction380_parser___ReduceAction380___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction381 = "init var of ReduceAction381";
+void INIT_ATTRIBUTES__ReduceAction381(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction381_t)(val_t p0);
+val_t NEW_ReduceAction381(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction381 = "check new ReduceAction381";
+void CHECKNEW_ReduceAction381(val_t p0);
+typedef void (*CHECKNEW_ReduceAction381_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction381_parser___ReduceAction381___init = "new ReduceAction381 parser::ReduceAction381::init";
+val_t NEW_ReduceAction381_parser___ReduceAction381___init(val_t p0);
+typedef val_t (*NEW_ReduceAction381_parser___ReduceAction381___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction383 = "init var of ReduceAction383";
+void INIT_ATTRIBUTES__ReduceAction383(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction383_t)(val_t p0);
+val_t NEW_ReduceAction383(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction383 = "check new ReduceAction383";
+void CHECKNEW_ReduceAction383(val_t p0);
+typedef void (*CHECKNEW_ReduceAction383_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction383_parser___ReduceAction383___init = "new ReduceAction383 parser::ReduceAction383::init";
+val_t NEW_ReduceAction383_parser___ReduceAction383___init(val_t p0);
+typedef val_t (*NEW_ReduceAction383_parser___ReduceAction383___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction384 = "init var of ReduceAction384";
+void INIT_ATTRIBUTES__ReduceAction384(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction384_t)(val_t p0);
+val_t NEW_ReduceAction384(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction384 = "check new ReduceAction384";
+void CHECKNEW_ReduceAction384(val_t p0);
+typedef void (*CHECKNEW_ReduceAction384_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction384_parser___ReduceAction384___init = "new ReduceAction384 parser::ReduceAction384::init";
+val_t NEW_ReduceAction384_parser___ReduceAction384___init(val_t p0);
+typedef val_t (*NEW_ReduceAction384_parser___ReduceAction384___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction386 = "init var of ReduceAction386";
+void INIT_ATTRIBUTES__ReduceAction386(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction386_t)(val_t p0);
+val_t NEW_ReduceAction386(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction386 = "check new ReduceAction386";
+void CHECKNEW_ReduceAction386(val_t p0);
+typedef void (*CHECKNEW_ReduceAction386_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction386_parser___ReduceAction386___init = "new ReduceAction386 parser::ReduceAction386::init";
+val_t NEW_ReduceAction386_parser___ReduceAction386___init(val_t p0);
+typedef val_t (*NEW_ReduceAction386_parser___ReduceAction386___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction387 = "init var of ReduceAction387";
+void INIT_ATTRIBUTES__ReduceAction387(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction387_t)(val_t p0);
+val_t NEW_ReduceAction387(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction387 = "check new ReduceAction387";
+void CHECKNEW_ReduceAction387(val_t p0);
+typedef void (*CHECKNEW_ReduceAction387_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction387_parser___ReduceAction387___init = "new ReduceAction387 parser::ReduceAction387::init";
+val_t NEW_ReduceAction387_parser___ReduceAction387___init(val_t p0);
+typedef val_t (*NEW_ReduceAction387_parser___ReduceAction387___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction388 = "init var of ReduceAction388";
+void INIT_ATTRIBUTES__ReduceAction388(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction388_t)(val_t p0);
+val_t NEW_ReduceAction388(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction388 = "check new ReduceAction388";
+void CHECKNEW_ReduceAction388(val_t p0);
+typedef void (*CHECKNEW_ReduceAction388_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction388_parser___ReduceAction388___init = "new ReduceAction388 parser::ReduceAction388::init";
+val_t NEW_ReduceAction388_parser___ReduceAction388___init(val_t p0);
+typedef val_t (*NEW_ReduceAction388_parser___ReduceAction388___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction389 = "init var of ReduceAction389";
+void INIT_ATTRIBUTES__ReduceAction389(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction389_t)(val_t p0);
+val_t NEW_ReduceAction389(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction389 = "check new ReduceAction389";
+void CHECKNEW_ReduceAction389(val_t p0);
+typedef void (*CHECKNEW_ReduceAction389_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction389_parser___ReduceAction389___init = "new ReduceAction389 parser::ReduceAction389::init";
+val_t NEW_ReduceAction389_parser___ReduceAction389___init(val_t p0);
+typedef val_t (*NEW_ReduceAction389_parser___ReduceAction389___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction637 = "init var of ReduceAction637";
+void INIT_ATTRIBUTES__ReduceAction637(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction637_t)(val_t p0);
+val_t NEW_ReduceAction637(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction637 = "check new ReduceAction637";
+void CHECKNEW_ReduceAction637(val_t p0);
+typedef void (*CHECKNEW_ReduceAction637_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction637_parser___ReduceAction637___init = "new ReduceAction637 parser::ReduceAction637::init";
+val_t NEW_ReduceAction637_parser___ReduceAction637___init(val_t p0);
+typedef val_t (*NEW_ReduceAction637_parser___ReduceAction637___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction638 = "init var of ReduceAction638";
+void INIT_ATTRIBUTES__ReduceAction638(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction638_t)(val_t p0);
+val_t NEW_ReduceAction638(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction638 = "check new ReduceAction638";
+void CHECKNEW_ReduceAction638(val_t p0);
+typedef void (*CHECKNEW_ReduceAction638_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction638_parser___ReduceAction638___init = "new ReduceAction638 parser::ReduceAction638::init";
+val_t NEW_ReduceAction638_parser___ReduceAction638___init(val_t p0);
+typedef val_t (*NEW_ReduceAction638_parser___ReduceAction638___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction639 = "init var of ReduceAction639";
+void INIT_ATTRIBUTES__ReduceAction639(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction639_t)(val_t p0);
+val_t NEW_ReduceAction639(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction639 = "check new ReduceAction639";
+void CHECKNEW_ReduceAction639(val_t p0);
+typedef void (*CHECKNEW_ReduceAction639_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction639_parser___ReduceAction639___init = "new ReduceAction639 parser::ReduceAction639::init";
+val_t NEW_ReduceAction639_parser___ReduceAction639___init(val_t p0);
+typedef val_t (*NEW_ReduceAction639_parser___ReduceAction639___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction642 = "init var of ReduceAction642";
+void INIT_ATTRIBUTES__ReduceAction642(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction642_t)(val_t p0);
+val_t NEW_ReduceAction642(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction642 = "check new ReduceAction642";
+void CHECKNEW_ReduceAction642(val_t p0);
+typedef void (*CHECKNEW_ReduceAction642_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction642_parser___ReduceAction642___init = "new ReduceAction642 parser::ReduceAction642::init";
+val_t NEW_ReduceAction642_parser___ReduceAction642___init(val_t p0);
+typedef val_t (*NEW_ReduceAction642_parser___ReduceAction642___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction655 = "init var of ReduceAction655";
+void INIT_ATTRIBUTES__ReduceAction655(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction655_t)(val_t p0);
+val_t NEW_ReduceAction655(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction655 = "check new ReduceAction655";
+void CHECKNEW_ReduceAction655(val_t p0);
+typedef void (*CHECKNEW_ReduceAction655_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction655_parser___ReduceAction655___init = "new ReduceAction655 parser::ReduceAction655::init";
+val_t NEW_ReduceAction655_parser___ReduceAction655___init(val_t p0);
+typedef val_t (*NEW_ReduceAction655_parser___ReduceAction655___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction656 = "init var of ReduceAction656";
+void INIT_ATTRIBUTES__ReduceAction656(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction656_t)(val_t p0);
+val_t NEW_ReduceAction656(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction656 = "check new ReduceAction656";
+void CHECKNEW_ReduceAction656(val_t p0);
+typedef void (*CHECKNEW_ReduceAction656_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction656_parser___ReduceAction656___init = "new ReduceAction656 parser::ReduceAction656::init";
+val_t NEW_ReduceAction656_parser___ReduceAction656___init(val_t p0);
+typedef val_t (*NEW_ReduceAction656_parser___ReduceAction656___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction663 = "init var of ReduceAction663";
+void INIT_ATTRIBUTES__ReduceAction663(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction663_t)(val_t p0);
+val_t NEW_ReduceAction663(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction663 = "check new ReduceAction663";
+void CHECKNEW_ReduceAction663(val_t p0);
+typedef void (*CHECKNEW_ReduceAction663_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction663_parser___ReduceAction663___init = "new ReduceAction663 parser::ReduceAction663::init";
+val_t NEW_ReduceAction663_parser___ReduceAction663___init(val_t p0);
+typedef val_t (*NEW_ReduceAction663_parser___ReduceAction663___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction664 = "init var of ReduceAction664";
+void INIT_ATTRIBUTES__ReduceAction664(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction664_t)(val_t p0);
+val_t NEW_ReduceAction664(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction664 = "check new ReduceAction664";
+void CHECKNEW_ReduceAction664(val_t p0);
+typedef void (*CHECKNEW_ReduceAction664_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction664_parser___ReduceAction664___init = "new ReduceAction664 parser::ReduceAction664::init";
+val_t NEW_ReduceAction664_parser___ReduceAction664___init(val_t p0);
+typedef val_t (*NEW_ReduceAction664_parser___ReduceAction664___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction665 = "init var of ReduceAction665";
+void INIT_ATTRIBUTES__ReduceAction665(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction665_t)(val_t p0);
+val_t NEW_ReduceAction665(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction665 = "check new ReduceAction665";
+void CHECKNEW_ReduceAction665(val_t p0);
+typedef void (*CHECKNEW_ReduceAction665_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction665_parser___ReduceAction665___init = "new ReduceAction665 parser::ReduceAction665::init";
+val_t NEW_ReduceAction665_parser___ReduceAction665___init(val_t p0);
+typedef val_t (*NEW_ReduceAction665_parser___ReduceAction665___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction666 = "init var of ReduceAction666";
+void INIT_ATTRIBUTES__ReduceAction666(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction666_t)(val_t p0);
+val_t NEW_ReduceAction666(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction666 = "check new ReduceAction666";
+void CHECKNEW_ReduceAction666(val_t p0);
+typedef void (*CHECKNEW_ReduceAction666_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction666_parser___ReduceAction666___init = "new ReduceAction666 parser::ReduceAction666::init";
+val_t NEW_ReduceAction666_parser___ReduceAction666___init(val_t p0);
+typedef val_t (*NEW_ReduceAction666_parser___ReduceAction666___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction667 = "init var of ReduceAction667";
+void INIT_ATTRIBUTES__ReduceAction667(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction667_t)(val_t p0);
+val_t NEW_ReduceAction667(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction667 = "check new ReduceAction667";
+void CHECKNEW_ReduceAction667(val_t p0);
+typedef void (*CHECKNEW_ReduceAction667_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction667_parser___ReduceAction667___init = "new ReduceAction667 parser::ReduceAction667::init";
+val_t NEW_ReduceAction667_parser___ReduceAction667___init(val_t p0);
+typedef val_t (*NEW_ReduceAction667_parser___ReduceAction667___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction668 = "init var of ReduceAction668";
+void INIT_ATTRIBUTES__ReduceAction668(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction668_t)(val_t p0);
+val_t NEW_ReduceAction668(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction668 = "check new ReduceAction668";
+void CHECKNEW_ReduceAction668(val_t p0);
+typedef void (*CHECKNEW_ReduceAction668_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction668_parser___ReduceAction668___init = "new ReduceAction668 parser::ReduceAction668::init";
+val_t NEW_ReduceAction668_parser___ReduceAction668___init(val_t p0);
+typedef val_t (*NEW_ReduceAction668_parser___ReduceAction668___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction669 = "init var of ReduceAction669";
+void INIT_ATTRIBUTES__ReduceAction669(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction669_t)(val_t p0);
+val_t NEW_ReduceAction669(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction669 = "check new ReduceAction669";
+void CHECKNEW_ReduceAction669(val_t p0);
+typedef void (*CHECKNEW_ReduceAction669_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction669_parser___ReduceAction669___init = "new ReduceAction669 parser::ReduceAction669::init";
+val_t NEW_ReduceAction669_parser___ReduceAction669___init(val_t p0);
+typedef val_t (*NEW_ReduceAction669_parser___ReduceAction669___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction670 = "init var of ReduceAction670";
+void INIT_ATTRIBUTES__ReduceAction670(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction670_t)(val_t p0);
+val_t NEW_ReduceAction670(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction670 = "check new ReduceAction670";
+void CHECKNEW_ReduceAction670(val_t p0);
+typedef void (*CHECKNEW_ReduceAction670_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction670_parser___ReduceAction670___init = "new ReduceAction670 parser::ReduceAction670::init";
+val_t NEW_ReduceAction670_parser___ReduceAction670___init(val_t p0);
+typedef val_t (*NEW_ReduceAction670_parser___ReduceAction670___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction673 = "init var of ReduceAction673";
+void INIT_ATTRIBUTES__ReduceAction673(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction673_t)(val_t p0);
+val_t NEW_ReduceAction673(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction673 = "check new ReduceAction673";
+void CHECKNEW_ReduceAction673(val_t p0);
+typedef void (*CHECKNEW_ReduceAction673_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction673_parser___ReduceAction673___init = "new ReduceAction673 parser::ReduceAction673::init";
+val_t NEW_ReduceAction673_parser___ReduceAction673___init(val_t p0);
+typedef val_t (*NEW_ReduceAction673_parser___ReduceAction673___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction674 = "init var of ReduceAction674";
+void INIT_ATTRIBUTES__ReduceAction674(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction674_t)(val_t p0);
+val_t NEW_ReduceAction674(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction674 = "check new ReduceAction674";
+void CHECKNEW_ReduceAction674(val_t p0);
+typedef void (*CHECKNEW_ReduceAction674_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction674_parser___ReduceAction674___init = "new ReduceAction674 parser::ReduceAction674::init";
+val_t NEW_ReduceAction674_parser___ReduceAction674___init(val_t p0);
+typedef val_t (*NEW_ReduceAction674_parser___ReduceAction674___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction675 = "init var of ReduceAction675";
+void INIT_ATTRIBUTES__ReduceAction675(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction675_t)(val_t p0);
+val_t NEW_ReduceAction675(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction675 = "check new ReduceAction675";
+void CHECKNEW_ReduceAction675(val_t p0);
+typedef void (*CHECKNEW_ReduceAction675_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction675_parser___ReduceAction675___init = "new ReduceAction675 parser::ReduceAction675::init";
+val_t NEW_ReduceAction675_parser___ReduceAction675___init(val_t p0);
+typedef val_t (*NEW_ReduceAction675_parser___ReduceAction675___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction676 = "init var of ReduceAction676";
+void INIT_ATTRIBUTES__ReduceAction676(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction676_t)(val_t p0);
+val_t NEW_ReduceAction676(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction676 = "check new ReduceAction676";
+void CHECKNEW_ReduceAction676(val_t p0);
+typedef void (*CHECKNEW_ReduceAction676_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction676_parser___ReduceAction676___init = "new ReduceAction676 parser::ReduceAction676::init";
+val_t NEW_ReduceAction676_parser___ReduceAction676___init(val_t p0);
+typedef val_t (*NEW_ReduceAction676_parser___ReduceAction676___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction677 = "init var of ReduceAction677";
+void INIT_ATTRIBUTES__ReduceAction677(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction677_t)(val_t p0);
+val_t NEW_ReduceAction677(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction677 = "check new ReduceAction677";
+void CHECKNEW_ReduceAction677(val_t p0);
+typedef void (*CHECKNEW_ReduceAction677_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction677_parser___ReduceAction677___init = "new ReduceAction677 parser::ReduceAction677::init";
+val_t NEW_ReduceAction677_parser___ReduceAction677___init(val_t p0);
+typedef val_t (*NEW_ReduceAction677_parser___ReduceAction677___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction678 = "init var of ReduceAction678";
+void INIT_ATTRIBUTES__ReduceAction678(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction678_t)(val_t p0);
+val_t NEW_ReduceAction678(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction678 = "check new ReduceAction678";
+void CHECKNEW_ReduceAction678(val_t p0);
+typedef void (*CHECKNEW_ReduceAction678_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction678_parser___ReduceAction678___init = "new ReduceAction678 parser::ReduceAction678::init";
+val_t NEW_ReduceAction678_parser___ReduceAction678___init(val_t p0);
+typedef val_t (*NEW_ReduceAction678_parser___ReduceAction678___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction680 = "init var of ReduceAction680";
+void INIT_ATTRIBUTES__ReduceAction680(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction680_t)(val_t p0);
+val_t NEW_ReduceAction680(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction680 = "check new ReduceAction680";
+void CHECKNEW_ReduceAction680(val_t p0);
+typedef void (*CHECKNEW_ReduceAction680_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction680_parser___ReduceAction680___init = "new ReduceAction680 parser::ReduceAction680::init";
+val_t NEW_ReduceAction680_parser___ReduceAction680___init(val_t p0);
+typedef val_t (*NEW_ReduceAction680_parser___ReduceAction680___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction682 = "init var of ReduceAction682";
+void INIT_ATTRIBUTES__ReduceAction682(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction682_t)(val_t p0);
+val_t NEW_ReduceAction682(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction682 = "check new ReduceAction682";
+void CHECKNEW_ReduceAction682(val_t p0);
+typedef void (*CHECKNEW_ReduceAction682_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction682_parser___ReduceAction682___init = "new ReduceAction682 parser::ReduceAction682::init";
+val_t NEW_ReduceAction682_parser___ReduceAction682___init(val_t p0);
+typedef val_t (*NEW_ReduceAction682_parser___ReduceAction682___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction684 = "init var of ReduceAction684";
+void INIT_ATTRIBUTES__ReduceAction684(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction684_t)(val_t p0);
+val_t NEW_ReduceAction684(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction684 = "check new ReduceAction684";
+void CHECKNEW_ReduceAction684(val_t p0);
+typedef void (*CHECKNEW_ReduceAction684_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction684_parser___ReduceAction684___init = "new ReduceAction684 parser::ReduceAction684::init";
+val_t NEW_ReduceAction684_parser___ReduceAction684___init(val_t p0);
+typedef val_t (*NEW_ReduceAction684_parser___ReduceAction684___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction688 = "init var of ReduceAction688";
+void INIT_ATTRIBUTES__ReduceAction688(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction688_t)(val_t p0);
+val_t NEW_ReduceAction688(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction688 = "check new ReduceAction688";
+void CHECKNEW_ReduceAction688(val_t p0);
+typedef void (*CHECKNEW_ReduceAction688_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction688_parser___ReduceAction688___init = "new ReduceAction688 parser::ReduceAction688::init";
+val_t NEW_ReduceAction688_parser___ReduceAction688___init(val_t p0);
+typedef val_t (*NEW_ReduceAction688_parser___ReduceAction688___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction689 = "init var of ReduceAction689";
+void INIT_ATTRIBUTES__ReduceAction689(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction689_t)(val_t p0);
+val_t NEW_ReduceAction689(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction689 = "check new ReduceAction689";
+void CHECKNEW_ReduceAction689(val_t p0);
+typedef void (*CHECKNEW_ReduceAction689_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction689_parser___ReduceAction689___init = "new ReduceAction689 parser::ReduceAction689::init";
+val_t NEW_ReduceAction689_parser___ReduceAction689___init(val_t p0);
+typedef val_t (*NEW_ReduceAction689_parser___ReduceAction689___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction690 = "init var of ReduceAction690";
+void INIT_ATTRIBUTES__ReduceAction690(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction690_t)(val_t p0);
+val_t NEW_ReduceAction690(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction690 = "check new ReduceAction690";
+void CHECKNEW_ReduceAction690(val_t p0);
+typedef void (*CHECKNEW_ReduceAction690_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction690_parser___ReduceAction690___init = "new ReduceAction690 parser::ReduceAction690::init";
+val_t NEW_ReduceAction690_parser___ReduceAction690___init(val_t p0);
+typedef val_t (*NEW_ReduceAction690_parser___ReduceAction690___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction691 = "init var of ReduceAction691";
+void INIT_ATTRIBUTES__ReduceAction691(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction691_t)(val_t p0);
+val_t NEW_ReduceAction691(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction691 = "check new ReduceAction691";
+void CHECKNEW_ReduceAction691(val_t p0);
+typedef void (*CHECKNEW_ReduceAction691_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction691_parser___ReduceAction691___init = "new ReduceAction691 parser::ReduceAction691::init";
+val_t NEW_ReduceAction691_parser___ReduceAction691___init(val_t p0);
+typedef val_t (*NEW_ReduceAction691_parser___ReduceAction691___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReduceAction692 = "init var of ReduceAction692";
+void INIT_ATTRIBUTES__ReduceAction692(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReduceAction692_t)(val_t p0);
+val_t NEW_ReduceAction692(void);
+static const char * const LOCATE_CHECKNEW_ReduceAction692 = "check new ReduceAction692";
+void CHECKNEW_ReduceAction692(val_t p0);
+typedef void (*CHECKNEW_ReduceAction692_t)(val_t p0);
+static const char * const LOCATE_NEW_ReduceAction692_parser___ReduceAction692___init = "new ReduceAction692 parser::ReduceAction692::init";
+val_t NEW_ReduceAction692_parser___ReduceAction692___init(val_t p0);
+typedef val_t (*NEW_ReduceAction692_parser___ReduceAction692___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__PartialOrder = "init var of PartialOrder";
+void INIT_ATTRIBUTES__PartialOrder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__PartialOrder_t)(val_t p0);
+val_t NEW_PartialOrder(void);
+static const char * const LOCATE_CHECKNEW_PartialOrder = "check new PartialOrder";
+void CHECKNEW_PartialOrder(val_t p0);
+typedef void (*CHECKNEW_PartialOrder_t)(val_t p0);
+static const char * const LOCATE_NEW_PartialOrder_partial_order___PartialOrder___init = "new PartialOrder partial_order::PartialOrder::init";
+val_t NEW_PartialOrder_partial_order___PartialOrder___init(void);
+typedef val_t (*NEW_PartialOrder_partial_order___PartialOrder___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__PartialOrderElement = "init var of PartialOrderElement";
+void INIT_ATTRIBUTES__PartialOrderElement(val_t p0);
+typedef void (*INIT_ATTRIBUTES__PartialOrderElement_t)(val_t p0);
+val_t NEW_PartialOrderElement(void);
+static const char * const LOCATE_CHECKNEW_PartialOrderElement = "check new PartialOrderElement";
+void CHECKNEW_PartialOrderElement(val_t p0);
+typedef void (*CHECKNEW_PartialOrderElement_t)(val_t p0);
+static const char * const LOCATE_NEW_PartialOrderElement_partial_order___PartialOrderElement___init = "new PartialOrderElement partial_order::PartialOrderElement::init";
+val_t NEW_PartialOrderElement_partial_order___PartialOrderElement___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_PartialOrderElement_partial_order___PartialOrderElement___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMContext = "init var of MMContext";
+void INIT_ATTRIBUTES__MMContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMContext_t)(val_t p0);
+val_t NEW_MMContext(void);
+static const char * const LOCATE_CHECKNEW_MMContext = "check new MMContext";
+void CHECKNEW_MMContext(val_t p0);
+typedef void (*CHECKNEW_MMContext_t)(val_t p0);
+static const char * const LOCATE_NEW_MMContext_abstractmetamodel___MMContext___init = "new MMContext abstractmetamodel::MMContext::init";
+val_t NEW_MMContext_abstractmetamodel___MMContext___init(void);
+typedef val_t (*NEW_MMContext_abstractmetamodel___MMContext___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMDirectory = "init var of MMDirectory";
+void INIT_ATTRIBUTES__MMDirectory(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMDirectory_t)(val_t p0);
+val_t NEW_MMDirectory(void);
+static const char * const LOCATE_CHECKNEW_MMDirectory = "check new MMDirectory";
+void CHECKNEW_MMDirectory(val_t p0);
+typedef void (*CHECKNEW_MMDirectory_t)(val_t p0);
+static const char * const LOCATE_NEW_MMDirectory_abstractmetamodel___MMDirectory___init = "new MMDirectory abstractmetamodel::MMDirectory::init";
+val_t NEW_MMDirectory_abstractmetamodel___MMDirectory___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMDirectory_abstractmetamodel___MMDirectory___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMModule = "init var of MMModule";
+void INIT_ATTRIBUTES__MMModule(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMModule_t)(val_t p0);
+val_t NEW_MMModule(void);
+static const char * const LOCATE_CHECKNEW_MMModule = "check new MMModule";
+void CHECKNEW_MMModule(val_t p0);
+typedef void (*CHECKNEW_MMModule_t)(val_t p0);
+static const char * const LOCATE_NEW_MMModule_abstractmetamodel___MMModule___init = "new MMModule abstractmetamodel::MMModule::init";
+val_t NEW_MMModule_abstractmetamodel___MMModule___init(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_MMModule_abstractmetamodel___MMModule___init_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMGlobalClass = "init var of MMGlobalClass";
+void INIT_ATTRIBUTES__MMGlobalClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMGlobalClass_t)(val_t p0);
+val_t NEW_MMGlobalClass(void);
+static const char * const LOCATE_CHECKNEW_MMGlobalClass = "check new MMGlobalClass";
+void CHECKNEW_MMGlobalClass(val_t p0);
+typedef void (*CHECKNEW_MMGlobalClass_t)(val_t p0);
+static const char * const LOCATE_NEW_MMGlobalClass_abstractmetamodel___MMGlobalClass___init = "new MMGlobalClass abstractmetamodel::MMGlobalClass::init";
+val_t NEW_MMGlobalClass_abstractmetamodel___MMGlobalClass___init(val_t p0);
+typedef val_t (*NEW_MMGlobalClass_abstractmetamodel___MMGlobalClass___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMLocalClass = "init var of MMLocalClass";
+void INIT_ATTRIBUTES__MMLocalClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMLocalClass_t)(val_t p0);
+val_t NEW_MMLocalClass(void);
+static const char * const LOCATE_CHECKNEW_MMLocalClass = "check new MMLocalClass";
+void CHECKNEW_MMLocalClass(val_t p0);
+typedef void (*CHECKNEW_MMLocalClass_t)(val_t p0);
+static const char * const LOCATE_NEW_MMLocalClass_abstractmetamodel___MMLocalClass___init = "new MMLocalClass abstractmetamodel::MMLocalClass::init";
+val_t NEW_MMLocalClass_abstractmetamodel___MMLocalClass___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMLocalClass_abstractmetamodel___MMLocalClass___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMGlobalProperty = "init var of MMGlobalProperty";
+void INIT_ATTRIBUTES__MMGlobalProperty(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMGlobalProperty_t)(val_t p0);
+val_t NEW_MMGlobalProperty(void);
+static const char * const LOCATE_CHECKNEW_MMGlobalProperty = "check new MMGlobalProperty";
+void CHECKNEW_MMGlobalProperty(val_t p0);
+typedef void (*CHECKNEW_MMGlobalProperty_t)(val_t p0);
+static const char * const LOCATE_NEW_MMGlobalProperty_abstractmetamodel___MMGlobalProperty___init = "new MMGlobalProperty abstractmetamodel::MMGlobalProperty::init";
+val_t NEW_MMGlobalProperty_abstractmetamodel___MMGlobalProperty___init(val_t p0);
+typedef val_t (*NEW_MMGlobalProperty_abstractmetamodel___MMGlobalProperty___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMLocalProperty = "init var of MMLocalProperty";
+void INIT_ATTRIBUTES__MMLocalProperty(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMLocalProperty_t)(val_t p0);
+val_t NEW_MMLocalProperty(void);
+static const char * const LOCATE_CHECKNEW_MMLocalProperty = "check new MMLocalProperty";
+void CHECKNEW_MMLocalProperty(val_t p0);
+typedef void (*CHECKNEW_MMLocalProperty_t)(val_t p0);
+static const char * const LOCATE_NEW_MMLocalProperty_abstractmetamodel___MMLocalProperty___init = "new MMLocalProperty abstractmetamodel::MMLocalProperty::init";
+val_t NEW_MMLocalProperty_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMLocalProperty_abstractmetamodel___MMLocalProperty___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMAttribute = "init var of MMAttribute";
+void INIT_ATTRIBUTES__MMAttribute(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMAttribute_t)(val_t p0);
+val_t NEW_MMAttribute(void);
+static const char * const LOCATE_CHECKNEW_MMAttribute = "check new MMAttribute";
+void CHECKNEW_MMAttribute(val_t p0);
+typedef void (*CHECKNEW_MMAttribute_t)(val_t p0);
+static const char * const LOCATE_NEW_MMAttribute_abstractmetamodel___MMLocalProperty___init = "new MMAttribute abstractmetamodel::MMLocalProperty::init";
+val_t NEW_MMAttribute_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMAttribute_abstractmetamodel___MMLocalProperty___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMMethod = "init var of MMMethod";
+void INIT_ATTRIBUTES__MMMethod(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMMethod_t)(val_t p0);
+val_t NEW_MMMethod(void);
+static const char * const LOCATE_CHECKNEW_MMMethod = "check new MMMethod";
+void CHECKNEW_MMMethod(val_t p0);
+typedef void (*CHECKNEW_MMMethod_t)(val_t p0);
+static const char * const LOCATE_NEW_MMMethod_abstractmetamodel___MMLocalProperty___init = "new MMMethod abstractmetamodel::MMLocalProperty::init";
+val_t NEW_MMMethod_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMMethod_abstractmetamodel___MMLocalProperty___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMConcreteClass = "init var of MMConcreteClass";
+void INIT_ATTRIBUTES__MMConcreteClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMConcreteClass_t)(val_t p0);
+val_t NEW_MMConcreteClass(void);
+static const char * const LOCATE_CHECKNEW_MMConcreteClass = "check new MMConcreteClass";
+void CHECKNEW_MMConcreteClass(val_t p0);
+typedef void (*CHECKNEW_MMConcreteClass_t)(val_t p0);
+static const char * const LOCATE_NEW_MMConcreteClass_abstractmetamodel___MMLocalClass___init = "new MMConcreteClass abstractmetamodel::MMLocalClass::init";
+val_t NEW_MMConcreteClass_abstractmetamodel___MMLocalClass___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMConcreteClass_abstractmetamodel___MMLocalClass___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMSignature = "init var of MMSignature";
+void INIT_ATTRIBUTES__MMSignature(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMSignature_t)(val_t p0);
+val_t NEW_MMSignature(void);
+static const char * const LOCATE_CHECKNEW_MMSignature = "check new MMSignature";
+void CHECKNEW_MMSignature(val_t p0);
+typedef void (*CHECKNEW_MMSignature_t)(val_t p0);
+static const char * const LOCATE_NEW_MMSignature_static_type___MMSignature___init = "new MMSignature vararg::MMSignature::(static_type::MMSignature::init)";
+val_t NEW_MMSignature_static_type___MMSignature___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMSignature_static_type___MMSignature___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMClosure = "init var of MMClosure";
+void INIT_ATTRIBUTES__MMClosure(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMClosure_t)(val_t p0);
+val_t NEW_MMClosure(void);
+static const char * const LOCATE_CHECKNEW_MMClosure = "check new MMClosure";
+void CHECKNEW_MMClosure(val_t p0);
+typedef void (*CHECKNEW_MMClosure_t)(val_t p0);
+static const char * const LOCATE_NEW_MMClosure_static_type___MMClosure___init = "new MMClosure static_type::MMClosure::init";
+val_t NEW_MMClosure_static_type___MMClosure___init(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_MMClosure_static_type___MMClosure___init_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMNullableType = "init var of MMNullableType";
+void INIT_ATTRIBUTES__MMNullableType(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMNullableType_t)(val_t p0);
+val_t NEW_MMNullableType(void);
+static const char * const LOCATE_CHECKNEW_MMNullableType = "check new MMNullableType";
+void CHECKNEW_MMNullableType(val_t p0);
+typedef void (*CHECKNEW_MMNullableType_t)(val_t p0);
+static const char * const LOCATE_NEW_MMNullableType_static_type___MMNullableType___init = "new MMNullableType static_type::MMNullableType::init";
+val_t NEW_MMNullableType_static_type___MMNullableType___init(val_t p0);
+typedef val_t (*NEW_MMNullableType_static_type___MMNullableType___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMTypeClass = "init var of MMTypeClass";
+void INIT_ATTRIBUTES__MMTypeClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMTypeClass_t)(val_t p0);
+val_t NEW_MMTypeClass(void);
+static const char * const LOCATE_CHECKNEW_MMTypeClass = "check new MMTypeClass";
+void CHECKNEW_MMTypeClass(val_t p0);
+typedef void (*CHECKNEW_MMTypeClass_t)(val_t p0);
+static const char * const LOCATE_NEW_MMTypeClass_static_type___MMTypeClass___init = "new MMTypeClass static_type::MMTypeClass::init";
+val_t NEW_MMTypeClass_static_type___MMTypeClass___init(val_t p0);
+typedef val_t (*NEW_MMTypeClass_static_type___MMTypeClass___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMTypeSimpleClass = "init var of MMTypeSimpleClass";
+void INIT_ATTRIBUTES__MMTypeSimpleClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMTypeSimpleClass_t)(val_t p0);
+val_t NEW_MMTypeSimpleClass(void);
+static const char * const LOCATE_CHECKNEW_MMTypeSimpleClass = "check new MMTypeSimpleClass";
+void CHECKNEW_MMTypeSimpleClass(val_t p0);
+typedef void (*CHECKNEW_MMTypeSimpleClass_t)(val_t p0);
+static const char * const LOCATE_NEW_MMTypeSimpleClass_static_type___MMTypeSimpleClass___init = "new MMTypeSimpleClass static_type::MMTypeSimpleClass::init";
+val_t NEW_MMTypeSimpleClass_static_type___MMTypeSimpleClass___init(val_t p0);
+typedef val_t (*NEW_MMTypeSimpleClass_static_type___MMTypeSimpleClass___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMTypeNone = "init var of MMTypeNone";
+void INIT_ATTRIBUTES__MMTypeNone(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMTypeNone_t)(val_t p0);
+val_t NEW_MMTypeNone(void);
+static const char * const LOCATE_CHECKNEW_MMTypeNone = "check new MMTypeNone";
+void CHECKNEW_MMTypeNone(val_t p0);
+typedef void (*CHECKNEW_MMTypeNone_t)(val_t p0);
+static const char * const LOCATE_NEW_MMTypeNone_static_type___MMTypeNone___init = "new MMTypeNone static_type::MMTypeNone::init";
+val_t NEW_MMTypeNone_static_type___MMTypeNone___init(val_t p0);
+typedef val_t (*NEW_MMTypeNone_static_type___MMTypeNone___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMImplicitLocalClass = "init var of MMImplicitLocalClass";
+void INIT_ATTRIBUTES__MMImplicitLocalClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMImplicitLocalClass_t)(val_t p0);
+val_t NEW_MMImplicitLocalClass(void);
+static const char * const LOCATE_CHECKNEW_MMImplicitLocalClass = "check new MMImplicitLocalClass";
+void CHECKNEW_MMImplicitLocalClass(val_t p0);
+typedef void (*CHECKNEW_MMImplicitLocalClass_t)(val_t p0);
+static const char * const LOCATE_NEW_MMImplicitLocalClass_inheritance___MMImplicitLocalClass___init = "new MMImplicitLocalClass inheritance::MMImplicitLocalClass::init";
+val_t NEW_MMImplicitLocalClass_inheritance___MMImplicitLocalClass___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMImplicitLocalClass_inheritance___MMImplicitLocalClass___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMRefineAncestor = "init var of MMRefineAncestor";
+void INIT_ATTRIBUTES__MMRefineAncestor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMRefineAncestor_t)(val_t p0);
+val_t NEW_MMRefineAncestor(void);
+static const char * const LOCATE_CHECKNEW_MMRefineAncestor = "check new MMRefineAncestor";
+void CHECKNEW_MMRefineAncestor(val_t p0);
+typedef void (*CHECKNEW_MMRefineAncestor_t)(val_t p0);
+static const char * const LOCATE_NEW_MMRefineAncestor_inheritance___MMRefineAncestor___init = "new MMRefineAncestor inheritance::MMRefineAncestor::init";
+val_t NEW_MMRefineAncestor_inheritance___MMRefineAncestor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMRefineAncestor_inheritance___MMRefineAncestor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMSpecAncestor = "init var of MMSpecAncestor";
+void INIT_ATTRIBUTES__MMSpecAncestor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMSpecAncestor_t)(val_t p0);
+val_t NEW_MMSpecAncestor(void);
+static const char * const LOCATE_CHECKNEW_MMSpecAncestor = "check new MMSpecAncestor";
+void CHECKNEW_MMSpecAncestor(val_t p0);
+typedef void (*CHECKNEW_MMSpecAncestor_t)(val_t p0);
+static const char * const LOCATE_NEW_MMSpecAncestor_inheritance___MMSpecAncestor___init = "new MMSpecAncestor inheritance::MMSpecAncestor::init";
+val_t NEW_MMSpecAncestor_inheritance___MMSpecAncestor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMSpecAncestor_inheritance___MMSpecAncestor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMDefaultAncestor = "init var of MMDefaultAncestor";
+void INIT_ATTRIBUTES__MMDefaultAncestor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMDefaultAncestor_t)(val_t p0);
+val_t NEW_MMDefaultAncestor(void);
+static const char * const LOCATE_CHECKNEW_MMDefaultAncestor = "check new MMDefaultAncestor";
+void CHECKNEW_MMDefaultAncestor(val_t p0);
+typedef void (*CHECKNEW_MMDefaultAncestor_t)(val_t p0);
+static const char * const LOCATE_NEW_MMDefaultAncestor_inheritance___MMDefaultAncestor___init = "new MMDefaultAncestor inheritance::MMDefaultAncestor::init";
+val_t NEW_MMDefaultAncestor_inheritance___MMDefaultAncestor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMDefaultAncestor_inheritance___MMDefaultAncestor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMTypeFormal = "init var of MMTypeFormal";
+void INIT_ATTRIBUTES__MMTypeFormal(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMTypeFormal_t)(val_t p0);
+val_t NEW_MMTypeFormal(void);
+static const char * const LOCATE_CHECKNEW_MMTypeFormal = "check new MMTypeFormal";
+void CHECKNEW_MMTypeFormal(val_t p0);
+typedef void (*CHECKNEW_MMTypeFormal_t)(val_t p0);
+static const char * const LOCATE_NEW_MMTypeFormal_type_formal___MMTypeFormal___init = "new MMTypeFormal type_formal::MMTypeFormal::init";
+val_t NEW_MMTypeFormal_type_formal___MMTypeFormal___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMTypeFormal_type_formal___MMTypeFormal___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMTypeGeneric = "init var of MMTypeGeneric";
+void INIT_ATTRIBUTES__MMTypeGeneric(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMTypeGeneric_t)(val_t p0);
+val_t NEW_MMTypeGeneric(void);
+static const char * const LOCATE_CHECKNEW_MMTypeGeneric = "check new MMTypeGeneric";
+void CHECKNEW_MMTypeGeneric(val_t p0);
+typedef void (*CHECKNEW_MMTypeGeneric_t)(val_t p0);
+static const char * const LOCATE_NEW_MMTypeGeneric_genericity___MMTypeGeneric___init = "new MMTypeGeneric genericity::MMTypeGeneric::init";
+val_t NEW_MMTypeGeneric_genericity___MMTypeGeneric___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMTypeGeneric_genericity___MMTypeGeneric___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMTypeFormalParameter = "init var of MMTypeFormalParameter";
+void INIT_ATTRIBUTES__MMTypeFormalParameter(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMTypeFormalParameter_t)(val_t p0);
+val_t NEW_MMTypeFormalParameter(void);
+static const char * const LOCATE_CHECKNEW_MMTypeFormalParameter = "check new MMTypeFormalParameter";
+void CHECKNEW_MMTypeFormalParameter(val_t p0);
+typedef void (*CHECKNEW_MMTypeFormalParameter_t)(val_t p0);
+static const char * const LOCATE_NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___with_bound = "new MMTypeFormalParameter genericity::MMTypeFormalParameter::with_bound";
+val_t NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___with_bound(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___with_bound_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___init = "new MMTypeFormalParameter genericity::MMTypeFormalParameter::init";
+val_t NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMTypeProperty = "init var of MMTypeProperty";
+void INIT_ATTRIBUTES__MMTypeProperty(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMTypeProperty_t)(val_t p0);
+val_t NEW_MMTypeProperty(void);
+static const char * const LOCATE_CHECKNEW_MMTypeProperty = "check new MMTypeProperty";
+void CHECKNEW_MMTypeProperty(val_t p0);
+typedef void (*CHECKNEW_MMTypeProperty_t)(val_t p0);
+static const char * const LOCATE_NEW_MMTypeProperty_abstractmetamodel___MMLocalProperty___init = "new MMTypeProperty abstractmetamodel::MMLocalProperty::init";
+val_t NEW_MMTypeProperty_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMTypeProperty_abstractmetamodel___MMLocalProperty___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMVirtualType = "init var of MMVirtualType";
+void INIT_ATTRIBUTES__MMVirtualType(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMVirtualType_t)(val_t p0);
+val_t NEW_MMVirtualType(void);
+static const char * const LOCATE_CHECKNEW_MMVirtualType = "check new MMVirtualType";
+void CHECKNEW_MMVirtualType(val_t p0);
+typedef void (*CHECKNEW_MMVirtualType_t)(val_t p0);
+static const char * const LOCATE_NEW_MMVirtualType_virtualtype___MMVirtualType___init = "new MMVirtualType virtualtype::MMVirtualType::init";
+val_t NEW_MMVirtualType_virtualtype___MMVirtualType___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMVirtualType_virtualtype___MMVirtualType___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__Option = "init var of Option";
+void INIT_ATTRIBUTES__Option(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Option_t)(val_t p0);
+val_t NEW_Option(void);
+static const char * const LOCATE_CHECKNEW_Option = "check new Option";
+void CHECKNEW_Option(val_t p0);
+typedef void (*CHECKNEW_Option_t)(val_t p0);
+static const char * const LOCATE_NEW_Option_opts___Option___init_opt = "new Option opts::Option::init_opt";
+val_t NEW_Option_opts___Option___init_opt(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_Option_opts___Option___init_opt_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__OptionText = "init var of OptionText";
+void INIT_ATTRIBUTES__OptionText(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OptionText_t)(val_t p0);
+val_t NEW_OptionText(void);
+static const char * const LOCATE_CHECKNEW_OptionText = "check new OptionText";
+void CHECKNEW_OptionText(val_t p0);
+typedef void (*CHECKNEW_OptionText_t)(val_t p0);
+static const char * const LOCATE_NEW_OptionText_opts___OptionText___init = "new OptionText opts::OptionText::init";
+val_t NEW_OptionText_opts___OptionText___init(val_t p0);
+typedef val_t (*NEW_OptionText_opts___OptionText___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__OptionBool = "init var of OptionBool";
+void INIT_ATTRIBUTES__OptionBool(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OptionBool_t)(val_t p0);
+val_t NEW_OptionBool(void);
+static const char * const LOCATE_CHECKNEW_OptionBool = "check new OptionBool";
+void CHECKNEW_OptionBool(val_t p0);
+typedef void (*CHECKNEW_OptionBool_t)(val_t p0);
+static const char * const LOCATE_NEW_OptionBool_opts___OptionBool___init = "new OptionBool opts::OptionBool::init";
+val_t NEW_OptionBool_opts___OptionBool___init(val_t p0, val_t p1);
+typedef val_t (*NEW_OptionBool_opts___OptionBool___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__OptionCount = "init var of OptionCount";
+void INIT_ATTRIBUTES__OptionCount(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OptionCount_t)(val_t p0);
+val_t NEW_OptionCount(void);
+static const char * const LOCATE_CHECKNEW_OptionCount = "check new OptionCount";
+void CHECKNEW_OptionCount(val_t p0);
+typedef void (*CHECKNEW_OptionCount_t)(val_t p0);
+static const char * const LOCATE_NEW_OptionCount_opts___OptionCount___init = "new OptionCount opts::OptionCount::init";
+val_t NEW_OptionCount_opts___OptionCount___init(val_t p0, val_t p1);
+typedef val_t (*NEW_OptionCount_opts___OptionCount___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__OptionParameter = "init var of OptionParameter";
+void INIT_ATTRIBUTES__OptionParameter(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OptionParameter_t)(val_t p0);
+val_t NEW_OptionParameter(void);
+static const char * const LOCATE_CHECKNEW_OptionParameter = "check new OptionParameter";
+void CHECKNEW_OptionParameter(val_t p0);
+typedef void (*CHECKNEW_OptionParameter_t)(val_t p0);
+static const char * const LOCATE_NEW_OptionParameter_opts___OptionParameter___init_opt = "new OptionParameter opts::OptionParameter::init_opt";
+val_t NEW_OptionParameter_opts___OptionParameter___init_opt(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_OptionParameter_opts___OptionParameter___init_opt_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__OptionString = "init var of OptionString";
+void INIT_ATTRIBUTES__OptionString(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OptionString_t)(val_t p0);
+val_t NEW_OptionString(void);
+static const char * const LOCATE_CHECKNEW_OptionString = "check new OptionString";
+void CHECKNEW_OptionString(val_t p0);
+typedef void (*CHECKNEW_OptionString_t)(val_t p0);
+static const char * const LOCATE_NEW_OptionString_opts___OptionString___init = "new OptionString opts::OptionString::init";
+val_t NEW_OptionString_opts___OptionString___init(val_t p0, val_t p1);
+typedef val_t (*NEW_OptionString_opts___OptionString___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__OptionEnum = "init var of OptionEnum";
+void INIT_ATTRIBUTES__OptionEnum(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OptionEnum_t)(val_t p0);
+val_t NEW_OptionEnum(void);
+static const char * const LOCATE_CHECKNEW_OptionEnum = "check new OptionEnum";
+void CHECKNEW_OptionEnum(val_t p0);
+typedef void (*CHECKNEW_OptionEnum_t)(val_t p0);
+static const char * const LOCATE_NEW_OptionEnum_opts___OptionEnum___init = "new OptionEnum opts::OptionEnum::init";
+val_t NEW_OptionEnum_opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_OptionEnum_opts___OptionEnum___init_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_INIT_ATTRIBUTES__OptionInt = "init var of OptionInt";
+void INIT_ATTRIBUTES__OptionInt(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OptionInt_t)(val_t p0);
+val_t NEW_OptionInt(void);
+static const char * const LOCATE_CHECKNEW_OptionInt = "check new OptionInt";
+void CHECKNEW_OptionInt(val_t p0);
+typedef void (*CHECKNEW_OptionInt_t)(val_t p0);
+static const char * const LOCATE_NEW_OptionInt_opts___OptionInt___init = "new OptionInt opts::OptionInt::init";
+val_t NEW_OptionInt_opts___OptionInt___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_OptionInt_opts___OptionInt___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__OptionArray = "init var of OptionArray";
+void INIT_ATTRIBUTES__OptionArray(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OptionArray_t)(val_t p0);
+val_t NEW_OptionArray(void);
+static const char * const LOCATE_CHECKNEW_OptionArray = "check new OptionArray";
+void CHECKNEW_OptionArray(val_t p0);
+typedef void (*CHECKNEW_OptionArray_t)(val_t p0);
+static const char * const LOCATE_NEW_OptionArray_opts___OptionArray___init = "new OptionArray opts::OptionArray::init";
+val_t NEW_OptionArray_opts___OptionArray___init(val_t p0, val_t p1);
+typedef val_t (*NEW_OptionArray_opts___OptionArray___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__OptionContext = "init var of OptionContext";
+void INIT_ATTRIBUTES__OptionContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__OptionContext_t)(val_t p0);
+val_t NEW_OptionContext(void);
+static const char * const LOCATE_CHECKNEW_OptionContext = "check new OptionContext";
+void CHECKNEW_OptionContext(val_t p0);
+typedef void (*CHECKNEW_OptionContext_t)(val_t p0);
+static const char * const LOCATE_NEW_OptionContext_opts___OptionContext___init = "new OptionContext opts::OptionContext::init";
+val_t NEW_OptionContext_opts___OptionContext___init(void);
+typedef val_t (*NEW_OptionContext_opts___OptionContext___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__Message = "init var of Message";
+void INIT_ATTRIBUTES__Message(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Message_t)(val_t p0);
+val_t NEW_Message(void);
+static const char * const LOCATE_CHECKNEW_Message = "check new Message";
+void CHECKNEW_Message(val_t p0);
+typedef void (*CHECKNEW_Message_t)(val_t p0);
+static const char * const LOCATE_NEW_Message_mmloader___Message___init = "new Message mmloader::Message::init";
+val_t NEW_Message_mmloader___Message___init(val_t p0, val_t p1);
+typedef val_t (*NEW_Message_mmloader___Message___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ToolContext = "init var of ToolContext";
+void INIT_ATTRIBUTES__ToolContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ToolContext_t)(val_t p0);
+val_t NEW_ToolContext(void);
+static const char * const LOCATE_CHECKNEW_ToolContext = "check new ToolContext";
+void CHECKNEW_ToolContext(val_t p0);
+typedef void (*CHECKNEW_ToolContext_t)(val_t p0);
+static const char * const LOCATE_NEW_ToolContext_mmloader___ToolContext___init = "new ToolContext mmloader::ToolContext::init";
+val_t NEW_ToolContext_mmloader___ToolContext___init(void);
+typedef val_t (*NEW_ToolContext_mmloader___ToolContext___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__ModuleLoader = "init var of ModuleLoader";
+void INIT_ATTRIBUTES__ModuleLoader(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ModuleLoader_t)(val_t p0);
+val_t NEW_ModuleLoader(void);
+static const char * const LOCATE_CHECKNEW_ModuleLoader = "check new ModuleLoader";
+void CHECKNEW_ModuleLoader(val_t p0);
+typedef void (*CHECKNEW_ModuleLoader_t)(val_t p0);
+static const char * const LOCATE_NEW_ModuleLoader_mmloader___ModuleLoader___init = "new ModuleLoader mmloader::ModuleLoader::init";
+val_t NEW_ModuleLoader_mmloader___ModuleLoader___init(void);
+typedef val_t (*NEW_ModuleLoader_mmloader___ModuleLoader___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMSrcModule = "init var of MMSrcModule";
+void INIT_ATTRIBUTES__MMSrcModule(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMSrcModule_t)(val_t p0);
+val_t NEW_MMSrcModule(void);
+static const char * const LOCATE_CHECKNEW_MMSrcModule = "check new MMSrcModule";
+void CHECKNEW_MMSrcModule(val_t p0);
+typedef void (*CHECKNEW_MMSrcModule_t)(val_t p0);
+static const char * const LOCATE_NEW_MMSrcModule_syntax_base___MMSrcModule___init = "new MMSrcModule syntax_base::MMSrcModule::init";
+val_t NEW_MMSrcModule_syntax_base___MMSrcModule___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+typedef val_t (*NEW_MMSrcModule_syntax_base___MMSrcModule___init_t)(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMSrcLocalClass = "init var of MMSrcLocalClass";
+void INIT_ATTRIBUTES__MMSrcLocalClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMSrcLocalClass_t)(val_t p0);
+val_t NEW_MMSrcLocalClass(void);
+static const char * const LOCATE_CHECKNEW_MMSrcLocalClass = "check new MMSrcLocalClass";
+void CHECKNEW_MMSrcLocalClass(val_t p0);
+typedef void (*CHECKNEW_MMSrcLocalClass_t)(val_t p0);
+static const char * const LOCATE_NEW_MMSrcLocalClass_syntax_base___MMSrcLocalClass___init = "new MMSrcLocalClass syntax_base::MMSrcLocalClass::init";
+val_t NEW_MMSrcLocalClass_syntax_base___MMSrcLocalClass___init(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_MMSrcLocalClass_syntax_base___MMSrcLocalClass___init_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMSrcAttribute = "init var of MMSrcAttribute";
+void INIT_ATTRIBUTES__MMSrcAttribute(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMSrcAttribute_t)(val_t p0);
+val_t NEW_MMSrcAttribute(void);
+static const char * const LOCATE_CHECKNEW_MMSrcAttribute = "check new MMSrcAttribute";
+void CHECKNEW_MMSrcAttribute(val_t p0);
+typedef void (*CHECKNEW_MMSrcAttribute_t)(val_t p0);
+static const char * const LOCATE_NEW_MMSrcAttribute_syntax_base___MMSrcAttribute___init = "new MMSrcAttribute syntax_base::MMSrcAttribute::init";
+val_t NEW_MMSrcAttribute_syntax_base___MMSrcAttribute___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMSrcAttribute_syntax_base___MMSrcAttribute___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMSrcMethod = "init var of MMSrcMethod";
+void INIT_ATTRIBUTES__MMSrcMethod(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMSrcMethod_t)(val_t p0);
+val_t NEW_MMSrcMethod(void);
+static const char * const LOCATE_CHECKNEW_MMSrcMethod = "check new MMSrcMethod";
+void CHECKNEW_MMSrcMethod(val_t p0);
+typedef void (*CHECKNEW_MMSrcMethod_t)(val_t p0);
+static const char * const LOCATE_NEW_MMSrcMethod_abstractmetamodel___MMLocalProperty___init = "new MMSrcMethod abstractmetamodel::MMLocalProperty::init";
+val_t NEW_MMSrcMethod_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
+typedef val_t (*NEW_MMSrcMethod_abstractmetamodel___MMLocalProperty___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMAttrImplementationMethod = "init var of MMAttrImplementationMethod";
+void INIT_ATTRIBUTES__MMAttrImplementationMethod(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMAttrImplementationMethod_t)(val_t p0);
+val_t NEW_MMAttrImplementationMethod(void);
+static const char * const LOCATE_CHECKNEW_MMAttrImplementationMethod = "check new MMAttrImplementationMethod";
+void CHECKNEW_MMAttrImplementationMethod(val_t p0);
+typedef void (*CHECKNEW_MMAttrImplementationMethod_t)(val_t p0);
+static const char * const LOCATE_NEW_MMAttrImplementationMethod_syntax_base___MMAttrImplementationMethod___init = "new MMAttrImplementationMethod syntax_base::MMAttrImplementationMethod::init";
+val_t NEW_MMAttrImplementationMethod_syntax_base___MMAttrImplementationMethod___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMAttrImplementationMethod_syntax_base___MMAttrImplementationMethod___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMReadImplementationMethod = "init var of MMReadImplementationMethod";
+void INIT_ATTRIBUTES__MMReadImplementationMethod(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMReadImplementationMethod_t)(val_t p0);
+val_t NEW_MMReadImplementationMethod(void);
+static const char * const LOCATE_CHECKNEW_MMReadImplementationMethod = "check new MMReadImplementationMethod";
+void CHECKNEW_MMReadImplementationMethod(val_t p0);
+typedef void (*CHECKNEW_MMReadImplementationMethod_t)(val_t p0);
+static const char * const LOCATE_NEW_MMReadImplementationMethod_syntax_base___MMReadImplementationMethod___init = "new MMReadImplementationMethod syntax_base::MMReadImplementationMethod::init";
+val_t NEW_MMReadImplementationMethod_syntax_base___MMReadImplementationMethod___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMReadImplementationMethod_syntax_base___MMReadImplementationMethod___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMWriteImplementationMethod = "init var of MMWriteImplementationMethod";
+void INIT_ATTRIBUTES__MMWriteImplementationMethod(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMWriteImplementationMethod_t)(val_t p0);
+val_t NEW_MMWriteImplementationMethod(void);
+static const char * const LOCATE_CHECKNEW_MMWriteImplementationMethod = "check new MMWriteImplementationMethod";
+void CHECKNEW_MMWriteImplementationMethod(val_t p0);
+typedef void (*CHECKNEW_MMWriteImplementationMethod_t)(val_t p0);
+static const char * const LOCATE_NEW_MMWriteImplementationMethod_syntax_base___MMWriteImplementationMethod___init = "new MMWriteImplementationMethod syntax_base::MMWriteImplementationMethod::init";
+val_t NEW_MMWriteImplementationMethod_syntax_base___MMWriteImplementationMethod___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMWriteImplementationMethod_syntax_base___MMWriteImplementationMethod___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMMethSrcMethod = "init var of MMMethSrcMethod";
+void INIT_ATTRIBUTES__MMMethSrcMethod(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMMethSrcMethod_t)(val_t p0);
+val_t NEW_MMMethSrcMethod(void);
+static const char * const LOCATE_CHECKNEW_MMMethSrcMethod = "check new MMMethSrcMethod";
+void CHECKNEW_MMMethSrcMethod(val_t p0);
+typedef void (*CHECKNEW_MMMethSrcMethod_t)(val_t p0);
+static const char * const LOCATE_NEW_MMMethSrcMethod_syntax_base___MMMethSrcMethod___init = "new MMMethSrcMethod syntax_base::MMMethSrcMethod::init";
+val_t NEW_MMMethSrcMethod_syntax_base___MMMethSrcMethod___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMMethSrcMethod_syntax_base___MMMethSrcMethod___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMSrcTypeProperty = "init var of MMSrcTypeProperty";
+void INIT_ATTRIBUTES__MMSrcTypeProperty(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMSrcTypeProperty_t)(val_t p0);
+val_t NEW_MMSrcTypeProperty(void);
+static const char * const LOCATE_CHECKNEW_MMSrcTypeProperty = "check new MMSrcTypeProperty";
+void CHECKNEW_MMSrcTypeProperty(val_t p0);
+typedef void (*CHECKNEW_MMSrcTypeProperty_t)(val_t p0);
+static const char * const LOCATE_NEW_MMSrcTypeProperty_syntax_base___MMSrcTypeProperty___init = "new MMSrcTypeProperty syntax_base::MMSrcTypeProperty::init";
+val_t NEW_MMSrcTypeProperty_syntax_base___MMSrcTypeProperty___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMSrcTypeProperty_syntax_base___MMSrcTypeProperty___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMImplicitInit = "init var of MMImplicitInit";
+void INIT_ATTRIBUTES__MMImplicitInit(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMImplicitInit_t)(val_t p0);
+val_t NEW_MMImplicitInit(void);
+static const char * const LOCATE_CHECKNEW_MMImplicitInit = "check new MMImplicitInit";
+void CHECKNEW_MMImplicitInit(val_t p0);
+typedef void (*CHECKNEW_MMImplicitInit_t)(val_t p0);
+static const char * const LOCATE_NEW_MMImplicitInit_syntax_base___MMImplicitInit___init = "new MMImplicitInit syntax_base::MMImplicitInit::init";
+val_t NEW_MMImplicitInit_syntax_base___MMImplicitInit___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MMImplicitInit_syntax_base___MMImplicitInit___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__VarVariable = "init var of VarVariable";
+void INIT_ATTRIBUTES__VarVariable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__VarVariable_t)(val_t p0);
+val_t NEW_VarVariable(void);
+static const char * const LOCATE_CHECKNEW_VarVariable = "check new VarVariable";
+void CHECKNEW_VarVariable(val_t p0);
+typedef void (*CHECKNEW_VarVariable_t)(val_t p0);
+static const char * const LOCATE_NEW_VarVariable_syntax_base___VarVariable___init = "new VarVariable syntax_base::VarVariable::init";
+val_t NEW_VarVariable_syntax_base___VarVariable___init(val_t p0, val_t p1);
+typedef val_t (*NEW_VarVariable_syntax_base___VarVariable___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ParamVariable = "init var of ParamVariable";
+void INIT_ATTRIBUTES__ParamVariable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ParamVariable_t)(val_t p0);
+val_t NEW_ParamVariable(void);
+static const char * const LOCATE_CHECKNEW_ParamVariable = "check new ParamVariable";
+void CHECKNEW_ParamVariable(val_t p0);
+typedef void (*CHECKNEW_ParamVariable_t)(val_t p0);
+static const char * const LOCATE_NEW_ParamVariable_syntax_base___ParamVariable___init = "new ParamVariable syntax_base::ParamVariable::init";
+val_t NEW_ParamVariable_syntax_base___ParamVariable___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ParamVariable_syntax_base___ParamVariable___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__AutoVariable = "init var of AutoVariable";
+void INIT_ATTRIBUTES__AutoVariable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AutoVariable_t)(val_t p0);
+val_t NEW_AutoVariable(void);
+static const char * const LOCATE_CHECKNEW_AutoVariable = "check new AutoVariable";
+void CHECKNEW_AutoVariable(val_t p0);
+typedef void (*CHECKNEW_AutoVariable_t)(val_t p0);
+static const char * const LOCATE_NEW_AutoVariable_syntax_base___AutoVariable___init = "new AutoVariable syntax_base::AutoVariable::init";
+val_t NEW_AutoVariable_syntax_base___AutoVariable___init(val_t p0, val_t p1);
+typedef val_t (*NEW_AutoVariable_syntax_base___AutoVariable___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ClosureVariable = "init var of ClosureVariable";
+void INIT_ATTRIBUTES__ClosureVariable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ClosureVariable_t)(val_t p0);
+val_t NEW_ClosureVariable(void);
+static const char * const LOCATE_CHECKNEW_ClosureVariable = "check new ClosureVariable";
+void CHECKNEW_ClosureVariable(val_t p0);
+typedef void (*CHECKNEW_ClosureVariable_t)(val_t p0);
+static const char * const LOCATE_NEW_ClosureVariable_syntax_base___ClosureVariable___init = "new ClosureVariable syntax_base::ClosureVariable::init";
+val_t NEW_ClosureVariable_syntax_base___ClosureVariable___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ClosureVariable_syntax_base___ClosureVariable___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__AbsSyntaxVisitor = "init var of AbsSyntaxVisitor";
+void INIT_ATTRIBUTES__AbsSyntaxVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AbsSyntaxVisitor_t)(val_t p0);
+val_t NEW_AbsSyntaxVisitor(void);
+static const char * const LOCATE_CHECKNEW_AbsSyntaxVisitor = "check new AbsSyntaxVisitor";
+void CHECKNEW_AbsSyntaxVisitor(val_t p0);
+typedef void (*CHECKNEW_AbsSyntaxVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_AbsSyntaxVisitor_syntax_base___AbsSyntaxVisitor___init = "new AbsSyntaxVisitor syntax_base::AbsSyntaxVisitor::init";
+val_t NEW_AbsSyntaxVisitor_syntax_base___AbsSyntaxVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_AbsSyntaxVisitor_syntax_base___AbsSyntaxVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAbsAbsSendExpr = "init var of AAbsAbsSendExpr";
+void INIT_ATTRIBUTES__AAbsAbsSendExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAbsAbsSendExpr_t)(val_t p0);
+val_t NEW_AAbsAbsSendExpr(void);
+static const char * const LOCATE_CHECKNEW_AAbsAbsSendExpr = "check new AAbsAbsSendExpr";
+void CHECKNEW_AAbsAbsSendExpr(val_t p0);
+typedef void (*CHECKNEW_AAbsAbsSendExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAbsAbsSendExpr_parser_nodes___ANode___init = "new AAbsAbsSendExpr parser_nodes::ANode::init";
+val_t NEW_AAbsAbsSendExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAbsAbsSendExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAbsSendExpr = "init var of AAbsSendExpr";
+void INIT_ATTRIBUTES__AAbsSendExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAbsSendExpr_t)(val_t p0);
+val_t NEW_AAbsSendExpr(void);
+static const char * const LOCATE_CHECKNEW_AAbsSendExpr = "check new AAbsSendExpr";
+void CHECKNEW_AAbsSendExpr(val_t p0);
+typedef void (*CHECKNEW_AAbsSendExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AAbsSendExpr_parser_nodes___ANode___init = "new AAbsSendExpr parser_nodes::ANode::init";
+val_t NEW_AAbsSendExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAbsSendExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ASuperInitCall = "init var of ASuperInitCall";
+void INIT_ATTRIBUTES__ASuperInitCall(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ASuperInitCall_t)(val_t p0);
+val_t NEW_ASuperInitCall(void);
+static const char * const LOCATE_CHECKNEW_ASuperInitCall = "check new ASuperInitCall";
+void CHECKNEW_ASuperInitCall(val_t p0);
+typedef void (*CHECKNEW_ASuperInitCall_t)(val_t p0);
+static const char * const LOCATE_NEW_ASuperInitCall_parser_nodes___ANode___init = "new ASuperInitCall parser_nodes::ANode::init";
+val_t NEW_ASuperInitCall_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ASuperInitCall_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ASendReassignExpr = "init var of ASendReassignExpr";
+void INIT_ATTRIBUTES__ASendReassignExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ASendReassignExpr_t)(val_t p0);
+val_t NEW_ASendReassignExpr(void);
+static const char * const LOCATE_CHECKNEW_ASendReassignExpr = "check new ASendReassignExpr";
+void CHECKNEW_ASendReassignExpr(val_t p0);
+typedef void (*CHECKNEW_ASendReassignExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ASendReassignExpr_parser_prod___ASendExpr___empty_init = "new ASendReassignExpr parser_prod::ASendExpr::empty_init";
+val_t NEW_ASendReassignExpr_parser_prod___ASendExpr___empty_init(void);
+typedef val_t (*NEW_ASendReassignExpr_parser_prod___ASendExpr___empty_init_t)(void);
+static const char * const LOCATE_NEW_ASendReassignExpr_parser_prod___ASendExpr___init_asendexpr = "new ASendReassignExpr parser_prod::ASendExpr::init_asendexpr";
+val_t NEW_ASendReassignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0);
+typedef val_t (*NEW_ASendReassignExpr_parser_prod___ASendExpr___init_asendexpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ASendReassignExpr_parser_nodes___ANode___init = "new ASendReassignExpr parser_nodes::ANode::init";
+val_t NEW_ASendReassignExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ASendReassignExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__CSHSorter = "init var of CSHSorter";
+void INIT_ATTRIBUTES__CSHSorter(val_t p0);
+typedef void (*INIT_ATTRIBUTES__CSHSorter_t)(val_t p0);
+val_t NEW_CSHSorter(void);
+static const char * const LOCATE_CHECKNEW_CSHSorter = "check new CSHSorter";
+void CHECKNEW_CSHSorter(val_t p0);
+typedef void (*CHECKNEW_CSHSorter_t)(val_t p0);
+static const char * const LOCATE_NEW_CSHSorter_mmbuilder___CSHSorter___init = "new CSHSorter mmbuilder::CSHSorter::init";
+val_t NEW_CSHSorter_mmbuilder___CSHSorter___init(void);
+typedef val_t (*NEW_CSHSorter_mmbuilder___CSHSorter___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__MMSrcAncestor = "init var of MMSrcAncestor";
+void INIT_ATTRIBUTES__MMSrcAncestor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MMSrcAncestor_t)(val_t p0);
+val_t NEW_MMSrcAncestor(void);
+static const char * const LOCATE_CHECKNEW_MMSrcAncestor = "check new MMSrcAncestor";
+void CHECKNEW_MMSrcAncestor(val_t p0);
+typedef void (*CHECKNEW_MMSrcAncestor_t)(val_t p0);
+static const char * const LOCATE_NEW_MMSrcAncestor_mmbuilder___MMSrcAncestor___init = "new MMSrcAncestor mmbuilder::MMSrcAncestor::init";
+val_t NEW_MMSrcAncestor_mmbuilder___MMSrcAncestor___init(val_t p0);
+typedef val_t (*NEW_MMSrcAncestor_mmbuilder___MMSrcAncestor___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ClassBuilderVisitor = "init var of ClassBuilderVisitor";
+void INIT_ATTRIBUTES__ClassBuilderVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ClassBuilderVisitor_t)(val_t p0);
+val_t NEW_ClassBuilderVisitor(void);
+static const char * const LOCATE_CHECKNEW_ClassBuilderVisitor = "check new ClassBuilderVisitor";
+void CHECKNEW_ClassBuilderVisitor(val_t p0);
+typedef void (*CHECKNEW_ClassBuilderVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_ClassBuilderVisitor_mmbuilder___ClassBuilderVisitor___init = "new ClassBuilderVisitor mmbuilder::ClassBuilderVisitor::init";
+val_t NEW_ClassBuilderVisitor_mmbuilder___ClassBuilderVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ClassBuilderVisitor_mmbuilder___ClassBuilderVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ClassSpecializationBuilderVisitor = "init var of ClassSpecializationBuilderVisitor";
+void INIT_ATTRIBUTES__ClassSpecializationBuilderVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ClassSpecializationBuilderVisitor_t)(val_t p0);
+val_t NEW_ClassSpecializationBuilderVisitor(void);
+static const char * const LOCATE_CHECKNEW_ClassSpecializationBuilderVisitor = "check new ClassSpecializationBuilderVisitor";
+void CHECKNEW_ClassSpecializationBuilderVisitor(val_t p0);
+typedef void (*CHECKNEW_ClassSpecializationBuilderVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_ClassSpecializationBuilderVisitor_mmbuilder___ClassSpecializationBuilderVisitor___init = "new ClassSpecializationBuilderVisitor mmbuilder::ClassSpecializationBuilderVisitor::init";
+val_t NEW_ClassSpecializationBuilderVisitor_mmbuilder___ClassSpecializationBuilderVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ClassSpecializationBuilderVisitor_mmbuilder___ClassSpecializationBuilderVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ClassAncestorBuilder = "init var of ClassAncestorBuilder";
+void INIT_ATTRIBUTES__ClassAncestorBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ClassAncestorBuilder_t)(val_t p0);
+val_t NEW_ClassAncestorBuilder(void);
+static const char * const LOCATE_CHECKNEW_ClassAncestorBuilder = "check new ClassAncestorBuilder";
+void CHECKNEW_ClassAncestorBuilder(val_t p0);
+typedef void (*CHECKNEW_ClassAncestorBuilder_t)(val_t p0);
+static const char * const LOCATE_NEW_ClassAncestorBuilder_mmbuilder___ClassAncestorBuilder___init = "new ClassAncestorBuilder mmbuilder::ClassAncestorBuilder::init";
+val_t NEW_ClassAncestorBuilder_mmbuilder___ClassAncestorBuilder___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ClassAncestorBuilder_mmbuilder___ClassAncestorBuilder___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ClassVerifierVisitor = "init var of ClassVerifierVisitor";
+void INIT_ATTRIBUTES__ClassVerifierVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ClassVerifierVisitor_t)(val_t p0);
+val_t NEW_ClassVerifierVisitor(void);
+static const char * const LOCATE_CHECKNEW_ClassVerifierVisitor = "check new ClassVerifierVisitor";
+void CHECKNEW_ClassVerifierVisitor(val_t p0);
+typedef void (*CHECKNEW_ClassVerifierVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_ClassVerifierVisitor_mmbuilder___ClassVerifierVisitor___init = "new ClassVerifierVisitor mmbuilder::ClassVerifierVisitor::init";
+val_t NEW_ClassVerifierVisitor_mmbuilder___ClassVerifierVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ClassVerifierVisitor_mmbuilder___ClassVerifierVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__PropertyBuilderVisitor = "init var of PropertyBuilderVisitor";
+void INIT_ATTRIBUTES__PropertyBuilderVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__PropertyBuilderVisitor_t)(val_t p0);
+val_t NEW_PropertyBuilderVisitor(void);
+static const char * const LOCATE_CHECKNEW_PropertyBuilderVisitor = "check new PropertyBuilderVisitor";
+void CHECKNEW_PropertyBuilderVisitor(val_t p0);
+typedef void (*CHECKNEW_PropertyBuilderVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_PropertyBuilderVisitor_mmbuilder___PropertyBuilderVisitor___init = "new PropertyBuilderVisitor mmbuilder::PropertyBuilderVisitor::init";
+val_t NEW_PropertyBuilderVisitor_mmbuilder___PropertyBuilderVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_PropertyBuilderVisitor_mmbuilder___PropertyBuilderVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__PropertyVerifierVisitor = "init var of PropertyVerifierVisitor";
+void INIT_ATTRIBUTES__PropertyVerifierVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__PropertyVerifierVisitor_t)(val_t p0);
+val_t NEW_PropertyVerifierVisitor(void);
+static const char * const LOCATE_CHECKNEW_PropertyVerifierVisitor = "check new PropertyVerifierVisitor";
+void CHECKNEW_PropertyVerifierVisitor(val_t p0);
+typedef void (*CHECKNEW_PropertyVerifierVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_PropertyVerifierVisitor_mmbuilder___PropertyVerifierVisitor___init = "new PropertyVerifierVisitor mmbuilder::PropertyVerifierVisitor::init";
+val_t NEW_PropertyVerifierVisitor_mmbuilder___PropertyVerifierVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_PropertyVerifierVisitor_mmbuilder___PropertyVerifierVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__SignatureBuilder = "init var of SignatureBuilder";
+void INIT_ATTRIBUTES__SignatureBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__SignatureBuilder_t)(val_t p0);
+val_t NEW_SignatureBuilder(void);
+static const char * const LOCATE_CHECKNEW_SignatureBuilder = "check new SignatureBuilder";
+void CHECKNEW_SignatureBuilder(val_t p0);
+typedef void (*CHECKNEW_SignatureBuilder_t)(val_t p0);
+static const char * const LOCATE_NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init = "new SignatureBuilder mmbuilder::SignatureBuilder::init";
+val_t NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init(void);
+typedef val_t (*NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__MethidAccumulator = "init var of MethidAccumulator";
+void INIT_ATTRIBUTES__MethidAccumulator(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MethidAccumulator_t)(val_t p0);
+val_t NEW_MethidAccumulator(void);
+static const char * const LOCATE_CHECKNEW_MethidAccumulator = "check new MethidAccumulator";
+void CHECKNEW_MethidAccumulator(val_t p0);
+typedef void (*CHECKNEW_MethidAccumulator_t)(val_t p0);
+static const char * const LOCATE_NEW_MethidAccumulator_parser_prod___Visitor___init = "new MethidAccumulator parser_prod::Visitor::init";
+val_t NEW_MethidAccumulator_parser_prod___Visitor___init(void);
+typedef val_t (*NEW_MethidAccumulator_parser_prod___Visitor___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__IRegister = "init var of IRegister";
+void INIT_ATTRIBUTES__IRegister(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IRegister_t)(val_t p0);
+val_t NEW_IRegister(void);
+static const char * const LOCATE_CHECKNEW_IRegister = "check new IRegister";
+void CHECKNEW_IRegister(val_t p0);
+typedef void (*CHECKNEW_IRegister_t)(val_t p0);
+static const char * const LOCATE_NEW_IRegister_icode_base___IRegister___init = "new IRegister icode_base::IRegister::init";
+val_t NEW_IRegister_icode_base___IRegister___init(val_t p0);
+typedef val_t (*NEW_IRegister_icode_base___IRegister___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IEscapeMark = "init var of IEscapeMark";
+void INIT_ATTRIBUTES__IEscapeMark(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IEscapeMark_t)(val_t p0);
+val_t NEW_IEscapeMark(void);
+static const char * const LOCATE_CHECKNEW_IEscapeMark = "check new IEscapeMark";
+void CHECKNEW_IEscapeMark(val_t p0);
+typedef void (*CHECKNEW_IEscapeMark_t)(val_t p0);
+static const char * const LOCATE_NEW_IEscapeMark_icode_base___IEscapeMark___init = "new IEscapeMark icode_base::IEscapeMark::init";
+val_t NEW_IEscapeMark_icode_base___IEscapeMark___init(void);
+typedef val_t (*NEW_IEscapeMark_icode_base___IEscapeMark___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__IClosureDecl = "init var of IClosureDecl";
+void INIT_ATTRIBUTES__IClosureDecl(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IClosureDecl_t)(val_t p0);
+val_t NEW_IClosureDecl(void);
+static const char * const LOCATE_CHECKNEW_IClosureDecl = "check new IClosureDecl";
+void CHECKNEW_IClosureDecl(val_t p0);
+typedef void (*CHECKNEW_IClosureDecl_t)(val_t p0);
+static const char * const LOCATE_NEW_IClosureDecl_icode_base___IClosureDecl___init = "new IClosureDecl icode_base::IClosureDecl::init";
+val_t NEW_IClosureDecl_icode_base___IClosureDecl___init(val_t p0);
+typedef val_t (*NEW_IClosureDecl_icode_base___IClosureDecl___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IRoutine = "init var of IRoutine";
+void INIT_ATTRIBUTES__IRoutine(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IRoutine_t)(val_t p0);
+val_t NEW_IRoutine(void);
+static const char * const LOCATE_CHECKNEW_IRoutine = "check new IRoutine";
+void CHECKNEW_IRoutine(val_t p0);
+typedef void (*CHECKNEW_IRoutine_t)(val_t p0);
+static const char * const LOCATE_NEW_IRoutine_icode_base___IRoutine___init = "new IRoutine icode_base::IRoutine::init";
+val_t NEW_IRoutine_icode_base___IRoutine___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IRoutine_icode_base___IRoutine___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__IClosureDef = "init var of IClosureDef";
+void INIT_ATTRIBUTES__IClosureDef(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IClosureDef_t)(val_t p0);
+val_t NEW_IClosureDef(void);
+static const char * const LOCATE_CHECKNEW_IClosureDef = "check new IClosureDef";
+void CHECKNEW_IClosureDef(val_t p0);
+typedef void (*CHECKNEW_IClosureDef_t)(val_t p0);
+static const char * const LOCATE_NEW_IClosureDef_icode_base___IClosureDef___init = "new IClosureDef icode_base::IClosureDef::init";
+val_t NEW_IClosureDef_icode_base___IClosureDef___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IClosureDef_icode_base___IClosureDef___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ISeq = "init var of ISeq";
+void INIT_ATTRIBUTES__ISeq(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ISeq_t)(val_t p0);
+val_t NEW_ISeq(void);
+static const char * const LOCATE_CHECKNEW_ISeq = "check new ISeq";
+void CHECKNEW_ISeq(val_t p0);
+typedef void (*CHECKNEW_ISeq_t)(val_t p0);
+static const char * const LOCATE_NEW_ISeq_icode_base___ISeq___init = "new ISeq icode_base::ISeq::init";
+val_t NEW_ISeq_icode_base___ISeq___init(void);
+typedef val_t (*NEW_ISeq_icode_base___ISeq___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__ILoop = "init var of ILoop";
+void INIT_ATTRIBUTES__ILoop(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ILoop_t)(val_t p0);
+val_t NEW_ILoop(void);
+static const char * const LOCATE_CHECKNEW_ILoop = "check new ILoop";
+void CHECKNEW_ILoop(val_t p0);
+typedef void (*CHECKNEW_ILoop_t)(val_t p0);
+static const char * const LOCATE_NEW_ILoop_icode_base___ILoop___init = "new ILoop icode_base::ILoop::init";
+val_t NEW_ILoop_icode_base___ILoop___init(void);
+typedef val_t (*NEW_ILoop_icode_base___ILoop___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__IIf = "init var of IIf";
+void INIT_ATTRIBUTES__IIf(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IIf_t)(val_t p0);
+val_t NEW_IIf(void);
+static const char * const LOCATE_CHECKNEW_IIf = "check new IIf";
+void CHECKNEW_IIf(val_t p0);
+typedef void (*CHECKNEW_IIf_t)(val_t p0);
+static const char * const LOCATE_NEW_IIf_icode_base___IIf___init = "new IIf icode_base::IIf::init";
+val_t NEW_IIf_icode_base___IIf___init(val_t p0);
+typedef val_t (*NEW_IIf_icode_base___IIf___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IEscape = "init var of IEscape";
+void INIT_ATTRIBUTES__IEscape(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IEscape_t)(val_t p0);
+val_t NEW_IEscape(void);
+static const char * const LOCATE_CHECKNEW_IEscape = "check new IEscape";
+void CHECKNEW_IEscape(val_t p0);
+typedef void (*CHECKNEW_IEscape_t)(val_t p0);
+static const char * const LOCATE_NEW_IEscape_icode_base___IEscape___init = "new IEscape icode_base::IEscape::init";
+val_t NEW_IEscape_icode_base___IEscape___init(val_t p0);
+typedef val_t (*NEW_IEscape_icode_base___IEscape___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IAbort = "init var of IAbort";
+void INIT_ATTRIBUTES__IAbort(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IAbort_t)(val_t p0);
+val_t NEW_IAbort(void);
+static const char * const LOCATE_CHECKNEW_IAbort = "check new IAbort";
+void CHECKNEW_IAbort(val_t p0);
+typedef void (*CHECKNEW_IAbort_t)(val_t p0);
+static const char * const LOCATE_NEW_IAbort_icode_base___IAbort___init = "new IAbort icode_base::IAbort::init";
+val_t NEW_IAbort_icode_base___IAbort___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IAbort_icode_base___IAbort___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ICall = "init var of ICall";
+void INIT_ATTRIBUTES__ICall(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ICall_t)(val_t p0);
+val_t NEW_ICall(void);
+static const char * const LOCATE_CHECKNEW_ICall = "check new ICall";
+void CHECKNEW_ICall(val_t p0);
+typedef void (*CHECKNEW_ICall_t)(val_t p0);
+static const char * const LOCATE_NEW_ICall_icode_base___ICall___init = "new ICall icode_base::ICall::init";
+val_t NEW_ICall_icode_base___ICall___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ICall_icode_base___ICall___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ISuper = "init var of ISuper";
+void INIT_ATTRIBUTES__ISuper(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ISuper_t)(val_t p0);
+val_t NEW_ISuper(void);
+static const char * const LOCATE_CHECKNEW_ISuper = "check new ISuper";
+void CHECKNEW_ISuper(val_t p0);
+typedef void (*CHECKNEW_ISuper_t)(val_t p0);
+static const char * const LOCATE_NEW_ISuper_icode_base___ISuper___init = "new ISuper icode_base::ISuper::init";
+val_t NEW_ISuper_icode_base___ISuper___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ISuper_icode_base___ISuper___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__INew = "init var of INew";
+void INIT_ATTRIBUTES__INew(val_t p0);
+typedef void (*INIT_ATTRIBUTES__INew_t)(val_t p0);
+val_t NEW_INew(void);
+static const char * const LOCATE_CHECKNEW_INew = "check new INew";
+void CHECKNEW_INew(val_t p0);
+typedef void (*CHECKNEW_INew_t)(val_t p0);
+static const char * const LOCATE_NEW_INew_icode_base___INew___init = "new INew icode_base::INew::init";
+val_t NEW_INew_icode_base___INew___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_INew_icode_base___INew___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__IAllocateInstance = "init var of IAllocateInstance";
+void INIT_ATTRIBUTES__IAllocateInstance(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IAllocateInstance_t)(val_t p0);
+val_t NEW_IAllocateInstance(void);
+static const char * const LOCATE_CHECKNEW_IAllocateInstance = "check new IAllocateInstance";
+void CHECKNEW_IAllocateInstance(val_t p0);
+typedef void (*CHECKNEW_IAllocateInstance_t)(val_t p0);
+static const char * const LOCATE_NEW_IAllocateInstance_icode_base___IAllocateInstance___init = "new IAllocateInstance icode_base::IAllocateInstance::init";
+val_t NEW_IAllocateInstance_icode_base___IAllocateInstance___init(val_t p0);
+typedef val_t (*NEW_IAllocateInstance_icode_base___IAllocateInstance___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IStaticCall = "init var of IStaticCall";
+void INIT_ATTRIBUTES__IStaticCall(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IStaticCall_t)(val_t p0);
+val_t NEW_IStaticCall(void);
+static const char * const LOCATE_CHECKNEW_IStaticCall = "check new IStaticCall";
+void CHECKNEW_IStaticCall(val_t p0);
+typedef void (*CHECKNEW_IStaticCall_t)(val_t p0);
+static const char * const LOCATE_NEW_IStaticCall_icode_base___IStaticCall___init = "new IStaticCall icode_base::IStaticCall::init";
+val_t NEW_IStaticCall_icode_base___IStaticCall___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IStaticCall_icode_base___IStaticCall___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ICheckInstance = "init var of ICheckInstance";
+void INIT_ATTRIBUTES__ICheckInstance(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ICheckInstance_t)(val_t p0);
+val_t NEW_ICheckInstance(void);
+static const char * const LOCATE_CHECKNEW_ICheckInstance = "check new ICheckInstance";
+void CHECKNEW_ICheckInstance(val_t p0);
+typedef void (*CHECKNEW_ICheckInstance_t)(val_t p0);
+static const char * const LOCATE_NEW_ICheckInstance_icode_base___ICheckInstance___init = "new ICheckInstance icode_base::ICheckInstance::init";
+val_t NEW_ICheckInstance_icode_base___ICheckInstance___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ICheckInstance_icode_base___ICheckInstance___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__IInitAttributes = "init var of IInitAttributes";
+void INIT_ATTRIBUTES__IInitAttributes(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IInitAttributes_t)(val_t p0);
+val_t NEW_IInitAttributes(void);
+static const char * const LOCATE_CHECKNEW_IInitAttributes = "check new IInitAttributes";
+void CHECKNEW_IInitAttributes(val_t p0);
+typedef void (*CHECKNEW_IInitAttributes_t)(val_t p0);
+static const char * const LOCATE_NEW_IInitAttributes_icode_base___IInitAttributes___init = "new IInitAttributes icode_base::IInitAttributes::init";
+val_t NEW_IInitAttributes_icode_base___IInitAttributes___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IInitAttributes_icode_base___IInitAttributes___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__IClosCall = "init var of IClosCall";
+void INIT_ATTRIBUTES__IClosCall(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IClosCall_t)(val_t p0);
+val_t NEW_IClosCall(void);
+static const char * const LOCATE_CHECKNEW_IClosCall = "check new IClosCall";
+void CHECKNEW_IClosCall(val_t p0);
+typedef void (*CHECKNEW_IClosCall_t)(val_t p0);
+static const char * const LOCATE_NEW_IClosCall_icode_base___IClosCall___init = "new IClosCall icode_base::IClosCall::init";
+val_t NEW_IClosCall_icode_base___IClosCall___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IClosCall_icode_base___IClosCall___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__INative = "init var of INative";
+void INIT_ATTRIBUTES__INative(val_t p0);
+typedef void (*INIT_ATTRIBUTES__INative_t)(val_t p0);
+val_t NEW_INative(void);
+static const char * const LOCATE_CHECKNEW_INative = "check new INative";
+void CHECKNEW_INative(val_t p0);
+typedef void (*CHECKNEW_INative_t)(val_t p0);
+static const char * const LOCATE_NEW_INative_icode_base___INative___init = "new INative icode_base::INative::init";
+val_t NEW_INative_icode_base___INative___init(val_t p0, val_t p1);
+typedef val_t (*NEW_INative_icode_base___INative___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__IIntValue = "init var of IIntValue";
+void INIT_ATTRIBUTES__IIntValue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IIntValue_t)(val_t p0);
+val_t NEW_IIntValue(void);
+static const char * const LOCATE_CHECKNEW_IIntValue = "check new IIntValue";
+void CHECKNEW_IIntValue(val_t p0);
+typedef void (*CHECKNEW_IIntValue_t)(val_t p0);
+static const char * const LOCATE_NEW_IIntValue_icode_base___IIntValue___init = "new IIntValue icode_base::IIntValue::init";
+val_t NEW_IIntValue_icode_base___IIntValue___init(val_t p0);
+typedef val_t (*NEW_IIntValue_icode_base___IIntValue___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IBoolValue = "init var of IBoolValue";
+void INIT_ATTRIBUTES__IBoolValue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IBoolValue_t)(val_t p0);
+val_t NEW_IBoolValue(void);
+static const char * const LOCATE_CHECKNEW_IBoolValue = "check new IBoolValue";
+void CHECKNEW_IBoolValue(val_t p0);
+typedef void (*CHECKNEW_IBoolValue_t)(val_t p0);
+static const char * const LOCATE_NEW_IBoolValue_icode_base___IBoolValue___init = "new IBoolValue icode_base::IBoolValue::init";
+val_t NEW_IBoolValue_icode_base___IBoolValue___init(val_t p0);
+typedef val_t (*NEW_IBoolValue_icode_base___IBoolValue___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IStringValue = "init var of IStringValue";
+void INIT_ATTRIBUTES__IStringValue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IStringValue_t)(val_t p0);
+val_t NEW_IStringValue(void);
+static const char * const LOCATE_CHECKNEW_IStringValue = "check new IStringValue";
+void CHECKNEW_IStringValue(val_t p0);
+typedef void (*CHECKNEW_IStringValue_t)(val_t p0);
+static const char * const LOCATE_NEW_IStringValue_icode_base___IStringValue___init = "new IStringValue icode_base::IStringValue::init";
+val_t NEW_IStringValue_icode_base___IStringValue___init(val_t p0);
+typedef val_t (*NEW_IStringValue_icode_base___IStringValue___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IFloatValue = "init var of IFloatValue";
+void INIT_ATTRIBUTES__IFloatValue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IFloatValue_t)(val_t p0);
+val_t NEW_IFloatValue(void);
+static const char * const LOCATE_CHECKNEW_IFloatValue = "check new IFloatValue";
+void CHECKNEW_IFloatValue(val_t p0);
+typedef void (*CHECKNEW_IFloatValue_t)(val_t p0);
+static const char * const LOCATE_NEW_IFloatValue_icode_base___IFloatValue___init = "new IFloatValue icode_base::IFloatValue::init";
+val_t NEW_IFloatValue_icode_base___IFloatValue___init(val_t p0);
+typedef val_t (*NEW_IFloatValue_icode_base___IFloatValue___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ICharValue = "init var of ICharValue";
+void INIT_ATTRIBUTES__ICharValue(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ICharValue_t)(val_t p0);
+val_t NEW_ICharValue(void);
+static const char * const LOCATE_CHECKNEW_ICharValue = "check new ICharValue";
+void CHECKNEW_ICharValue(val_t p0);
+typedef void (*CHECKNEW_ICharValue_t)(val_t p0);
+static const char * const LOCATE_NEW_ICharValue_icode_base___ICharValue___init = "new ICharValue icode_base::ICharValue::init";
+val_t NEW_ICharValue_icode_base___ICharValue___init(val_t p0);
+typedef val_t (*NEW_ICharValue_icode_base___ICharValue___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IMove = "init var of IMove";
+void INIT_ATTRIBUTES__IMove(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IMove_t)(val_t p0);
+val_t NEW_IMove(void);
+static const char * const LOCATE_CHECKNEW_IMove = "check new IMove";
+void CHECKNEW_IMove(val_t p0);
+typedef void (*CHECKNEW_IMove_t)(val_t p0);
+static const char * const LOCATE_NEW_IMove_icode_base___IMove___init = "new IMove icode_base::IMove::init";
+val_t NEW_IMove_icode_base___IMove___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IMove_icode_base___IMove___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__IAttrRead = "init var of IAttrRead";
+void INIT_ATTRIBUTES__IAttrRead(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IAttrRead_t)(val_t p0);
+val_t NEW_IAttrRead(void);
+static const char * const LOCATE_CHECKNEW_IAttrRead = "check new IAttrRead";
+void CHECKNEW_IAttrRead(val_t p0);
+typedef void (*CHECKNEW_IAttrRead_t)(val_t p0);
+static const char * const LOCATE_NEW_IAttrRead_icode_base___IAttrRead___init = "new IAttrRead icode_base::IAttrRead::init";
+val_t NEW_IAttrRead_icode_base___IAttrRead___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IAttrRead_icode_base___IAttrRead___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__IAttrWrite = "init var of IAttrWrite";
+void INIT_ATTRIBUTES__IAttrWrite(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IAttrWrite_t)(val_t p0);
+val_t NEW_IAttrWrite(void);
+static const char * const LOCATE_CHECKNEW_IAttrWrite = "check new IAttrWrite";
+void CHECKNEW_IAttrWrite(val_t p0);
+typedef void (*CHECKNEW_IAttrWrite_t)(val_t p0);
+static const char * const LOCATE_NEW_IAttrWrite_icode_base___IAttrWrite___init = "new IAttrWrite icode_base::IAttrWrite::init";
+val_t NEW_IAttrWrite_icode_base___IAttrWrite___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_IAttrWrite_icode_base___IAttrWrite___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__IAttrIsset = "init var of IAttrIsset";
+void INIT_ATTRIBUTES__IAttrIsset(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IAttrIsset_t)(val_t p0);
+val_t NEW_IAttrIsset(void);
+static const char * const LOCATE_CHECKNEW_IAttrIsset = "check new IAttrIsset";
+void CHECKNEW_IAttrIsset(val_t p0);
+typedef void (*CHECKNEW_IAttrIsset_t)(val_t p0);
+static const char * const LOCATE_NEW_IAttrIsset_icode_base___IAttrIsset___init = "new IAttrIsset icode_base::IAttrIsset::init";
+val_t NEW_IAttrIsset_icode_base___IAttrIsset___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IAttrIsset_icode_base___IAttrIsset___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ITypeCheck = "init var of ITypeCheck";
+void INIT_ATTRIBUTES__ITypeCheck(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ITypeCheck_t)(val_t p0);
+val_t NEW_ITypeCheck(void);
+static const char * const LOCATE_CHECKNEW_ITypeCheck = "check new ITypeCheck";
+void CHECKNEW_ITypeCheck(val_t p0);
+typedef void (*CHECKNEW_ITypeCheck_t)(val_t p0);
+static const char * const LOCATE_NEW_ITypeCheck_icode_base___ITypeCheck___init = "new ITypeCheck icode_base::ITypeCheck::init";
+val_t NEW_ITypeCheck_icode_base___ITypeCheck___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ITypeCheck_icode_base___ITypeCheck___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__IIs = "init var of IIs";
+void INIT_ATTRIBUTES__IIs(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IIs_t)(val_t p0);
+val_t NEW_IIs(void);
+static const char * const LOCATE_CHECKNEW_IIs = "check new IIs";
+void CHECKNEW_IIs(val_t p0);
+typedef void (*CHECKNEW_IIs_t)(val_t p0);
+static const char * const LOCATE_NEW_IIs_icode_base___IIs___init = "new IIs icode_base::IIs::init";
+val_t NEW_IIs_icode_base___IIs___init(val_t p0, val_t p1);
+typedef val_t (*NEW_IIs_icode_base___IIs___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__INot = "init var of INot";
+void INIT_ATTRIBUTES__INot(val_t p0);
+typedef void (*INIT_ATTRIBUTES__INot_t)(val_t p0);
+val_t NEW_INot(void);
+static const char * const LOCATE_CHECKNEW_INot = "check new INot";
+void CHECKNEW_INot(val_t p0);
+typedef void (*CHECKNEW_INot_t)(val_t p0);
+static const char * const LOCATE_NEW_INot_icode_base___INot___init = "new INot icode_base::INot::init";
+val_t NEW_INot_icode_base___INot___init(val_t p0);
+typedef val_t (*NEW_INot_icode_base___INot___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__IOnce = "init var of IOnce";
+void INIT_ATTRIBUTES__IOnce(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IOnce_t)(val_t p0);
+val_t NEW_IOnce(void);
+static const char * const LOCATE_CHECKNEW_IOnce = "check new IOnce";
+void CHECKNEW_IOnce(val_t p0);
+typedef void (*CHECKNEW_IOnce_t)(val_t p0);
+static const char * const LOCATE_NEW_IOnce_icode_base___IOnce___init = "new IOnce icode_base::IOnce::init";
+val_t NEW_IOnce_icode_base___IOnce___init(void);
+typedef val_t (*NEW_IOnce_icode_base___IOnce___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__IHasClos = "init var of IHasClos";
+void INIT_ATTRIBUTES__IHasClos(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IHasClos_t)(val_t p0);
+val_t NEW_IHasClos(void);
+static const char * const LOCATE_CHECKNEW_IHasClos = "check new IHasClos";
+void CHECKNEW_IHasClos(val_t p0);
+typedef void (*CHECKNEW_IHasClos_t)(val_t p0);
+static const char * const LOCATE_NEW_IHasClos_icode_base___IHasClos___init = "new IHasClos icode_base::IHasClos::init";
+val_t NEW_IHasClos_icode_base___IHasClos___init(val_t p0);
+typedef val_t (*NEW_IHasClos_icode_base___IHasClos___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ICodeBuilder = "init var of ICodeBuilder";
+void INIT_ATTRIBUTES__ICodeBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ICodeBuilder_t)(val_t p0);
+val_t NEW_ICodeBuilder(void);
+static const char * const LOCATE_CHECKNEW_ICodeBuilder = "check new ICodeBuilder";
+void CHECKNEW_ICodeBuilder(val_t p0);
+typedef void (*CHECKNEW_ICodeBuilder_t)(val_t p0);
+static const char * const LOCATE_NEW_ICodeBuilder_icode_builder___ICodeBuilder___init = "new ICodeBuilder icode_builder::ICodeBuilder::init";
+val_t NEW_ICodeBuilder_icode_builder___ICodeBuilder___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ICodeBuilder_icode_builder___ICodeBuilder___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ICodeVisitor = "init var of ICodeVisitor";
+void INIT_ATTRIBUTES__ICodeVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ICodeVisitor_t)(val_t p0);
+val_t NEW_ICodeVisitor(void);
+static const char * const LOCATE_CHECKNEW_ICodeVisitor = "check new ICodeVisitor";
+void CHECKNEW_ICodeVisitor(val_t p0);
+typedef void (*CHECKNEW_ICodeVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_ICodeVisitor_icode_tools___ICodeVisitor___init = "new ICodeVisitor icode_tools::ICodeVisitor::init";
+val_t NEW_ICodeVisitor_icode_tools___ICodeVisitor___init(void);
+typedef val_t (*NEW_ICodeVisitor_icode_tools___ICodeVisitor___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__ICodeDupContext = "init var of ICodeDupContext";
+void INIT_ATTRIBUTES__ICodeDupContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ICodeDupContext_t)(val_t p0);
+val_t NEW_ICodeDupContext(void);
+static const char * const LOCATE_CHECKNEW_ICodeDupContext = "check new ICodeDupContext";
+void CHECKNEW_ICodeDupContext(val_t p0);
+typedef void (*CHECKNEW_ICodeDupContext_t)(val_t p0);
+static const char * const LOCATE_NEW_ICodeDupContext_icode_tools___ICodeDupContext___init = "new ICodeDupContext icode_tools::ICodeDupContext::init";
+val_t NEW_ICodeDupContext_icode_tools___ICodeDupContext___init(val_t p0);
+typedef val_t (*NEW_ICodeDupContext_icode_tools___ICodeDupContext___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__RootFlowContext = "init var of RootFlowContext";
+void INIT_ATTRIBUTES__RootFlowContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__RootFlowContext_t)(val_t p0);
+val_t NEW_RootFlowContext(void);
+static const char * const LOCATE_CHECKNEW_RootFlowContext = "check new RootFlowContext";
+void CHECKNEW_RootFlowContext(val_t p0);
+typedef void (*CHECKNEW_RootFlowContext_t)(val_t p0);
+static const char * const LOCATE_NEW_RootFlowContext_flow___RootFlowContext___init = "new RootFlowContext flow::RootFlowContext::init";
+val_t NEW_RootFlowContext_flow___RootFlowContext___init(val_t p0, val_t p1);
+typedef val_t (*NEW_RootFlowContext_flow___RootFlowContext___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__SubFlowContext = "init var of SubFlowContext";
+void INIT_ATTRIBUTES__SubFlowContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__SubFlowContext_t)(val_t p0);
+val_t NEW_SubFlowContext(void);
+static const char * const LOCATE_CHECKNEW_SubFlowContext = "check new SubFlowContext";
+void CHECKNEW_SubFlowContext(val_t p0);
+typedef void (*CHECKNEW_SubFlowContext_t)(val_t p0);
+static const char * const LOCATE_NEW_SubFlowContext_flow___SubFlowContext___with_prev = "new SubFlowContext flow::SubFlowContext::with_prev";
+val_t NEW_SubFlowContext_flow___SubFlowContext___with_prev(val_t p0, val_t p1);
+typedef val_t (*NEW_SubFlowContext_flow___SubFlowContext___with_prev_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__CastFlowContext = "init var of CastFlowContext";
+void INIT_ATTRIBUTES__CastFlowContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__CastFlowContext_t)(val_t p0);
+val_t NEW_CastFlowContext(void);
+static const char * const LOCATE_CHECKNEW_CastFlowContext = "check new CastFlowContext";
+void CHECKNEW_CastFlowContext(val_t p0);
+typedef void (*CHECKNEW_CastFlowContext_t)(val_t p0);
+static const char * const LOCATE_NEW_CastFlowContext_flow___CastFlowContext___init = "new CastFlowContext flow::CastFlowContext::init";
+val_t NEW_CastFlowContext_flow___CastFlowContext___init(val_t p0, val_t p1, val_t p2, val_t p3);
+typedef val_t (*NEW_CastFlowContext_flow___CastFlowContext___init_t)(val_t p0, val_t p1, val_t p2, val_t p3);
+static const char * const LOCATE_INIT_ATTRIBUTES__MergeFlowContext = "init var of MergeFlowContext";
+void INIT_ATTRIBUTES__MergeFlowContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__MergeFlowContext_t)(val_t p0);
+val_t NEW_MergeFlowContext(void);
+static const char * const LOCATE_CHECKNEW_MergeFlowContext = "check new MergeFlowContext";
+void CHECKNEW_MergeFlowContext(val_t p0);
+typedef void (*CHECKNEW_MergeFlowContext_t)(val_t p0);
+static const char * const LOCATE_NEW_MergeFlowContext_flow___MergeFlowContext___init = "new MergeFlowContext flow::MergeFlowContext::init";
+val_t NEW_MergeFlowContext_flow___MergeFlowContext___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_MergeFlowContext_flow___MergeFlowContext___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__ScopeContext = "init var of ScopeContext";
+void INIT_ATTRIBUTES__ScopeContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ScopeContext_t)(val_t p0);
+val_t NEW_ScopeContext(void);
+static const char * const LOCATE_CHECKNEW_ScopeContext = "check new ScopeContext";
+void CHECKNEW_ScopeContext(val_t p0);
+typedef void (*CHECKNEW_ScopeContext_t)(val_t p0);
+static const char * const LOCATE_NEW_ScopeContext_scope___ScopeContext___init = "new ScopeContext scope::ScopeContext::init";
+val_t NEW_ScopeContext_scope___ScopeContext___init(val_t p0);
+typedef val_t (*NEW_ScopeContext_scope___ScopeContext___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ScopeBlock = "init var of ScopeBlock";
+void INIT_ATTRIBUTES__ScopeBlock(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ScopeBlock_t)(val_t p0);
+val_t NEW_ScopeBlock(void);
+static const char * const LOCATE_CHECKNEW_ScopeBlock = "check new ScopeBlock";
+void CHECKNEW_ScopeBlock(val_t p0);
+typedef void (*CHECKNEW_ScopeBlock_t)(val_t p0);
+static const char * const LOCATE_NEW_ScopeBlock_scope___ScopeBlock___init = "new ScopeBlock scope::ScopeBlock::init";
+val_t NEW_ScopeBlock_scope___ScopeBlock___init(val_t p0);
+typedef val_t (*NEW_ScopeBlock_scope___ScopeBlock___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__EscapableBlock = "init var of EscapableBlock";
+void INIT_ATTRIBUTES__EscapableBlock(val_t p0);
+typedef void (*INIT_ATTRIBUTES__EscapableBlock_t)(val_t p0);
+val_t NEW_EscapableBlock(void);
+static const char * const LOCATE_CHECKNEW_EscapableBlock = "check new EscapableBlock";
+void CHECKNEW_EscapableBlock(val_t p0);
+typedef void (*CHECKNEW_EscapableBlock_t)(val_t p0);
+static const char * const LOCATE_NEW_EscapableBlock_scope___EscapableBlock___init = "new EscapableBlock scope::EscapableBlock::init";
+val_t NEW_EscapableBlock_scope___EscapableBlock___init(val_t p0);
+typedef val_t (*NEW_EscapableBlock_scope___EscapableBlock___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__BreakOnlyEscapableBlock = "init var of BreakOnlyEscapableBlock";
+void INIT_ATTRIBUTES__BreakOnlyEscapableBlock(val_t p0);
+typedef void (*INIT_ATTRIBUTES__BreakOnlyEscapableBlock_t)(val_t p0);
+val_t NEW_BreakOnlyEscapableBlock(void);
+static const char * const LOCATE_CHECKNEW_BreakOnlyEscapableBlock = "check new BreakOnlyEscapableBlock";
+void CHECKNEW_BreakOnlyEscapableBlock(val_t p0);
+typedef void (*CHECKNEW_BreakOnlyEscapableBlock_t)(val_t p0);
+static const char * const LOCATE_NEW_BreakOnlyEscapableBlock_scope___BreakOnlyEscapableBlock___init = "new BreakOnlyEscapableBlock scope::BreakOnlyEscapableBlock::init";
+val_t NEW_BreakOnlyEscapableBlock_scope___BreakOnlyEscapableBlock___init(val_t p0);
+typedef val_t (*NEW_BreakOnlyEscapableBlock_scope___BreakOnlyEscapableBlock___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__EscapableClosure = "init var of EscapableClosure";
+void INIT_ATTRIBUTES__EscapableClosure(val_t p0);
+typedef void (*INIT_ATTRIBUTES__EscapableClosure_t)(val_t p0);
+val_t NEW_EscapableClosure(void);
+static const char * const LOCATE_CHECKNEW_EscapableClosure = "check new EscapableClosure";
+void CHECKNEW_EscapableClosure(val_t p0);
+typedef void (*CHECKNEW_EscapableClosure_t)(val_t p0);
+static const char * const LOCATE_NEW_EscapableClosure_scope___EscapableClosure___init = "new EscapableClosure scope::EscapableClosure::init";
+val_t NEW_EscapableClosure_scope___EscapableClosure___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_EscapableClosure_scope___EscapableClosure___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__AEscapeExpr = "init var of AEscapeExpr";
+void INIT_ATTRIBUTES__AEscapeExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AEscapeExpr_t)(val_t p0);
+val_t NEW_AEscapeExpr(void);
+static const char * const LOCATE_CHECKNEW_AEscapeExpr = "check new AEscapeExpr";
+void CHECKNEW_AEscapeExpr(val_t p0);
+typedef void (*CHECKNEW_AEscapeExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_AEscapeExpr_parser_nodes___ANode___init = "new AEscapeExpr parser_nodes::ANode::init";
+val_t NEW_AEscapeExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AEscapeExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TypingVisitor = "init var of TypingVisitor";
+void INIT_ATTRIBUTES__TypingVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TypingVisitor_t)(val_t p0);
+val_t NEW_TypingVisitor(void);
+static const char * const LOCATE_CHECKNEW_TypingVisitor = "check new TypingVisitor";
+void CHECKNEW_TypingVisitor(val_t p0);
+typedef void (*CHECKNEW_TypingVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_TypingVisitor_typing___TypingVisitor___init = "new TypingVisitor typing::TypingVisitor::init";
+val_t NEW_TypingVisitor_typing___TypingVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_TypingVisitor_typing___TypingVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__AAbsControl = "init var of AAbsControl";
+void INIT_ATTRIBUTES__AAbsControl(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AAbsControl_t)(val_t p0);
+val_t NEW_AAbsControl(void);
+static const char * const LOCATE_CHECKNEW_AAbsControl = "check new AAbsControl";
+void CHECKNEW_AAbsControl(val_t p0);
+typedef void (*CHECKNEW_AAbsControl_t)(val_t p0);
+static const char * const LOCATE_NEW_AAbsControl_parser_nodes___ANode___init = "new AAbsControl parser_nodes::ANode::init";
+val_t NEW_AAbsControl_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_AAbsControl_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ATypeCheckExpr = "init var of ATypeCheckExpr";
+void INIT_ATTRIBUTES__ATypeCheckExpr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ATypeCheckExpr_t)(val_t p0);
+val_t NEW_ATypeCheckExpr(void);
+static const char * const LOCATE_CHECKNEW_ATypeCheckExpr = "check new ATypeCheckExpr";
+void CHECKNEW_ATypeCheckExpr(val_t p0);
+typedef void (*CHECKNEW_ATypeCheckExpr_t)(val_t p0);
+static const char * const LOCATE_NEW_ATypeCheckExpr_parser_nodes___ANode___init = "new ATypeCheckExpr parser_nodes::ANode::init";
+val_t NEW_ATypeCheckExpr_parser_nodes___ANode___init(val_t p0);
+typedef val_t (*NEW_ATypeCheckExpr_parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__PrimitiveInfo = "init var of PrimitiveInfo";
+void INIT_ATTRIBUTES__PrimitiveInfo(val_t p0);
+typedef void (*INIT_ATTRIBUTES__PrimitiveInfo_t)(val_t p0);
+val_t NEW_PrimitiveInfo(void);
+static const char * const LOCATE_CHECKNEW_PrimitiveInfo = "check new PrimitiveInfo";
+void CHECKNEW_PrimitiveInfo(val_t p0);
+typedef void (*CHECKNEW_PrimitiveInfo_t)(val_t p0);
+static const char * const LOCATE_NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init = "new PrimitiveInfo primitive_info::PrimitiveInfo::init";
+val_t NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__A2IContext = "init var of A2IContext";
+void INIT_ATTRIBUTES__A2IContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__A2IContext_t)(val_t p0);
+val_t NEW_A2IContext(void);
+static const char * const LOCATE_CHECKNEW_A2IContext = "check new A2IContext";
+void CHECKNEW_A2IContext(val_t p0);
+typedef void (*CHECKNEW_A2IContext_t)(val_t p0);
+static const char * const LOCATE_NEW_A2IContext_icode_generation___A2IContext___init = "new A2IContext icode_generation::A2IContext::init";
+val_t NEW_A2IContext_icode_generation___A2IContext___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_A2IContext_icode_generation___A2IContext___init_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_INIT_ATTRIBUTES__A2IVisitor = "init var of A2IVisitor";
+void INIT_ATTRIBUTES__A2IVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__A2IVisitor_t)(val_t p0);
+val_t NEW_A2IVisitor(void);
+static const char * const LOCATE_CHECKNEW_A2IVisitor = "check new A2IVisitor";
+void CHECKNEW_A2IVisitor(val_t p0);
+typedef void (*CHECKNEW_A2IVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_A2IVisitor_icode_generation___A2IVisitor___init = "new A2IVisitor icode_generation::A2IVisitor::init";
+val_t NEW_A2IVisitor_icode_generation___A2IVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_A2IVisitor_icode_generation___A2IVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__SrcModuleLoader = "init var of SrcModuleLoader";
+void INIT_ATTRIBUTES__SrcModuleLoader(val_t p0);
+typedef void (*INIT_ATTRIBUTES__SrcModuleLoader_t)(val_t p0);
+val_t NEW_SrcModuleLoader(void);
+static const char * const LOCATE_CHECKNEW_SrcModuleLoader = "check new SrcModuleLoader";
+void CHECKNEW_SrcModuleLoader(val_t p0);
+typedef void (*CHECKNEW_SrcModuleLoader_t)(val_t p0);
+static const char * const LOCATE_NEW_SrcModuleLoader_syntax___SrcModuleLoader___init = "new SrcModuleLoader syntax::SrcModuleLoader::init";
+val_t NEW_SrcModuleLoader_syntax___SrcModuleLoader___init(void);
+typedef val_t (*NEW_SrcModuleLoader_syntax___SrcModuleLoader___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__AbstractCompiler = "init var of AbstractCompiler";
+void INIT_ATTRIBUTES__AbstractCompiler(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AbstractCompiler_t)(val_t p0);
+val_t NEW_AbstractCompiler(void);
+static const char * const LOCATE_CHECKNEW_AbstractCompiler = "check new AbstractCompiler";
+void CHECKNEW_AbstractCompiler(val_t p0);
+typedef void (*CHECKNEW_AbstractCompiler_t)(val_t p0);
+static const char * const LOCATE_NEW_AbstractCompiler_abstracttool___AbstractCompiler___init = "new AbstractCompiler abstracttool::AbstractCompiler::init";
+val_t NEW_AbstractCompiler_abstracttool___AbstractCompiler___init(val_t p0);
+typedef val_t (*NEW_AbstractCompiler_abstracttool___AbstractCompiler___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__Program = "init var of Program";
+void INIT_ATTRIBUTES__Program(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Program_t)(val_t p0);
+val_t NEW_Program(void);
+static const char * const LOCATE_CHECKNEW_Program = "check new Program";
+void CHECKNEW_Program(val_t p0);
+typedef void (*CHECKNEW_Program_t)(val_t p0);
+static const char * const LOCATE_NEW_Program_program___Program___init = "new Program program::Program::init";
+val_t NEW_Program_program___Program___init(val_t p0, val_t p1);
+typedef val_t (*NEW_Program_program___Program___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__Writer = "init var of Writer";
+void INIT_ATTRIBUTES__Writer(val_t p0);
+typedef void (*INIT_ATTRIBUTES__Writer_t)(val_t p0);
+val_t NEW_Writer(void);
+static const char * const LOCATE_CHECKNEW_Writer = "check new Writer";
+void CHECKNEW_Writer(val_t p0);
+typedef void (*CHECKNEW_Writer_t)(val_t p0);
+static const char * const LOCATE_NEW_Writer_compiling_writer___Writer___init = "new Writer compiling_writer::Writer::init";
+val_t NEW_Writer_compiling_writer___Writer___init(void);
+typedef val_t (*NEW_Writer_compiling_writer___Writer___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__WriterCoreNode = "init var of WriterCoreNode";
+void INIT_ATTRIBUTES__WriterCoreNode(val_t p0);
+typedef void (*INIT_ATTRIBUTES__WriterCoreNode_t)(val_t p0);
+val_t NEW_WriterCoreNode(void);
+static const char * const LOCATE_CHECKNEW_WriterCoreNode = "check new WriterCoreNode";
+void CHECKNEW_WriterCoreNode(val_t p0);
+typedef void (*CHECKNEW_WriterCoreNode_t)(val_t p0);
+static const char * const LOCATE_NEW_WriterCoreNode_compiling_writer___WriterCoreNode___init = "new WriterCoreNode compiling_writer::WriterCoreNode::init";
+val_t NEW_WriterCoreNode_compiling_writer___WriterCoreNode___init(val_t p0);
+typedef val_t (*NEW_WriterCoreNode_compiling_writer___WriterCoreNode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__WriterStrings = "init var of WriterStrings";
+void INIT_ATTRIBUTES__WriterStrings(val_t p0);
+typedef void (*INIT_ATTRIBUTES__WriterStrings_t)(val_t p0);
+val_t NEW_WriterStrings(void);
+static const char * const LOCATE_CHECKNEW_WriterStrings = "check new WriterStrings";
+void CHECKNEW_WriterStrings(val_t p0);
+typedef void (*CHECKNEW_WriterStrings_t)(val_t p0);
+static const char * const LOCATE_NEW_WriterStrings_compiling_writer___WriterStrings___init = "new WriterStrings compiling_writer::WriterStrings::init";
+val_t NEW_WriterStrings_compiling_writer___WriterStrings___init(val_t p0);
+typedef val_t (*NEW_WriterStrings_compiling_writer___WriterStrings___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__CProgram = "init var of CProgram";
+void INIT_ATTRIBUTES__CProgram(val_t p0);
+typedef void (*INIT_ATTRIBUTES__CProgram_t)(val_t p0);
+val_t NEW_CProgram(void);
+static const char * const LOCATE_CHECKNEW_CProgram = "check new CProgram";
+void CHECKNEW_CProgram(val_t p0);
+typedef void (*CHECKNEW_CProgram_t)(val_t p0);
+static const char * const LOCATE_NEW_CProgram_compiling_base___CProgram___init = "new CProgram compiling_base::CProgram::init";
+val_t NEW_CProgram_compiling_base___CProgram___init(val_t p0);
+typedef val_t (*NEW_CProgram_compiling_base___CProgram___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__CompilerVisitor = "init var of CompilerVisitor";
+void INIT_ATTRIBUTES__CompilerVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__CompilerVisitor_t)(val_t p0);
+val_t NEW_CompilerVisitor(void);
+static const char * const LOCATE_CHECKNEW_CompilerVisitor = "check new CompilerVisitor";
+void CHECKNEW_CompilerVisitor(val_t p0);
+typedef void (*CHECKNEW_CompilerVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_CompilerVisitor_compiling_base___CompilerVisitor___init = "new CompilerVisitor compiling_base::CompilerVisitor::init";
+val_t NEW_CompilerVisitor_compiling_base___CompilerVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_CompilerVisitor_compiling_base___CompilerVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__IRegisterSlotAllocationVisitor = "init var of IRegisterSlotAllocationVisitor";
+void INIT_ATTRIBUTES__IRegisterSlotAllocationVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IRegisterSlotAllocationVisitor_t)(val_t p0);
+val_t NEW_IRegisterSlotAllocationVisitor(void);
+static const char * const LOCATE_CHECKNEW_IRegisterSlotAllocationVisitor = "check new IRegisterSlotAllocationVisitor";
+void CHECKNEW_IRegisterSlotAllocationVisitor(val_t p0);
+typedef void (*CHECKNEW_IRegisterSlotAllocationVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_IRegisterSlotAllocationVisitor_allocate_iregister_slots___IRegisterSlotAllocationVisitor___init = "new IRegisterSlotAllocationVisitor allocate_iregister_slots::IRegisterSlotAllocationVisitor::init";
+val_t NEW_IRegisterSlotAllocationVisitor_allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(val_t p0);
+typedef val_t (*NEW_IRegisterSlotAllocationVisitor_allocate_iregister_slots___IRegisterSlotAllocationVisitor___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__SlotGroup = "init var of SlotGroup";
+void INIT_ATTRIBUTES__SlotGroup(val_t p0);
+typedef void (*INIT_ATTRIBUTES__SlotGroup_t)(val_t p0);
+val_t NEW_SlotGroup(void);
+static const char * const LOCATE_CHECKNEW_SlotGroup = "check new SlotGroup";
+void CHECKNEW_SlotGroup(val_t p0);
+typedef void (*CHECKNEW_SlotGroup_t)(val_t p0);
+static const char * const LOCATE_NEW_SlotGroup_allocate_iregister_slots___SlotGroup___init = "new SlotGroup allocate_iregister_slots::SlotGroup::init";
+val_t NEW_SlotGroup_allocate_iregister_slots___SlotGroup___init(void);
+typedef val_t (*NEW_SlotGroup_allocate_iregister_slots___SlotGroup___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__ICodeDumper = "init var of ICodeDumper";
+void INIT_ATTRIBUTES__ICodeDumper(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ICodeDumper_t)(val_t p0);
+val_t NEW_ICodeDumper(void);
+static const char * const LOCATE_CHECKNEW_ICodeDumper = "check new ICodeDumper";
+void CHECKNEW_ICodeDumper(val_t p0);
+typedef void (*CHECKNEW_ICodeDumper_t)(val_t p0);
+static const char * const LOCATE_NEW_ICodeDumper_icode_dump___ICodeDumper___init = "new ICodeDumper icode_dump::ICodeDumper::init";
+val_t NEW_ICodeDumper_icode_dump___ICodeDumper___init(val_t p0, val_t p1);
+typedef val_t (*NEW_ICodeDumper_icode_dump___ICodeDumper___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__InlineMethodVisitor = "init var of InlineMethodVisitor";
+void INIT_ATTRIBUTES__InlineMethodVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__InlineMethodVisitor_t)(val_t p0);
+val_t NEW_InlineMethodVisitor(void);
+static const char * const LOCATE_CHECKNEW_InlineMethodVisitor = "check new InlineMethodVisitor";
+void CHECKNEW_InlineMethodVisitor(val_t p0);
+typedef void (*CHECKNEW_InlineMethodVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_InlineMethodVisitor_inline_methods___InlineMethodVisitor___init = "new InlineMethodVisitor inline_methods::InlineMethodVisitor::init";
+val_t NEW_InlineMethodVisitor_inline_methods___InlineMethodVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_InlineMethodVisitor_inline_methods___InlineMethodVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReachableMethodAnalysis = "init var of ReachableMethodAnalysis";
+void INIT_ATTRIBUTES__ReachableMethodAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReachableMethodAnalysis_t)(val_t p0);
+val_t NEW_ReachableMethodAnalysis(void);
+static const char * const LOCATE_CHECKNEW_ReachableMethodAnalysis = "check new ReachableMethodAnalysis";
+void CHECKNEW_ReachableMethodAnalysis(val_t p0);
+typedef void (*CHECKNEW_ReachableMethodAnalysis_t)(val_t p0);
+static const char * const LOCATE_NEW_ReachableMethodAnalysis_reachable_method_analysis___ReachableMethodAnalysis___init = "new ReachableMethodAnalysis reachable_method_analysis::ReachableMethodAnalysis::init";
+val_t NEW_ReachableMethodAnalysis_reachable_method_analysis___ReachableMethodAnalysis___init(void);
+typedef val_t (*NEW_ReachableMethodAnalysis_reachable_method_analysis___ReachableMethodAnalysis___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__DefaultReachableMethodAnalysis = "init var of DefaultReachableMethodAnalysis";
+void INIT_ATTRIBUTES__DefaultReachableMethodAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__DefaultReachableMethodAnalysis_t)(val_t p0);
+val_t NEW_DefaultReachableMethodAnalysis(void);
+static const char * const LOCATE_CHECKNEW_DefaultReachableMethodAnalysis = "check new DefaultReachableMethodAnalysis";
+void CHECKNEW_DefaultReachableMethodAnalysis(val_t p0);
+typedef void (*CHECKNEW_DefaultReachableMethodAnalysis_t)(val_t p0);
+static const char * const LOCATE_NEW_DefaultReachableMethodAnalysis_reachable_method_analysis___DefaultReachableMethodAnalysis___init = "new DefaultReachableMethodAnalysis reachable_method_analysis::DefaultReachableMethodAnalysis::init";
+val_t NEW_DefaultReachableMethodAnalysis_reachable_method_analysis___DefaultReachableMethodAnalysis___init(void);
+typedef val_t (*NEW_DefaultReachableMethodAnalysis_reachable_method_analysis___DefaultReachableMethodAnalysis___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__ChaContext = "init var of ChaContext";
+void INIT_ATTRIBUTES__ChaContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ChaContext_t)(val_t p0);
+val_t NEW_ChaContext(void);
+static const char * const LOCATE_CHECKNEW_ChaContext = "check new ChaContext";
+void CHECKNEW_ChaContext(val_t p0);
+typedef void (*CHECKNEW_ChaContext_t)(val_t p0);
+static const char * const LOCATE_NEW_ChaContext_reachable_method_analysis___ReachableMethodAnalysis___init = "new ChaContext reachable_method_analysis::ReachableMethodAnalysis::init";
+val_t NEW_ChaContext_reachable_method_analysis___ReachableMethodAnalysis___init(void);
+typedef val_t (*NEW_ChaContext_reachable_method_analysis___ReachableMethodAnalysis___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__ChaBuilder = "init var of ChaBuilder";
+void INIT_ATTRIBUTES__ChaBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ChaBuilder_t)(val_t p0);
+val_t NEW_ChaBuilder(void);
+static const char * const LOCATE_CHECKNEW_ChaBuilder = "check new ChaBuilder";
+void CHECKNEW_ChaBuilder(val_t p0);
+typedef void (*CHECKNEW_ChaBuilder_t)(val_t p0);
+static const char * const LOCATE_NEW_ChaBuilder_cha_analysis___ChaBuilder___init = "new ChaBuilder cha_analysis::ChaBuilder::init";
+val_t NEW_ChaBuilder_cha_analysis___ChaBuilder___init(val_t p0);
+typedef val_t (*NEW_ChaBuilder_cha_analysis___ChaBuilder___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ChaVisitor = "init var of ChaVisitor";
+void INIT_ATTRIBUTES__ChaVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ChaVisitor_t)(val_t p0);
+val_t NEW_ChaVisitor(void);
+static const char * const LOCATE_CHECKNEW_ChaVisitor = "check new ChaVisitor";
+void CHECKNEW_ChaVisitor(val_t p0);
+typedef void (*CHECKNEW_ChaVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_ChaVisitor_cha_analysis___ChaVisitor___init = "new ChaVisitor cha_analysis::ChaVisitor::init";
+val_t NEW_ChaVisitor_cha_analysis___ChaVisitor___init(val_t p0);
+typedef val_t (*NEW_ChaVisitor_cha_analysis___ChaVisitor___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__InstantiatedTypeAnalysis = "init var of InstantiatedTypeAnalysis";
+void INIT_ATTRIBUTES__InstantiatedTypeAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__InstantiatedTypeAnalysis_t)(val_t p0);
+val_t NEW_InstantiatedTypeAnalysis(void);
+static const char * const LOCATE_CHECKNEW_InstantiatedTypeAnalysis = "check new InstantiatedTypeAnalysis";
+void CHECKNEW_InstantiatedTypeAnalysis(val_t p0);
+typedef void (*CHECKNEW_InstantiatedTypeAnalysis_t)(val_t p0);
+static const char * const LOCATE_NEW_InstantiatedTypeAnalysis_instantiated_type_analysis___InstantiatedTypeAnalysis___init = "new InstantiatedTypeAnalysis instantiated_type_analysis::InstantiatedTypeAnalysis::init";
+val_t NEW_InstantiatedTypeAnalysis_instantiated_type_analysis___InstantiatedTypeAnalysis___init(void);
+typedef val_t (*NEW_InstantiatedTypeAnalysis_instantiated_type_analysis___InstantiatedTypeAnalysis___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__DefaultInstantiatedTypeAnalysis = "init var of DefaultInstantiatedTypeAnalysis";
+void INIT_ATTRIBUTES__DefaultInstantiatedTypeAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__DefaultInstantiatedTypeAnalysis_t)(val_t p0);
+val_t NEW_DefaultInstantiatedTypeAnalysis(void);
+static const char * const LOCATE_CHECKNEW_DefaultInstantiatedTypeAnalysis = "check new DefaultInstantiatedTypeAnalysis";
+void CHECKNEW_DefaultInstantiatedTypeAnalysis(val_t p0);
+typedef void (*CHECKNEW_DefaultInstantiatedTypeAnalysis_t)(val_t p0);
+static const char * const LOCATE_NEW_DefaultInstantiatedTypeAnalysis_instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init = "new DefaultInstantiatedTypeAnalysis instantiated_type_analysis::DefaultInstantiatedTypeAnalysis::init";
+val_t NEW_DefaultInstantiatedTypeAnalysis_instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init(void);
+typedef val_t (*NEW_DefaultInstantiatedTypeAnalysis_instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__RtaContext = "init var of RtaContext";
+void INIT_ATTRIBUTES__RtaContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__RtaContext_t)(val_t p0);
+val_t NEW_RtaContext(void);
+static const char * const LOCATE_CHECKNEW_RtaContext = "check new RtaContext";
+void CHECKNEW_RtaContext(val_t p0);
+typedef void (*CHECKNEW_RtaContext_t)(val_t p0);
+static const char * const LOCATE_NEW_RtaContext_rta_analysis___RtaContext___init = "new RtaContext rta_analysis::RtaContext::init";
+val_t NEW_RtaContext_rta_analysis___RtaContext___init(void);
+typedef val_t (*NEW_RtaContext_rta_analysis___RtaContext___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__RtaBuilder = "init var of RtaBuilder";
+void INIT_ATTRIBUTES__RtaBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__RtaBuilder_t)(val_t p0);
+val_t NEW_RtaBuilder(void);
+static const char * const LOCATE_CHECKNEW_RtaBuilder = "check new RtaBuilder";
+void CHECKNEW_RtaBuilder(val_t p0);
+typedef void (*CHECKNEW_RtaBuilder_t)(val_t p0);
+static const char * const LOCATE_NEW_RtaBuilder_rta_analysis___RtaBuilder___init = "new RtaBuilder rta_analysis::RtaBuilder::init";
+val_t NEW_RtaBuilder_rta_analysis___RtaBuilder___init(val_t p0);
+typedef val_t (*NEW_RtaBuilder_rta_analysis___RtaBuilder___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__RtaVisitor = "init var of RtaVisitor";
+void INIT_ATTRIBUTES__RtaVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__RtaVisitor_t)(val_t p0);
+val_t NEW_RtaVisitor(void);
+static const char * const LOCATE_CHECKNEW_RtaVisitor = "check new RtaVisitor";
+void CHECKNEW_RtaVisitor(val_t p0);
+typedef void (*CHECKNEW_RtaVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_RtaVisitor_rta_analysis___RtaVisitor___init = "new RtaVisitor rta_analysis::RtaVisitor::init";
+val_t NEW_RtaVisitor_rta_analysis___RtaVisitor___init(val_t p0);
+typedef val_t (*NEW_RtaVisitor_rta_analysis___RtaVisitor___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReachableAsInitAnalysis = "init var of ReachableAsInitAnalysis";
+void INIT_ATTRIBUTES__ReachableAsInitAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReachableAsInitAnalysis_t)(val_t p0);
+val_t NEW_ReachableAsInitAnalysis(void);
+static const char * const LOCATE_CHECKNEW_ReachableAsInitAnalysis = "check new ReachableAsInitAnalysis";
+void CHECKNEW_ReachableAsInitAnalysis(val_t p0);
+typedef void (*CHECKNEW_ReachableAsInitAnalysis_t)(val_t p0);
+static const char * const LOCATE_NEW_ReachableAsInitAnalysis_reachable_as_init___ReachableAsInitAnalysis___init = "new ReachableAsInitAnalysis reachable_as_init::ReachableAsInitAnalysis::init";
+val_t NEW_ReachableAsInitAnalysis_reachable_as_init___ReachableAsInitAnalysis___init(void);
+typedef val_t (*NEW_ReachableAsInitAnalysis_reachable_as_init___ReachableAsInitAnalysis___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__DefaultReachableAsInitAnalysis = "init var of DefaultReachableAsInitAnalysis";
+void INIT_ATTRIBUTES__DefaultReachableAsInitAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__DefaultReachableAsInitAnalysis_t)(val_t p0);
+val_t NEW_DefaultReachableAsInitAnalysis(void);
+static const char * const LOCATE_CHECKNEW_DefaultReachableAsInitAnalysis = "check new DefaultReachableAsInitAnalysis";
+void CHECKNEW_DefaultReachableAsInitAnalysis(val_t p0);
+typedef void (*CHECKNEW_DefaultReachableAsInitAnalysis_t)(val_t p0);
+static const char * const LOCATE_NEW_DefaultReachableAsInitAnalysis_reachable_as_init___DefaultReachableAsInitAnalysis___init = "new DefaultReachableAsInitAnalysis reachable_as_init::DefaultReachableAsInitAnalysis::init";
+val_t NEW_DefaultReachableAsInitAnalysis_reachable_as_init___DefaultReachableAsInitAnalysis___init(void);
+typedef val_t (*NEW_DefaultReachableAsInitAnalysis_reachable_as_init___DefaultReachableAsInitAnalysis___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReachableAsInitBuilder = "init var of ReachableAsInitBuilder";
+void INIT_ATTRIBUTES__ReachableAsInitBuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReachableAsInitBuilder_t)(val_t p0);
+val_t NEW_ReachableAsInitBuilder(void);
+static const char * const LOCATE_CHECKNEW_ReachableAsInitBuilder = "check new ReachableAsInitBuilder";
+void CHECKNEW_ReachableAsInitBuilder(val_t p0);
+typedef void (*CHECKNEW_ReachableAsInitBuilder_t)(val_t p0);
+static const char * const LOCATE_NEW_ReachableAsInitBuilder_reachable_as_init_impl___ReachableAsInitBuilder___init = "new ReachableAsInitBuilder reachable_as_init_impl::ReachableAsInitBuilder::init";
+val_t NEW_ReachableAsInitBuilder_reachable_as_init_impl___ReachableAsInitBuilder___init(val_t p0);
+typedef val_t (*NEW_ReachableAsInitBuilder_reachable_as_init_impl___ReachableAsInitBuilder___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReachableAsInitAnalysisImpl = "init var of ReachableAsInitAnalysisImpl";
+void INIT_ATTRIBUTES__ReachableAsInitAnalysisImpl(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReachableAsInitAnalysisImpl_t)(val_t p0);
+val_t NEW_ReachableAsInitAnalysisImpl(void);
+static const char * const LOCATE_CHECKNEW_ReachableAsInitAnalysisImpl = "check new ReachableAsInitAnalysisImpl";
+void CHECKNEW_ReachableAsInitAnalysisImpl(val_t p0);
+typedef void (*CHECKNEW_ReachableAsInitAnalysisImpl_t)(val_t p0);
+static const char * const LOCATE_NEW_ReachableAsInitAnalysisImpl_reachable_as_init_impl___ReachableAsInitAnalysisImpl___init = "new ReachableAsInitAnalysisImpl reachable_as_init_impl::ReachableAsInitAnalysisImpl::init";
+val_t NEW_ReachableAsInitAnalysisImpl_reachable_as_init_impl___ReachableAsInitAnalysisImpl___init(void);
+typedef val_t (*NEW_ReachableAsInitAnalysisImpl_reachable_as_init_impl___ReachableAsInitAnalysisImpl___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__RAIVisitor = "init var of RAIVisitor";
+void INIT_ATTRIBUTES__RAIVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__RAIVisitor_t)(val_t p0);
+val_t NEW_RAIVisitor(void);
+static const char * const LOCATE_CHECKNEW_RAIVisitor = "check new RAIVisitor";
+void CHECKNEW_RAIVisitor(val_t p0);
+typedef void (*CHECKNEW_RAIVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_RAIVisitor_reachable_as_init_impl___RAIVisitor___init = "new RAIVisitor reachable_as_init_impl::RAIVisitor::init";
+val_t NEW_RAIVisitor_reachable_as_init_impl___RAIVisitor___init(val_t p0);
+typedef val_t (*NEW_RAIVisitor_reachable_as_init_impl___RAIVisitor___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ReachableFromInitMethodAnalysis = "init var of ReachableFromInitMethodAnalysis";
+void INIT_ATTRIBUTES__ReachableFromInitMethodAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ReachableFromInitMethodAnalysis_t)(val_t p0);
+val_t NEW_ReachableFromInitMethodAnalysis(void);
+static const char * const LOCATE_CHECKNEW_ReachableFromInitMethodAnalysis = "check new ReachableFromInitMethodAnalysis";
+void CHECKNEW_ReachableFromInitMethodAnalysis(val_t p0);
+typedef void (*CHECKNEW_ReachableFromInitMethodAnalysis_t)(val_t p0);
+static const char * const LOCATE_NEW_ReachableFromInitMethodAnalysis_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init = "new ReachableFromInitMethodAnalysis reachable_from_init_method_analysis::ReachableFromInitMethodAnalysis::init";
+val_t NEW_ReachableFromInitMethodAnalysis_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(void);
+typedef val_t (*NEW_ReachableFromInitMethodAnalysis_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__DefaultReachableFromInitMethodAnalysis = "init var of DefaultReachableFromInitMethodAnalysis";
+void INIT_ATTRIBUTES__DefaultReachableFromInitMethodAnalysis(val_t p0);
+typedef void (*INIT_ATTRIBUTES__DefaultReachableFromInitMethodAnalysis_t)(val_t p0);
+val_t NEW_DefaultReachableFromInitMethodAnalysis(void);
+static const char * const LOCATE_CHECKNEW_DefaultReachableFromInitMethodAnalysis = "check new DefaultReachableFromInitMethodAnalysis";
+void CHECKNEW_DefaultReachableFromInitMethodAnalysis(val_t p0);
+typedef void (*CHECKNEW_DefaultReachableFromInitMethodAnalysis_t)(val_t p0);
+static const char * const LOCATE_NEW_DefaultReachableFromInitMethodAnalysis_reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init = "new DefaultReachableFromInitMethodAnalysis reachable_from_init_method_analysis::DefaultReachableFromInitMethodAnalysis::init";
+val_t NEW_DefaultReachableFromInitMethodAnalysis_reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init(void);
+typedef val_t (*NEW_DefaultReachableFromInitMethodAnalysis_reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__RFIMABuilder = "init var of RFIMABuilder";
+void INIT_ATTRIBUTES__RFIMABuilder(val_t p0);
+typedef void (*INIT_ATTRIBUTES__RFIMABuilder_t)(val_t p0);
+val_t NEW_RFIMABuilder(void);
+static const char * const LOCATE_CHECKNEW_RFIMABuilder = "check new RFIMABuilder";
+void CHECKNEW_RFIMABuilder(val_t p0);
+typedef void (*CHECKNEW_RFIMABuilder_t)(val_t p0);
+static const char * const LOCATE_NEW_RFIMABuilder_reachable_from_init_method_analysis_impl___RFIMABuilder___init = "new RFIMABuilder reachable_from_init_method_analysis_impl::RFIMABuilder::init";
+val_t NEW_RFIMABuilder_reachable_from_init_method_analysis_impl___RFIMABuilder___init(val_t p0);
+typedef val_t (*NEW_RFIMABuilder_reachable_from_init_method_analysis_impl___RFIMABuilder___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__RFIMAContext = "init var of RFIMAContext";
+void INIT_ATTRIBUTES__RFIMAContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__RFIMAContext_t)(val_t p0);
+val_t NEW_RFIMAContext(void);
+static const char * const LOCATE_CHECKNEW_RFIMAContext = "check new RFIMAContext";
+void CHECKNEW_RFIMAContext(val_t p0);
+typedef void (*CHECKNEW_RFIMAContext_t)(val_t p0);
+static const char * const LOCATE_NEW_RFIMAContext_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init = "new RFIMAContext reachable_from_init_method_analysis::ReachableFromInitMethodAnalysis::init";
+val_t NEW_RFIMAContext_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(void);
+typedef val_t (*NEW_RFIMAContext_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__RFIMAVisitor = "init var of RFIMAVisitor";
+void INIT_ATTRIBUTES__RFIMAVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__RFIMAVisitor_t)(val_t p0);
+val_t NEW_RFIMAVisitor(void);
+static const char * const LOCATE_CHECKNEW_RFIMAVisitor = "check new RFIMAVisitor";
+void CHECKNEW_RFIMAVisitor(val_t p0);
+typedef void (*CHECKNEW_RFIMAVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_RFIMAVisitor_reachable_from_init_method_analysis_impl___RFIMAVisitor___init = "new RFIMAVisitor reachable_from_init_method_analysis_impl::RFIMAVisitor::init";
+val_t NEW_RFIMAVisitor_reachable_from_init_method_analysis_impl___RFIMAVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_RFIMAVisitor_reachable_from_init_method_analysis_impl___RFIMAVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__InlineGetSetVisitor = "init var of InlineGetSetVisitor";
+void INIT_ATTRIBUTES__InlineGetSetVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__InlineGetSetVisitor_t)(val_t p0);
+val_t NEW_InlineGetSetVisitor(void);
+static const char * const LOCATE_CHECKNEW_InlineGetSetVisitor = "check new InlineGetSetVisitor";
+void CHECKNEW_InlineGetSetVisitor(val_t p0);
+typedef void (*CHECKNEW_InlineGetSetVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_InlineGetSetVisitor_inline_get_and_set___InlineGetSetVisitor___init = "new InlineGetSetVisitor inline_get_and_set::InlineGetSetVisitor::init";
+val_t NEW_InlineGetSetVisitor_inline_get_and_set___InlineGetSetVisitor___init(val_t p0, val_t p1);
+typedef val_t (*NEW_InlineGetSetVisitor_inline_get_and_set___InlineGetSetVisitor___init_t)(val_t p0, val_t p1);
+static const char * const LOCATE_INIT_ATTRIBUTES__IssetCounter = "init var of IssetCounter";
+void INIT_ATTRIBUTES__IssetCounter(val_t p0);
+typedef void (*INIT_ATTRIBUTES__IssetCounter_t)(val_t p0);
+val_t NEW_IssetCounter(void);
+static const char * const LOCATE_CHECKNEW_IssetCounter = "check new IssetCounter";
+void CHECKNEW_IssetCounter(val_t p0);
+typedef void (*CHECKNEW_IssetCounter_t)(val_t p0);
+static const char * const LOCATE_NEW_IssetCounter_icode_tools___ICodeVisitor___init = "new IssetCounter icode_tools::ICodeVisitor::init";
+val_t NEW_IssetCounter_icode_tools___ICodeVisitor___init(void);
+typedef val_t (*NEW_IssetCounter_icode_tools___ICodeVisitor___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__GetterTestRemover = "init var of GetterTestRemover";
+void INIT_ATTRIBUTES__GetterTestRemover(val_t p0);
+typedef void (*INIT_ATTRIBUTES__GetterTestRemover_t)(val_t p0);
+val_t NEW_GetterTestRemover(void);
+static const char * const LOCATE_CHECKNEW_GetterTestRemover = "check new GetterTestRemover";
+void CHECKNEW_GetterTestRemover(val_t p0);
+typedef void (*CHECKNEW_GetterTestRemover_t)(val_t p0);
+static const char * const LOCATE_NEW_GetterTestRemover_icode_tools___ICodeVisitor___init = "new GetterTestRemover icode_tools::ICodeVisitor::init";
+val_t NEW_GetterTestRemover_icode_tools___ICodeVisitor___init(void);
+typedef val_t (*NEW_GetterTestRemover_icode_tools___ICodeVisitor___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__FileICodeDumper = "init var of FileICodeDumper";
+void INIT_ATTRIBUTES__FileICodeDumper(val_t p0);
+typedef void (*INIT_ATTRIBUTES__FileICodeDumper_t)(val_t p0);
+val_t NEW_FileICodeDumper(void);
+static const char * const LOCATE_CHECKNEW_FileICodeDumper = "check new FileICodeDumper";
+void CHECKNEW_FileICodeDumper(val_t p0);
+typedef void (*CHECKNEW_FileICodeDumper_t)(val_t p0);
+static const char * const LOCATE_NEW_FileICodeDumper_icode_generator___FileICodeDumper___init = "new FileICodeDumper icode_generator::FileICodeDumper::init";
+val_t NEW_FileICodeDumper_icode_generator___FileICodeDumper___init(val_t p0);
+typedef val_t (*NEW_FileICodeDumper_icode_generator___FileICodeDumper___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ColorContext = "init var of ColorContext";
+void INIT_ATTRIBUTES__ColorContext(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ColorContext_t)(val_t p0);
+val_t NEW_ColorContext(void);
+static const char * const LOCATE_CHECKNEW_ColorContext = "check new ColorContext";
+void CHECKNEW_ColorContext(val_t p0);
+typedef void (*CHECKNEW_ColorContext_t)(val_t p0);
+static const char * const LOCATE_NEW_ColorContext_table_computation___ColorContext___init = "new ColorContext table_computation::ColorContext::init";
+val_t NEW_ColorContext_table_computation___ColorContext___init(void);
+typedef val_t (*NEW_ColorContext_table_computation___ColorContext___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableInformation = "init var of TableInformation";
+void INIT_ATTRIBUTES__TableInformation(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableInformation_t)(val_t p0);
+val_t NEW_TableInformation(void);
+static const char * const LOCATE_CHECKNEW_TableInformation = "check new TableInformation";
+void CHECKNEW_TableInformation(val_t p0);
+typedef void (*CHECKNEW_TableInformation_t)(val_t p0);
+static const char * const LOCATE_NEW_TableInformation_table_computation___ColorContext___init = "new TableInformation table_computation::ColorContext::init";
+val_t NEW_TableInformation_table_computation___ColorContext___init(void);
+typedef val_t (*NEW_TableInformation_table_computation___ColorContext___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__CompiledClass = "init var of CompiledClass";
+void INIT_ATTRIBUTES__CompiledClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__CompiledClass_t)(val_t p0);
+val_t NEW_CompiledClass(void);
+static const char * const LOCATE_CHECKNEW_CompiledClass = "check new CompiledClass";
+void CHECKNEW_CompiledClass(val_t p0);
+typedef void (*CHECKNEW_CompiledClass_t)(val_t p0);
+static const char * const LOCATE_NEW_CompiledClass_table_computation___CompiledClass___init = "new CompiledClass table_computation::CompiledClass::init";
+val_t NEW_CompiledClass_table_computation___CompiledClass___init(val_t p0);
+typedef val_t (*NEW_CompiledClass_table_computation___CompiledClass___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__ModuleTableEltGroup = "init var of ModuleTableEltGroup";
+void INIT_ATTRIBUTES__ModuleTableEltGroup(val_t p0);
+typedef void (*INIT_ATTRIBUTES__ModuleTableEltGroup_t)(val_t p0);
+val_t NEW_ModuleTableEltGroup(void);
+static const char * const LOCATE_CHECKNEW_ModuleTableEltGroup = "check new ModuleTableEltGroup";
+void CHECKNEW_ModuleTableEltGroup(val_t p0);
+typedef void (*CHECKNEW_ModuleTableEltGroup_t)(val_t p0);
+static const char * const LOCATE_NEW_ModuleTableEltGroup_table_computation___AbsTableElt___init = "new ModuleTableEltGroup table_computation::AbsTableElt::init";
+val_t NEW_ModuleTableEltGroup_table_computation___AbsTableElt___init(void);
+typedef val_t (*NEW_ModuleTableEltGroup_table_computation___AbsTableElt___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltMeth = "init var of TableEltMeth";
+void INIT_ATTRIBUTES__TableEltMeth(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltMeth_t)(val_t p0);
+val_t NEW_TableEltMeth(void);
+static const char * const LOCATE_CHECKNEW_TableEltMeth = "check new TableEltMeth";
+void CHECKNEW_TableEltMeth(val_t p0);
+typedef void (*CHECKNEW_TableEltMeth_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltMeth_table_computation___TableEltProp___init = "new TableEltMeth table_computation::TableEltProp::init";
+val_t NEW_TableEltMeth_table_computation___TableEltProp___init(val_t p0);
+typedef val_t (*NEW_TableEltMeth_table_computation___TableEltProp___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltSuper = "init var of TableEltSuper";
+void INIT_ATTRIBUTES__TableEltSuper(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltSuper_t)(val_t p0);
+val_t NEW_TableEltSuper(void);
+static const char * const LOCATE_CHECKNEW_TableEltSuper = "check new TableEltSuper";
+void CHECKNEW_TableEltSuper(val_t p0);
+typedef void (*CHECKNEW_TableEltSuper_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltSuper_table_computation___TableEltProp___init = "new TableEltSuper table_computation::TableEltProp::init";
+val_t NEW_TableEltSuper_table_computation___TableEltProp___init(val_t p0);
+typedef val_t (*NEW_TableEltSuper_table_computation___TableEltProp___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltAttr = "init var of TableEltAttr";
+void INIT_ATTRIBUTES__TableEltAttr(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltAttr_t)(val_t p0);
+val_t NEW_TableEltAttr(void);
+static const char * const LOCATE_CHECKNEW_TableEltAttr = "check new TableEltAttr";
+void CHECKNEW_TableEltAttr(val_t p0);
+typedef void (*CHECKNEW_TableEltAttr_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltAttr_table_computation___TableEltProp___init = "new TableEltAttr table_computation::TableEltProp::init";
+val_t NEW_TableEltAttr_table_computation___TableEltProp___init(val_t p0);
+typedef val_t (*NEW_TableEltAttr_table_computation___TableEltProp___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__AbsTableEltClass = "init var of AbsTableEltClass";
+void INIT_ATTRIBUTES__AbsTableEltClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__AbsTableEltClass_t)(val_t p0);
+val_t NEW_AbsTableEltClass(void);
+static const char * const LOCATE_CHECKNEW_AbsTableEltClass = "check new AbsTableEltClass";
+void CHECKNEW_AbsTableEltClass(val_t p0);
+typedef void (*CHECKNEW_AbsTableEltClass_t)(val_t p0);
+static const char * const LOCATE_NEW_AbsTableEltClass_table_computation___AbsTableEltClass___init = "new AbsTableEltClass table_computation::AbsTableEltClass::init";
+val_t NEW_AbsTableEltClass_table_computation___AbsTableEltClass___init(val_t p0);
+typedef val_t (*NEW_AbsTableEltClass_table_computation___AbsTableEltClass___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltClass = "init var of TableEltClass";
+void INIT_ATTRIBUTES__TableEltClass(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltClass_t)(val_t p0);
+val_t NEW_TableEltClass(void);
+static const char * const LOCATE_CHECKNEW_TableEltClass = "check new TableEltClass";
+void CHECKNEW_TableEltClass(val_t p0);
+typedef void (*CHECKNEW_TableEltClass_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltClass_table_computation___AbsTableEltClass___init = "new TableEltClass table_computation::AbsTableEltClass::init";
+val_t NEW_TableEltClass_table_computation___AbsTableEltClass___init(val_t p0);
+typedef val_t (*NEW_TableEltClass_table_computation___AbsTableEltClass___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltClassId = "init var of TableEltClassId";
+void INIT_ATTRIBUTES__TableEltClassId(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltClassId_t)(val_t p0);
+val_t NEW_TableEltClassId(void);
+static const char * const LOCATE_CHECKNEW_TableEltClassId = "check new TableEltClassId";
+void CHECKNEW_TableEltClassId(val_t p0);
+typedef void (*CHECKNEW_TableEltClassId_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltClassId_table_computation___AbsTableEltClass___init = "new TableEltClassId table_computation::AbsTableEltClass::init";
+val_t NEW_TableEltClassId_table_computation___AbsTableEltClass___init(val_t p0);
+typedef val_t (*NEW_TableEltClassId_table_computation___AbsTableEltClass___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltClassInitTable = "init var of TableEltClassInitTable";
+void INIT_ATTRIBUTES__TableEltClassInitTable(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltClassInitTable_t)(val_t p0);
+val_t NEW_TableEltClassInitTable(void);
+static const char * const LOCATE_CHECKNEW_TableEltClassInitTable = "check new TableEltClassInitTable";
+void CHECKNEW_TableEltClassInitTable(val_t p0);
+typedef void (*CHECKNEW_TableEltClassInitTable_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltClassInitTable_table_computation___AbsTableEltClass___init = "new TableEltClassInitTable table_computation::AbsTableEltClass::init";
+val_t NEW_TableEltClassInitTable_table_computation___AbsTableEltClass___init(val_t p0);
+typedef val_t (*NEW_TableEltClassInitTable_table_computation___AbsTableEltClass___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltClassColor = "init var of TableEltClassColor";
+void INIT_ATTRIBUTES__TableEltClassColor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltClassColor_t)(val_t p0);
+val_t NEW_TableEltClassColor(void);
+static const char * const LOCATE_CHECKNEW_TableEltClassColor = "check new TableEltClassColor";
+void CHECKNEW_TableEltClassColor(val_t p0);
+typedef void (*CHECKNEW_TableEltClassColor_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltClassColor_table_computation___AbsTableEltClass___init = "new TableEltClassColor table_computation::AbsTableEltClass::init";
+val_t NEW_TableEltClassColor_table_computation___AbsTableEltClass___init(val_t p0);
+typedef val_t (*NEW_TableEltClassColor_table_computation___AbsTableEltClass___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltComposite = "init var of TableEltComposite";
+void INIT_ATTRIBUTES__TableEltComposite(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltComposite_t)(val_t p0);
+val_t NEW_TableEltComposite(void);
+static const char * const LOCATE_CHECKNEW_TableEltComposite = "check new TableEltComposite";
+void CHECKNEW_TableEltComposite(val_t p0);
+typedef void (*CHECKNEW_TableEltComposite_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltComposite_table_computation___TableEltComposite___init = "new TableEltComposite table_computation::TableEltComposite::init";
+val_t NEW_TableEltComposite_table_computation___TableEltComposite___init(val_t p0);
+typedef val_t (*NEW_TableEltComposite_table_computation___TableEltComposite___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltClassSelfId = "init var of TableEltClassSelfId";
+void INIT_ATTRIBUTES__TableEltClassSelfId(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltClassSelfId_t)(val_t p0);
+val_t NEW_TableEltClassSelfId(void);
+static const char * const LOCATE_CHECKNEW_TableEltClassSelfId = "check new TableEltClassSelfId";
+void CHECKNEW_TableEltClassSelfId(val_t p0);
+typedef void (*CHECKNEW_TableEltClassSelfId_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltClassSelfId_table_computation___AbsTableElt___init = "new TableEltClassSelfId table_computation::AbsTableElt::init";
+val_t NEW_TableEltClassSelfId_table_computation___AbsTableElt___init(void);
+typedef val_t (*NEW_TableEltClassSelfId_table_computation___AbsTableElt___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltClassObjectSize = "init var of TableEltClassObjectSize";
+void INIT_ATTRIBUTES__TableEltClassObjectSize(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltClassObjectSize_t)(val_t p0);
+val_t NEW_TableEltClassObjectSize(void);
+static const char * const LOCATE_CHECKNEW_TableEltClassObjectSize = "check new TableEltClassObjectSize";
+void CHECKNEW_TableEltClassObjectSize(val_t p0);
+typedef void (*CHECKNEW_TableEltClassObjectSize_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltClassObjectSize_table_computation___AbsTableElt___init = "new TableEltClassObjectSize table_computation::AbsTableElt::init";
+val_t NEW_TableEltClassObjectSize_table_computation___AbsTableElt___init(void);
+typedef val_t (*NEW_TableEltClassObjectSize_table_computation___AbsTableElt___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltObjectId = "init var of TableEltObjectId";
+void INIT_ATTRIBUTES__TableEltObjectId(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltObjectId_t)(val_t p0);
+val_t NEW_TableEltObjectId(void);
+static const char * const LOCATE_CHECKNEW_TableEltObjectId = "check new TableEltObjectId";
+void CHECKNEW_TableEltObjectId(val_t p0);
+typedef void (*CHECKNEW_TableEltObjectId_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltObjectId_table_computation___AbsTableElt___init = "new TableEltObjectId table_computation::AbsTableElt::init";
+val_t NEW_TableEltObjectId_table_computation___AbsTableElt___init(void);
+typedef val_t (*NEW_TableEltObjectId_table_computation___AbsTableElt___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__TableEltVftPointer = "init var of TableEltVftPointer";
+void INIT_ATTRIBUTES__TableEltVftPointer(val_t p0);
+typedef void (*INIT_ATTRIBUTES__TableEltVftPointer_t)(val_t p0);
+val_t NEW_TableEltVftPointer(void);
+static const char * const LOCATE_CHECKNEW_TableEltVftPointer = "check new TableEltVftPointer";
+void CHECKNEW_TableEltVftPointer(val_t p0);
+typedef void (*CHECKNEW_TableEltVftPointer_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltVftPointer_table_computation___AbsTableElt___init = "new TableEltVftPointer table_computation::AbsTableElt::init";
+val_t NEW_TableEltVftPointer_table_computation___AbsTableElt___init(void);
+typedef val_t (*NEW_TableEltVftPointer_table_computation___AbsTableElt___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__I2CCompilerVisitor = "init var of I2CCompilerVisitor";
+void INIT_ATTRIBUTES__I2CCompilerVisitor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__I2CCompilerVisitor_t)(val_t p0);
+val_t NEW_I2CCompilerVisitor(void);
+static const char * const LOCATE_CHECKNEW_I2CCompilerVisitor = "check new I2CCompilerVisitor";
+void CHECKNEW_I2CCompilerVisitor(val_t p0);
+typedef void (*CHECKNEW_I2CCompilerVisitor_t)(val_t p0);
+static const char * const LOCATE_NEW_I2CCompilerVisitor_compiling_icode___I2CCompilerVisitor___init = "new I2CCompilerVisitor compiling_icode::I2CCompilerVisitor::init";
+val_t NEW_I2CCompilerVisitor_compiling_icode___I2CCompilerVisitor___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_I2CCompilerVisitor_compiling_icode___I2CCompilerVisitor___init_t)(val_t p0, val_t p1, val_t p2);
 const char *LOCATE_abstracttool = "./abstracttool.nit";
-const int SFT_abstracttool[5] = {
-  3995 /* Id of AbstractCompiler */,
-  4 /* Color of AbstractCompiler */,
-  87 /* Group of ? */,
-  43 /* Group of ? */,
-  43 /* Group of ? */,
+const int SFT_abstracttool[6] = {
+  2787 /* Id of AbstractCompiler */,
+  5 /* Color of AbstractCompiler */,
+  45 /* Group of ? */,
+  119 /* Group of ? */,
+  45 /* Group of ? */,
+  45 /* Group of ? */,
 };
 const char *LOCATE_syntax = "./syntax//syntax.nit";
-const int SFT_syntax[4] = {
-  219 /* Id of SrcModuleLoader */,
-  3 /* Color of SrcModuleLoader */,
-  52 /* Group of ? */,
-  83 /* Group of ? */,
+const int SFT_syntax[6] = {
+  311 /* Id of SrcModuleLoader */,
+  4 /* Color of SrcModuleLoader */,
+  54 /* Group of ? */,
+  80 /* Group of ? */,
+  11 /* Group of ? */,
+  63 /* Group of ? */,
 };
 const char *LOCATE_mmbuilder = "./syntax//mmbuilder.nit";
-const int SFT_mmbuilder[73] = {
-  3375 /* Id of CSHSorter */,
-  3 /* Color of CSHSorter */,
-  50 /* Group of ? */,
-  85 /* Group of ? */,
-  44 /* Group of ? */,
-  111 /* Group of ? */,
+const int SFT_mmbuilder[68] = {
+  2119 /* Id of CSHSorter */,
+  4 /* Color of CSHSorter */,
+  52 /* Group of ? */,
+  82 /* Group of ? */,
   46 /* Group of ? */,
-  10 /* Group of ? */,
-  78 /* Group of ? */,
-  3267 /* Id of MMSrcAncestor */,
-  3 /* Color of MMSrcAncestor */,
-  3 /* Group of ? */,
-  53 /* Group of ? */,
-  3983 /* Id of ClassBuilderVisitor */,
-  4 /* Color of ClassBuilderVisitor */,
-  5 /* Group of ? */,
-  73 /* Group of ? */,
-  3979 /* Id of ClassSpecializationBuilderVisitor */,
-  4 /* Color of ClassSpecializationBuilderVisitor */,
-  73 /* Group of ? */,
-  3987 /* Id of ClassAncestorBuilder */,
-  4 /* Color of ClassAncestorBuilder */,
-  73 /* Group of ? */,
-  3975 /* Id of ClassVerifierVisitor */,
-  4 /* Color of ClassVerifierVisitor */,
-  73 /* Group of ? */,
-  3787 /* Id of PropertyBuilderVisitor */,
-  4 /* Color of PropertyBuilderVisitor */,
-  73 /* Group of ? */,
-  3783 /* Id of PropertyVerifierVisitor */,
-  4 /* Color of PropertyVerifierVisitor */,
-  5 /* Group of ? */,
-  73 /* Group of ? */,
-  35 /* Id of SignatureBuilder */,
-  2 /* Color of SignatureBuilder */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  43 /* Group of ? */,
-  71 /* Group of ? */,
-  70 /* Group of ? */,
-  70 /* Group of ? */,
+  118 /* Group of ? */,
+  45 /* Group of ? */,
+  15 /* Group of ? */,
+  1943 /* Id of MMSrcAncestor */,
+  4 /* Color of MMSrcAncestor */,
   4 /* Group of ? */,
-  70 /* Group of ? */,
-  70 /* Group of ? */,
-  78 /* Group of ? */,
-  4039 /* Id of MMSrcTypeFormalParameter */,
-  5 /* Color of MMSrcTypeFormalParameter */,
+  55 /* Group of ? */,
+  2767 /* Id of ClassBuilderVisitor */,
+  5 /* Color of ClassBuilderVisitor */,
+  7 /* Group of ? */,
+  80 /* Group of ? */,
+  2763 /* Id of ClassSpecializationBuilderVisitor */,
+  5 /* Color of ClassSpecializationBuilderVisitor */,
+  80 /* Group of ? */,
+  2771 /* Id of ClassAncestorBuilder */,
+  5 /* Color of ClassAncestorBuilder */,
+  80 /* Group of ? */,
+  2759 /* Id of ClassVerifierVisitor */,
+  5 /* Color of ClassVerifierVisitor */,
+  80 /* Group of ? */,
+  2555 /* Id of PropertyBuilderVisitor */,
+  5 /* Color of PropertyBuilderVisitor */,
+  80 /* Group of ? */,
+  2551 /* Id of PropertyVerifierVisitor */,
+  5 /* Color of PropertyVerifierVisitor */,
+  7 /* Group of ? */,
+  80 /* Group of ? */,
+  47 /* Id of SignatureBuilder */,
+  3 /* Color of SignatureBuilder */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  45 /* Group of ? */,
+  67 /* Group of ? */,
+  67 /* Group of ? */,
+  67 /* Group of ? */,
   6 /* Group of ? */,
-  76 /* Group of ? */,
-  4 /* Group of ? */,
-  71 /* Group of ? */,
-  4 /* Group of ? */,
-  71 /* Group of ? */,
-  70 /* Group of ? */,
-  5 /* Group of ? */,
-  77 /* Group of ? */,
-  5 /* Group of ? */,
-  78 /* Group of ? */,
-  5 /* Group of ? */,
+  67 /* Group of ? */,
+  67 /* Group of ? */,
   77 /* Group of ? */,
-  3235 /* Id of MethidAccumulator */,
-  3 /* Color of MethidAccumulator */,
-  1 /* Group of ? */,
-  46 /* Group of ? */,
-  4 /* Group of ? */,
-  70 /* Group of ? */,
-  71 /* Group of ? */,
-  73 /* Group of ? */,
-  4 /* Group of ? */,
-  70 /* Group of ? */,
-  4 /* Group of ? */,
-  73 /* Group of ? */,
-  70 /* Group of ? */,
+  6 /* Group of ? */,
+  67 /* Group of ? */,
+  6 /* Group of ? */,
+  67 /* Group of ? */,
+  67 /* Group of ? */,
+  8 /* Group of ? */,
+  74 /* Group of ? */,
+  8 /* Group of ? */,
+  74 /* Group of ? */,
+  89 /* Group of ? */,
+  8 /* Group of ? */,
+  74 /* Group of ? */,
+  1903 /* Id of MethidAccumulator */,
+  4 /* Color of MethidAccumulator */,
+  3 /* Group of ? */,
+  50 /* Group of ? */,
+  6 /* Group of ? */,
+  67 /* Group of ? */,
+  67 /* Group of ? */,
+  6 /* Group of ? */,
+  67 /* Group of ? */,
+  6 /* Group of ? */,
+  67 /* Group of ? */,
+  67 /* Group of ? */,
 };
 const char *LOCATE_syntax_base = "./syntax//syntax_base.nit";
-const int SFT_syntax_base[85] = {
-  3263 /* Id of MMSrcModule */,
-  3 /* Color of MMSrcModule */,
-  18 /* Group of ? */,
-  86 /* Group of ? */,
+const int SFT_syntax_base[99] = {
+  1939 /* Id of MMSrcModule */,
+  4 /* Color of MMSrcModule */,
+  19 /* Group of ? */,
+  84 /* Group of ? */,
   46 /* Group of ? */,
-  3927 /* Id of MMSrcLocalClass */,
-  4 /* Color of MMSrcLocalClass */,
-  22 /* Group of ? */,
-  113 /* Group of ? */,
   45 /* Group of ? */,
-  47 /* Group of ? */,
-  3931 /* Id of MMSrcAttribute */,
-  4 /* Color of MMSrcAttribute */,
-  9 /* Group of ? */,
-  69 /* Group of ? */,
-  3923 /* Id of MMSrcMethod */,
-  4 /* Color of MMSrcMethod */,
-  75 /* Group of ? */,
-  4047 /* Id of MMAttrImplementationMethod */,
-  5 /* Color of MMAttrImplementationMethod */,
-  9 /* Group of ? */,
-  76 /* Group of ? */,
-  4395 /* Id of MMReadImplementationMethod */,
-  6 /* Color of MMReadImplementationMethod */,
-  78 /* Group of ? */,
-  4391 /* Id of MMWriteImplementationMethod */,
-  6 /* Color of MMWriteImplementationMethod */,
+  2615 /* Id of MMSrcLocalClass */,
+  5 /* Color of MMSrcLocalClass */,
+  28 /* Group of ? */,
+  120 /* Group of ? */,
+  45 /* Group of ? */,
+  46 /* Group of ? */,
+  2619 /* Id of MMSrcAttribute */,
+  5 /* Color of MMSrcAttribute */,
+  71 /* Group of ? */,
+  2611 /* Id of MMSrcMethod */,
+  5 /* Color of MMSrcMethod */,
+  77 /* Group of ? */,
+  2927 /* Id of MMAttrImplementationMethod */,
+  6 /* Color of MMAttrImplementationMethod */,
   78 /* Group of ? */,
-  4043 /* Id of MMMethSrcMethod */,
-  5 /* Color of MMMethSrcMethod */,
-  9 /* Group of ? */,
-  76 /* Group of ? */,
-  3919 /* Id of MMSrcTypeProperty */,
-  4 /* Color of MMSrcTypeProperty */,
-  10 /* Group of ? */,
-  68 /* Group of ? */,
-  4399 /* Id of MMImplicitInit */,
-  6 /* Color of MMImplicitInit */,
+  3267 /* Id of MMReadImplementationMethod */,
+  7 /* Color of MMReadImplementationMethod */,
+  80 /* Group of ? */,
+  3263 /* Id of MMWriteImplementationMethod */,
+  7 /* Color of MMWriteImplementationMethod */,
+  80 /* Group of ? */,
+  2923 /* Id of MMMethSrcMethod */,
+  6 /* Color of MMMethSrcMethod */,
   11 /* Group of ? */,
-  79 /* Group of ? */,
-  15 /* Id of Variable */,
-  2 /* Color of Variable */,
-  1 /* Group of ? */,
-  44 /* Group of ? */,
-  199 /* Id of VarVariable */,
-  3 /* Color of VarVariable */,
-  51 /* Group of ? */,
-  3203 /* Id of ParamVariable */,
-  3 /* Color of ParamVariable */,
-  51 /* Group of ? */,
-  3383 /* Id of AutoVariable */,
-  3 /* Color of AutoVariable */,
-  51 /* Group of ? */,
-  3367 /* Id of ClosureVariable */,
-  3 /* Color of ClosureVariable */,
+  78 /* Group of ? */,
+  2607 /* Id of MMSrcTypeProperty */,
+  5 /* Color of MMSrcTypeProperty */,
+  70 /* Group of ? */,
+  3271 /* Id of MMImplicitInit */,
+  7 /* Color of MMImplicitInit */,
+  16 /* Group of ? */,
+  81 /* Group of ? */,
+  19 /* Id of Variable */,
+  3 /* Color of Variable */,
+  2 /* Group of ? */,
+  46 /* Group of ? */,
+  287 /* Id of VarVariable */,
+  4 /* Color of VarVariable */,
+  53 /* Group of ? */,
+  1871 /* Id of ParamVariable */,
+  4 /* Color of ParamVariable */,
+  53 /* Group of ? */,
+  2127 /* Id of AutoVariable */,
+  4 /* Color of AutoVariable */,
+  53 /* Group of ? */,
+  2107 /* Id of ClosureVariable */,
+  4 /* Color of ClosureVariable */,
   5 /* Group of ? */,
   53 /* Group of ? */,
-  3395 /* Id of AbsSyntaxVisitor */,
-  3 /* Color of AbsSyntaxVisitor */,
-  1 /* Group of ? */,
-  46 /* Group of ? */,
-  49 /* Group of ? */,
-  2 /* Group of ? */,
+  2139 /* Id of AbsSyntaxVisitor */,
+  4 /* Color of AbsSyntaxVisitor */,
+  3 /* Group of ? */,
+  50 /* Group of ? */,
+  51 /* Group of ? */,
+  4 /* Group of ? */,
   64 /* Group of ? */,
-  75 /* Group of ? */,
-  80 /* Group of ? */,
-  82 /* Group of ? */,
-  80 /* Group of ? */,
-  74 /* Group of ? */,
-  71 /* Group of ? */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
   71 /* Group of ? */,
-  5 /* Group of ? */,
   77 /* Group of ? */,
-  9 /* Group of ? */,
-  86 /* Group of ? */,
-  14 /* Group of ? */,
-  93 /* Group of ? */,
-  9 /* Group of ? */,
-  86 /* Group of ? */,
-  9 /* Group of ? */,
-  86 /* Group of ? */,
-  11 /* Group of ? */,
-  105 /* Group of ? */,
+  16 /* Group of ? */,
+  97 /* Group of ? */,
+  78 /* Group of ? */,
+  77 /* Group of ? */,
+  71 /* Group of ? */,
+  68 /* Group of ? */,
   6 /* Group of ? */,
-  75 /* Group of ? */,
+  68 /* Group of ? */,
+  69 /* Group of ? */,
+  3251 /* Id of AAbsAbsSendExpr */,
+  5 /* Color of AAbsAbsSendExpr */,
+  91 /* Group of ? */,
+  3443 /* Id of AAbsSendExpr */,
+  8 /* Color of AAbsSendExpr */,
+  97 /* Group of ? */,
+  3459 /* Id of ASuperInitCall */,
+  9 /* Color of ASuperInitCall */,
+  68 /* Group of ? */,
+  100 /* Group of ? */,
+  102 /* Group of ? */,
+  83 /* Group of ? */,
+  3487 /* Id of ASendReassignExpr */,
+  11 /* Color of ASendReassignExpr */,
+  79 /* Group of ? */,
+  88 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  83 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  94 /* Group of ? */,
+  11 /* Group of ? */,
+  73 /* Group of ? */,
 };
 const char *LOCATE_parser = "./parser//parser.nit";
-const int SFT_parser[2229] = {
-  31 /* Id of State */,
-  2 /* Color of State */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  3199 /* Id of Parser */,
-  3 /* Color of Parser */,
+const int SFT_parser[1524] = {
+  39 /* Id of State */,
+  3 /* Color of State */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  1867 /* Id of Parser */,
+  4 /* Color of Parser */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  4 /* Group of ? */,
+  2095 /* Id of ComputeProdLocationVisitor */,
+  4 /* Color of ComputeProdLocationVisitor */,
   3 /* Group of ? */,
-  1561 /* Group of ? */,
-  223 /* Id of SearchTokensVisitor */,
-  3 /* Color of SearchTokensVisitor */,
-  1 /* Group of ? */,
-  46 /* Group of ? */,
-  39 /* Id of ReduceAction */,
-  2 /* Color of ReduceAction */,
-  43 /* Group of ? */,
-  3183 /* Id of ReduceAction0 */,
-  3 /* Color of ReduceAction0 */,
-  46 /* Group of ? */,
-  3179 /* Id of ReduceAction1 */,
-  3 /* Color of ReduceAction1 */,
-  46 /* Group of ? */,
-  2735 /* Id of ReduceAction2 */,
-  3 /* Color of ReduceAction2 */,
-  46 /* Group of ? */,
-  2291 /* Id of ReduceAction3 */,
-  3 /* Color of ReduceAction3 */,
-  46 /* Group of ? */,
-  1847 /* Id of ReduceAction4 */,
-  3 /* Color of ReduceAction4 */,
-  46 /* Group of ? */,
-  1403 /* Id of ReduceAction5 */,
-  3 /* Color of ReduceAction5 */,
-  46 /* Group of ? */,
-  959 /* Id of ReduceAction6 */,
-  3 /* Color of ReduceAction6 */,
-  46 /* Group of ? */,
-  515 /* Id of ReduceAction7 */,
-  3 /* Color of ReduceAction7 */,
-  46 /* Group of ? */,
-  319 /* Id of ReduceAction8 */,
-  3 /* Color of ReduceAction8 */,
-  46 /* Group of ? */,
-  275 /* Id of ReduceAction9 */,
-  3 /* Color of ReduceAction9 */,
-  46 /* Group of ? */,
-  3175 /* Id of ReduceAction10 */,
-  3 /* Color of ReduceAction10 */,
-  46 /* Group of ? */,
-  3131 /* Id of ReduceAction11 */,
-  3 /* Color of ReduceAction11 */,
-  46 /* Group of ? */,
-  3087 /* Id of ReduceAction12 */,
-  3 /* Color of ReduceAction12 */,
-  46 /* Group of ? */,
-  3043 /* Id of ReduceAction13 */,
-  3 /* Color of ReduceAction13 */,
-  46 /* Group of ? */,
-  2999 /* Id of ReduceAction14 */,
-  3 /* Color of ReduceAction14 */,
-  46 /* Group of ? */,
-  2955 /* Id of ReduceAction15 */,
-  3 /* Color of ReduceAction15 */,
-  46 /* Group of ? */,
-  2911 /* Id of ReduceAction16 */,
-  3 /* Color of ReduceAction16 */,
-  46 /* Group of ? */,
-  2867 /* Id of ReduceAction17 */,
-  3 /* Color of ReduceAction17 */,
-  46 /* Group of ? */,
-  2823 /* Id of ReduceAction18 */,
-  3 /* Color of ReduceAction18 */,
-  46 /* Group of ? */,
-  2779 /* Id of ReduceAction19 */,
-  3 /* Color of ReduceAction19 */,
-  46 /* Group of ? */,
-  2731 /* Id of ReduceAction20 */,
-  3 /* Color of ReduceAction20 */,
-  46 /* Group of ? */,
-  2687 /* Id of ReduceAction21 */,
-  3 /* Color of ReduceAction21 */,
-  46 /* Group of ? */,
-  2643 /* Id of ReduceAction22 */,
-  3 /* Color of ReduceAction22 */,
-  46 /* Group of ? */,
-  2599 /* Id of ReduceAction23 */,
-  3 /* Color of ReduceAction23 */,
-  46 /* Group of ? */,
-  2555 /* Id of ReduceAction24 */,
-  3 /* Color of ReduceAction24 */,
-  46 /* Group of ? */,
-  2511 /* Id of ReduceAction25 */,
-  3 /* Color of ReduceAction25 */,
-  46 /* Group of ? */,
-  2467 /* Id of ReduceAction26 */,
-  3 /* Color of ReduceAction26 */,
-  46 /* Group of ? */,
-  2423 /* Id of ReduceAction27 */,
-  3 /* Color of ReduceAction27 */,
-  46 /* Group of ? */,
-  2379 /* Id of ReduceAction28 */,
-  3 /* Color of ReduceAction28 */,
-  46 /* Group of ? */,
-  2335 /* Id of ReduceAction29 */,
-  3 /* Color of ReduceAction29 */,
-  46 /* Group of ? */,
-  2287 /* Id of ReduceAction30 */,
-  3 /* Color of ReduceAction30 */,
-  46 /* Group of ? */,
-  2243 /* Id of ReduceAction31 */,
-  3 /* Color of ReduceAction31 */,
-  46 /* Group of ? */,
-  2199 /* Id of ReduceAction32 */,
-  3 /* Color of ReduceAction32 */,
-  46 /* Group of ? */,
-  2155 /* Id of ReduceAction33 */,
-  3 /* Color of ReduceAction33 */,
-  46 /* Group of ? */,
-  2111 /* Id of ReduceAction34 */,
-  3 /* Color of ReduceAction34 */,
-  46 /* Group of ? */,
-  2067 /* Id of ReduceAction35 */,
-  3 /* Color of ReduceAction35 */,
-  46 /* Group of ? */,
-  2023 /* Id of ReduceAction36 */,
-  3 /* Color of ReduceAction36 */,
-  46 /* Group of ? */,
-  1979 /* Id of ReduceAction37 */,
-  3 /* Color of ReduceAction37 */,
-  46 /* Group of ? */,
-  1935 /* Id of ReduceAction38 */,
-  3 /* Color of ReduceAction38 */,
-  46 /* Group of ? */,
-  1891 /* Id of ReduceAction39 */,
-  3 /* Color of ReduceAction39 */,
-  46 /* Group of ? */,
-  1843 /* Id of ReduceAction40 */,
-  3 /* Color of ReduceAction40 */,
-  46 /* Group of ? */,
-  1799 /* Id of ReduceAction41 */,
-  3 /* Color of ReduceAction41 */,
-  46 /* Group of ? */,
-  1755 /* Id of ReduceAction42 */,
-  3 /* Color of ReduceAction42 */,
-  46 /* Group of ? */,
-  1711 /* Id of ReduceAction43 */,
-  3 /* Color of ReduceAction43 */,
-  46 /* Group of ? */,
-  1667 /* Id of ReduceAction44 */,
-  3 /* Color of ReduceAction44 */,
-  46 /* Group of ? */,
-  1623 /* Id of ReduceAction45 */,
-  3 /* Color of ReduceAction45 */,
-  46 /* Group of ? */,
-  1579 /* Id of ReduceAction46 */,
-  3 /* Color of ReduceAction46 */,
-  46 /* Group of ? */,
-  1535 /* Id of ReduceAction47 */,
-  3 /* Color of ReduceAction47 */,
-  46 /* Group of ? */,
-  1491 /* Id of ReduceAction48 */,
-  3 /* Color of ReduceAction48 */,
-  46 /* Group of ? */,
-  1447 /* Id of ReduceAction49 */,
-  3 /* Color of ReduceAction49 */,
-  46 /* Group of ? */,
-  1399 /* Id of ReduceAction50 */,
-  3 /* Color of ReduceAction50 */,
-  46 /* Group of ? */,
-  1355 /* Id of ReduceAction51 */,
-  3 /* Color of ReduceAction51 */,
-  46 /* Group of ? */,
-  1311 /* Id of ReduceAction52 */,
-  3 /* Color of ReduceAction52 */,
-  46 /* Group of ? */,
-  1267 /* Id of ReduceAction53 */,
-  3 /* Color of ReduceAction53 */,
-  46 /* Group of ? */,
-  1223 /* Id of ReduceAction54 */,
-  3 /* Color of ReduceAction54 */,
-  46 /* Group of ? */,
-  1179 /* Id of ReduceAction55 */,
-  3 /* Color of ReduceAction55 */,
-  46 /* Group of ? */,
-  1135 /* Id of ReduceAction56 */,
-  3 /* Color of ReduceAction56 */,
-  46 /* Group of ? */,
-  1091 /* Id of ReduceAction57 */,
-  3 /* Color of ReduceAction57 */,
-  46 /* Group of ? */,
-  1047 /* Id of ReduceAction58 */,
-  3 /* Color of ReduceAction58 */,
-  46 /* Group of ? */,
-  1003 /* Id of ReduceAction59 */,
-  3 /* Color of ReduceAction59 */,
-  46 /* Group of ? */,
-  955 /* Id of ReduceAction60 */,
-  3 /* Color of ReduceAction60 */,
-  46 /* Group of ? */,
-  911 /* Id of ReduceAction61 */,
-  3 /* Color of ReduceAction61 */,
-  46 /* Group of ? */,
-  867 /* Id of ReduceAction62 */,
-  3 /* Color of ReduceAction62 */,
-  46 /* Group of ? */,
-  823 /* Id of ReduceAction63 */,
-  3 /* Color of ReduceAction63 */,
-  46 /* Group of ? */,
-  779 /* Id of ReduceAction64 */,
-  3 /* Color of ReduceAction64 */,
-  46 /* Group of ? */,
-  735 /* Id of ReduceAction65 */,
-  3 /* Color of ReduceAction65 */,
-  46 /* Group of ? */,
-  691 /* Id of ReduceAction66 */,
-  3 /* Color of ReduceAction66 */,
-  46 /* Group of ? */,
-  647 /* Id of ReduceAction67 */,
-  3 /* Color of ReduceAction67 */,
-  46 /* Group of ? */,
-  603 /* Id of ReduceAction68 */,
-  3 /* Color of ReduceAction68 */,
-  46 /* Group of ? */,
-  559 /* Id of ReduceAction69 */,
-  3 /* Color of ReduceAction69 */,
-  46 /* Group of ? */,
-  511 /* Id of ReduceAction70 */,
-  3 /* Color of ReduceAction70 */,
-  46 /* Group of ? */,
-  467 /* Id of ReduceAction71 */,
-  3 /* Color of ReduceAction71 */,
-  46 /* Group of ? */,
-  423 /* Id of ReduceAction72 */,
-  3 /* Color of ReduceAction72 */,
-  46 /* Group of ? */,
-  379 /* Id of ReduceAction73 */,
-  3 /* Color of ReduceAction73 */,
-  46 /* Group of ? */,
-  343 /* Id of ReduceAction74 */,
-  3 /* Color of ReduceAction74 */,
-  46 /* Group of ? */,
-  339 /* Id of ReduceAction75 */,
-  3 /* Color of ReduceAction75 */,
-  46 /* Group of ? */,
-  335 /* Id of ReduceAction76 */,
-  3 /* Color of ReduceAction76 */,
-  46 /* Group of ? */,
-  331 /* Id of ReduceAction77 */,
-  3 /* Color of ReduceAction77 */,
-  46 /* Group of ? */,
-  327 /* Id of ReduceAction78 */,
-  3 /* Color of ReduceAction78 */,
-  46 /* Group of ? */,
-  323 /* Id of ReduceAction79 */,
-  3 /* Color of ReduceAction79 */,
-  46 /* Group of ? */,
-  315 /* Id of ReduceAction80 */,
-  3 /* Color of ReduceAction80 */,
-  46 /* Group of ? */,
-  311 /* Id of ReduceAction81 */,
-  3 /* Color of ReduceAction81 */,
-  46 /* Group of ? */,
-  307 /* Id of ReduceAction82 */,
-  3 /* Color of ReduceAction82 */,
-  46 /* Group of ? */,
-  303 /* Id of ReduceAction83 */,
-  3 /* Color of ReduceAction83 */,
-  46 /* Group of ? */,
-  299 /* Id of ReduceAction84 */,
-  3 /* Color of ReduceAction84 */,
-  46 /* Group of ? */,
-  295 /* Id of ReduceAction85 */,
-  3 /* Color of ReduceAction85 */,
-  46 /* Group of ? */,
-  291 /* Id of ReduceAction86 */,
-  3 /* Color of ReduceAction86 */,
-  46 /* Group of ? */,
-  287 /* Id of ReduceAction87 */,
-  3 /* Color of ReduceAction87 */,
-  46 /* Group of ? */,
-  283 /* Id of ReduceAction88 */,
-  3 /* Color of ReduceAction88 */,
-  46 /* Group of ? */,
-  279 /* Id of ReduceAction89 */,
-  3 /* Color of ReduceAction89 */,
-  46 /* Group of ? */,
-  271 /* Id of ReduceAction90 */,
-  3 /* Color of ReduceAction90 */,
-  46 /* Group of ? */,
-  267 /* Id of ReduceAction91 */,
-  3 /* Color of ReduceAction91 */,
-  46 /* Group of ? */,
-  263 /* Id of ReduceAction92 */,
-  3 /* Color of ReduceAction92 */,
-  46 /* Group of ? */,
-  259 /* Id of ReduceAction93 */,
-  3 /* Color of ReduceAction93 */,
-  46 /* Group of ? */,
-  255 /* Id of ReduceAction94 */,
-  3 /* Color of ReduceAction94 */,
-  46 /* Group of ? */,
-  251 /* Id of ReduceAction95 */,
-  3 /* Color of ReduceAction95 */,
-  46 /* Group of ? */,
-  247 /* Id of ReduceAction96 */,
-  3 /* Color of ReduceAction96 */,
-  46 /* Group of ? */,
-  243 /* Id of ReduceAction97 */,
-  3 /* Color of ReduceAction97 */,
-  46 /* Group of ? */,
-  239 /* Id of ReduceAction98 */,
-  3 /* Color of ReduceAction98 */,
-  46 /* Group of ? */,
-  235 /* Id of ReduceAction99 */,
-  3 /* Color of ReduceAction99 */,
-  46 /* Group of ? */,
-  3171 /* Id of ReduceAction100 */,
-  3 /* Color of ReduceAction100 */,
-  46 /* Group of ? */,
-  3167 /* Id of ReduceAction101 */,
-  3 /* Color of ReduceAction101 */,
-  46 /* Group of ? */,
-  3163 /* Id of ReduceAction102 */,
-  3 /* Color of ReduceAction102 */,
-  46 /* Group of ? */,
-  3159 /* Id of ReduceAction103 */,
-  3 /* Color of ReduceAction103 */,
-  46 /* Group of ? */,
-  3155 /* Id of ReduceAction104 */,
-  3 /* Color of ReduceAction104 */,
-  46 /* Group of ? */,
-  3151 /* Id of ReduceAction105 */,
-  3 /* Color of ReduceAction105 */,
-  46 /* Group of ? */,
-  3147 /* Id of ReduceAction106 */,
-  3 /* Color of ReduceAction106 */,
-  46 /* Group of ? */,
-  3143 /* Id of ReduceAction107 */,
-  3 /* Color of ReduceAction107 */,
-  46 /* Group of ? */,
-  3139 /* Id of ReduceAction108 */,
-  3 /* Color of ReduceAction108 */,
-  46 /* Group of ? */,
-  3135 /* Id of ReduceAction109 */,
-  3 /* Color of ReduceAction109 */,
-  46 /* Group of ? */,
-  3127 /* Id of ReduceAction110 */,
-  3 /* Color of ReduceAction110 */,
-  46 /* Group of ? */,
-  3123 /* Id of ReduceAction111 */,
-  3 /* Color of ReduceAction111 */,
-  46 /* Group of ? */,
-  3119 /* Id of ReduceAction112 */,
-  3 /* Color of ReduceAction112 */,
-  46 /* Group of ? */,
-  3115 /* Id of ReduceAction113 */,
-  3 /* Color of ReduceAction113 */,
-  46 /* Group of ? */,
-  3111 /* Id of ReduceAction114 */,
-  3 /* Color of ReduceAction114 */,
-  46 /* Group of ? */,
-  3107 /* Id of ReduceAction115 */,
-  3 /* Color of ReduceAction115 */,
-  46 /* Group of ? */,
-  3103 /* Id of ReduceAction116 */,
-  3 /* Color of ReduceAction116 */,
-  46 /* Group of ? */,
-  3099 /* Id of ReduceAction117 */,
-  3 /* Color of ReduceAction117 */,
-  46 /* Group of ? */,
-  3095 /* Id of ReduceAction118 */,
-  3 /* Color of ReduceAction118 */,
-  46 /* Group of ? */,
-  3091 /* Id of ReduceAction119 */,
-  3 /* Color of ReduceAction119 */,
-  46 /* Group of ? */,
-  3083 /* Id of ReduceAction120 */,
-  3 /* Color of ReduceAction120 */,
-  46 /* Group of ? */,
-  3079 /* Id of ReduceAction121 */,
-  3 /* Color of ReduceAction121 */,
-  46 /* Group of ? */,
-  3075 /* Id of ReduceAction122 */,
-  3 /* Color of ReduceAction122 */,
-  46 /* Group of ? */,
-  3071 /* Id of ReduceAction123 */,
-  3 /* Color of ReduceAction123 */,
-  46 /* Group of ? */,
-  3067 /* Id of ReduceAction124 */,
-  3 /* Color of ReduceAction124 */,
-  46 /* Group of ? */,
-  3063 /* Id of ReduceAction125 */,
-  3 /* Color of ReduceAction125 */,
-  46 /* Group of ? */,
-  3059 /* Id of ReduceAction126 */,
-  3 /* Color of ReduceAction126 */,
-  46 /* Group of ? */,
-  3055 /* Id of ReduceAction127 */,
-  3 /* Color of ReduceAction127 */,
-  46 /* Group of ? */,
-  3051 /* Id of ReduceAction128 */,
-  3 /* Color of ReduceAction128 */,
-  46 /* Group of ? */,
-  3047 /* Id of ReduceAction129 */,
-  3 /* Color of ReduceAction129 */,
-  46 /* Group of ? */,
-  3039 /* Id of ReduceAction130 */,
-  3 /* Color of ReduceAction130 */,
-  46 /* Group of ? */,
-  3035 /* Id of ReduceAction131 */,
-  3 /* Color of ReduceAction131 */,
-  46 /* Group of ? */,
-  3031 /* Id of ReduceAction132 */,
-  3 /* Color of ReduceAction132 */,
-  46 /* Group of ? */,
-  3027 /* Id of ReduceAction133 */,
-  3 /* Color of ReduceAction133 */,
-  46 /* Group of ? */,
-  3023 /* Id of ReduceAction134 */,
-  3 /* Color of ReduceAction134 */,
-  46 /* Group of ? */,
-  3019 /* Id of ReduceAction135 */,
-  3 /* Color of ReduceAction135 */,
-  46 /* Group of ? */,
-  3015 /* Id of ReduceAction136 */,
-  3 /* Color of ReduceAction136 */,
-  46 /* Group of ? */,
-  3011 /* Id of ReduceAction137 */,
-  3 /* Color of ReduceAction137 */,
-  46 /* Group of ? */,
-  3007 /* Id of ReduceAction138 */,
-  3 /* Color of ReduceAction138 */,
-  46 /* Group of ? */,
-  3003 /* Id of ReduceAction139 */,
-  3 /* Color of ReduceAction139 */,
-  46 /* Group of ? */,
-  2995 /* Id of ReduceAction140 */,
-  3 /* Color of ReduceAction140 */,
-  46 /* Group of ? */,
-  2991 /* Id of ReduceAction141 */,
-  3 /* Color of ReduceAction141 */,
-  46 /* Group of ? */,
-  2987 /* Id of ReduceAction142 */,
-  3 /* Color of ReduceAction142 */,
-  46 /* Group of ? */,
-  2983 /* Id of ReduceAction143 */,
-  3 /* Color of ReduceAction143 */,
-  46 /* Group of ? */,
-  2979 /* Id of ReduceAction144 */,
-  3 /* Color of ReduceAction144 */,
-  46 /* Group of ? */,
-  2975 /* Id of ReduceAction145 */,
-  3 /* Color of ReduceAction145 */,
-  46 /* Group of ? */,
-  2971 /* Id of ReduceAction146 */,
-  3 /* Color of ReduceAction146 */,
-  46 /* Group of ? */,
-  2967 /* Id of ReduceAction147 */,
-  3 /* Color of ReduceAction147 */,
-  46 /* Group of ? */,
-  2963 /* Id of ReduceAction148 */,
-  3 /* Color of ReduceAction148 */,
-  46 /* Group of ? */,
-  2959 /* Id of ReduceAction149 */,
-  3 /* Color of ReduceAction149 */,
-  46 /* Group of ? */,
-  2951 /* Id of ReduceAction150 */,
-  3 /* Color of ReduceAction150 */,
-  46 /* Group of ? */,
-  2947 /* Id of ReduceAction151 */,
-  3 /* Color of ReduceAction151 */,
-  46 /* Group of ? */,
-  2943 /* Id of ReduceAction152 */,
-  3 /* Color of ReduceAction152 */,
-  46 /* Group of ? */,
-  2939 /* Id of ReduceAction153 */,
-  3 /* Color of ReduceAction153 */,
-  46 /* Group of ? */,
-  2935 /* Id of ReduceAction154 */,
-  3 /* Color of ReduceAction154 */,
-  46 /* Group of ? */,
-  2931 /* Id of ReduceAction155 */,
-  3 /* Color of ReduceAction155 */,
-  46 /* Group of ? */,
-  2927 /* Id of ReduceAction156 */,
-  3 /* Color of ReduceAction156 */,
-  46 /* Group of ? */,
-  2923 /* Id of ReduceAction157 */,
-  3 /* Color of ReduceAction157 */,
-  46 /* Group of ? */,
-  2919 /* Id of ReduceAction158 */,
-  3 /* Color of ReduceAction158 */,
-  46 /* Group of ? */,
-  2915 /* Id of ReduceAction159 */,
-  3 /* Color of ReduceAction159 */,
-  46 /* Group of ? */,
-  2907 /* Id of ReduceAction160 */,
-  3 /* Color of ReduceAction160 */,
-  46 /* Group of ? */,
-  2903 /* Id of ReduceAction161 */,
-  3 /* Color of ReduceAction161 */,
-  46 /* Group of ? */,
-  2899 /* Id of ReduceAction162 */,
-  3 /* Color of ReduceAction162 */,
-  46 /* Group of ? */,
-  2895 /* Id of ReduceAction163 */,
-  3 /* Color of ReduceAction163 */,
-  46 /* Group of ? */,
-  2891 /* Id of ReduceAction164 */,
-  3 /* Color of ReduceAction164 */,
-  46 /* Group of ? */,
-  2887 /* Id of ReduceAction165 */,
-  3 /* Color of ReduceAction165 */,
-  46 /* Group of ? */,
-  2883 /* Id of ReduceAction166 */,
-  3 /* Color of ReduceAction166 */,
-  46 /* Group of ? */,
-  2879 /* Id of ReduceAction167 */,
-  3 /* Color of ReduceAction167 */,
-  46 /* Group of ? */,
-  2875 /* Id of ReduceAction168 */,
-  3 /* Color of ReduceAction168 */,
-  46 /* Group of ? */,
-  2871 /* Id of ReduceAction169 */,
-  3 /* Color of ReduceAction169 */,
-  46 /* Group of ? */,
-  2863 /* Id of ReduceAction170 */,
-  3 /* Color of ReduceAction170 */,
-  46 /* Group of ? */,
-  2859 /* Id of ReduceAction171 */,
-  3 /* Color of ReduceAction171 */,
-  46 /* Group of ? */,
-  2855 /* Id of ReduceAction172 */,
-  3 /* Color of ReduceAction172 */,
-  46 /* Group of ? */,
-  2851 /* Id of ReduceAction173 */,
-  3 /* Color of ReduceAction173 */,
-  46 /* Group of ? */,
-  2847 /* Id of ReduceAction174 */,
-  3 /* Color of ReduceAction174 */,
-  46 /* Group of ? */,
-  2843 /* Id of ReduceAction175 */,
-  3 /* Color of ReduceAction175 */,
-  46 /* Group of ? */,
-  2839 /* Id of ReduceAction176 */,
-  3 /* Color of ReduceAction176 */,
-  46 /* Group of ? */,
-  2835 /* Id of ReduceAction177 */,
-  3 /* Color of ReduceAction177 */,
-  46 /* Group of ? */,
-  2831 /* Id of ReduceAction178 */,
-  3 /* Color of ReduceAction178 */,
-  46 /* Group of ? */,
-  2827 /* Id of ReduceAction179 */,
-  3 /* Color of ReduceAction179 */,
-  46 /* Group of ? */,
-  2819 /* Id of ReduceAction180 */,
-  3 /* Color of ReduceAction180 */,
-  46 /* Group of ? */,
-  2815 /* Id of ReduceAction181 */,
-  3 /* Color of ReduceAction181 */,
-  46 /* Group of ? */,
-  2811 /* Id of ReduceAction182 */,
-  3 /* Color of ReduceAction182 */,
-  46 /* Group of ? */,
-  2807 /* Id of ReduceAction183 */,
-  3 /* Color of ReduceAction183 */,
-  46 /* Group of ? */,
-  2803 /* Id of ReduceAction184 */,
-  3 /* Color of ReduceAction184 */,
-  46 /* Group of ? */,
-  2799 /* Id of ReduceAction185 */,
-  3 /* Color of ReduceAction185 */,
-  46 /* Group of ? */,
-  2795 /* Id of ReduceAction186 */,
-  3 /* Color of ReduceAction186 */,
-  46 /* Group of ? */,
-  2791 /* Id of ReduceAction187 */,
-  3 /* Color of ReduceAction187 */,
-  46 /* Group of ? */,
-  2787 /* Id of ReduceAction188 */,
-  3 /* Color of ReduceAction188 */,
-  46 /* Group of ? */,
-  2783 /* Id of ReduceAction189 */,
-  3 /* Color of ReduceAction189 */,
-  46 /* Group of ? */,
-  2775 /* Id of ReduceAction190 */,
-  3 /* Color of ReduceAction190 */,
-  46 /* Group of ? */,
-  2771 /* Id of ReduceAction191 */,
-  3 /* Color of ReduceAction191 */,
-  46 /* Group of ? */,
-  2767 /* Id of ReduceAction192 */,
-  3 /* Color of ReduceAction192 */,
-  46 /* Group of ? */,
-  2763 /* Id of ReduceAction193 */,
-  3 /* Color of ReduceAction193 */,
-  46 /* Group of ? */,
-  2759 /* Id of ReduceAction194 */,
-  3 /* Color of ReduceAction194 */,
-  46 /* Group of ? */,
-  2755 /* Id of ReduceAction195 */,
-  3 /* Color of ReduceAction195 */,
-  46 /* Group of ? */,
-  2751 /* Id of ReduceAction196 */,
-  3 /* Color of ReduceAction196 */,
-  46 /* Group of ? */,
-  2747 /* Id of ReduceAction197 */,
-  3 /* Color of ReduceAction197 */,
-  46 /* Group of ? */,
-  2743 /* Id of ReduceAction198 */,
-  3 /* Color of ReduceAction198 */,
-  46 /* Group of ? */,
-  2739 /* Id of ReduceAction199 */,
-  3 /* Color of ReduceAction199 */,
-  46 /* Group of ? */,
-  2727 /* Id of ReduceAction200 */,
-  3 /* Color of ReduceAction200 */,
-  46 /* Group of ? */,
-  2723 /* Id of ReduceAction201 */,
-  3 /* Color of ReduceAction201 */,
-  46 /* Group of ? */,
-  2719 /* Id of ReduceAction202 */,
-  3 /* Color of ReduceAction202 */,
-  46 /* Group of ? */,
-  2715 /* Id of ReduceAction203 */,
-  3 /* Color of ReduceAction203 */,
-  46 /* Group of ? */,
-  2711 /* Id of ReduceAction204 */,
-  3 /* Color of ReduceAction204 */,
-  46 /* Group of ? */,
-  2707 /* Id of ReduceAction205 */,
-  3 /* Color of ReduceAction205 */,
-  46 /* Group of ? */,
-  2703 /* Id of ReduceAction206 */,
-  3 /* Color of ReduceAction206 */,
-  46 /* Group of ? */,
-  2699 /* Id of ReduceAction207 */,
-  3 /* Color of ReduceAction207 */,
-  46 /* Group of ? */,
-  2695 /* Id of ReduceAction208 */,
-  3 /* Color of ReduceAction208 */,
-  46 /* Group of ? */,
-  2691 /* Id of ReduceAction209 */,
-  3 /* Color of ReduceAction209 */,
-  46 /* Group of ? */,
-  2683 /* Id of ReduceAction210 */,
-  3 /* Color of ReduceAction210 */,
-  46 /* Group of ? */,
-  2679 /* Id of ReduceAction211 */,
-  3 /* Color of ReduceAction211 */,
-  46 /* Group of ? */,
-  2675 /* Id of ReduceAction212 */,
-  3 /* Color of ReduceAction212 */,
-  46 /* Group of ? */,
-  2671 /* Id of ReduceAction213 */,
-  3 /* Color of ReduceAction213 */,
-  46 /* Group of ? */,
-  2667 /* Id of ReduceAction214 */,
-  3 /* Color of ReduceAction214 */,
-  46 /* Group of ? */,
-  2663 /* Id of ReduceAction215 */,
-  3 /* Color of ReduceAction215 */,
-  46 /* Group of ? */,
-  2659 /* Id of ReduceAction216 */,
-  3 /* Color of ReduceAction216 */,
-  46 /* Group of ? */,
-  2655 /* Id of ReduceAction217 */,
-  3 /* Color of ReduceAction217 */,
-  46 /* Group of ? */,
-  2651 /* Id of ReduceAction218 */,
-  3 /* Color of ReduceAction218 */,
-  46 /* Group of ? */,
-  2647 /* Id of ReduceAction219 */,
-  3 /* Color of ReduceAction219 */,
-  46 /* Group of ? */,
-  2639 /* Id of ReduceAction220 */,
-  3 /* Color of ReduceAction220 */,
-  46 /* Group of ? */,
-  2635 /* Id of ReduceAction221 */,
-  3 /* Color of ReduceAction221 */,
-  46 /* Group of ? */,
-  2631 /* Id of ReduceAction222 */,
-  3 /* Color of ReduceAction222 */,
-  46 /* Group of ? */,
-  2627 /* Id of ReduceAction223 */,
-  3 /* Color of ReduceAction223 */,
-  46 /* Group of ? */,
-  2623 /* Id of ReduceAction224 */,
-  3 /* Color of ReduceAction224 */,
-  46 /* Group of ? */,
-  2619 /* Id of ReduceAction225 */,
-  3 /* Color of ReduceAction225 */,
-  46 /* Group of ? */,
-  2615 /* Id of ReduceAction226 */,
-  3 /* Color of ReduceAction226 */,
-  46 /* Group of ? */,
-  2611 /* Id of ReduceAction227 */,
-  3 /* Color of ReduceAction227 */,
-  46 /* Group of ? */,
-  2607 /* Id of ReduceAction228 */,
-  3 /* Color of ReduceAction228 */,
-  46 /* Group of ? */,
-  2603 /* Id of ReduceAction229 */,
-  3 /* Color of ReduceAction229 */,
-  46 /* Group of ? */,
-  2595 /* Id of ReduceAction230 */,
-  3 /* Color of ReduceAction230 */,
-  46 /* Group of ? */,
-  2591 /* Id of ReduceAction231 */,
-  3 /* Color of ReduceAction231 */,
-  46 /* Group of ? */,
-  2587 /* Id of ReduceAction232 */,
-  3 /* Color of ReduceAction232 */,
-  46 /* Group of ? */,
-  2583 /* Id of ReduceAction233 */,
-  3 /* Color of ReduceAction233 */,
-  46 /* Group of ? */,
-  2579 /* Id of ReduceAction234 */,
-  3 /* Color of ReduceAction234 */,
-  46 /* Group of ? */,
-  2575 /* Id of ReduceAction235 */,
-  3 /* Color of ReduceAction235 */,
-  46 /* Group of ? */,
-  2571 /* Id of ReduceAction236 */,
-  3 /* Color of ReduceAction236 */,
-  46 /* Group of ? */,
-  2567 /* Id of ReduceAction237 */,
-  3 /* Color of ReduceAction237 */,
-  46 /* Group of ? */,
-  2563 /* Id of ReduceAction238 */,
-  3 /* Color of ReduceAction238 */,
-  46 /* Group of ? */,
-  2559 /* Id of ReduceAction239 */,
-  3 /* Color of ReduceAction239 */,
-  46 /* Group of ? */,
-  2551 /* Id of ReduceAction240 */,
-  3 /* Color of ReduceAction240 */,
-  46 /* Group of ? */,
-  2547 /* Id of ReduceAction241 */,
-  3 /* Color of ReduceAction241 */,
-  46 /* Group of ? */,
-  2543 /* Id of ReduceAction242 */,
-  3 /* Color of ReduceAction242 */,
-  46 /* Group of ? */,
-  2539 /* Id of ReduceAction243 */,
-  3 /* Color of ReduceAction243 */,
-  46 /* Group of ? */,
-  2535 /* Id of ReduceAction244 */,
-  3 /* Color of ReduceAction244 */,
-  46 /* Group of ? */,
-  2531 /* Id of ReduceAction245 */,
-  3 /* Color of ReduceAction245 */,
-  46 /* Group of ? */,
-  2527 /* Id of ReduceAction246 */,
-  3 /* Color of ReduceAction246 */,
-  46 /* Group of ? */,
-  2523 /* Id of ReduceAction247 */,
-  3 /* Color of ReduceAction247 */,
-  46 /* Group of ? */,
-  2519 /* Id of ReduceAction248 */,
-  3 /* Color of ReduceAction248 */,
-  46 /* Group of ? */,
-  2515 /* Id of ReduceAction249 */,
-  3 /* Color of ReduceAction249 */,
-  46 /* Group of ? */,
-  2507 /* Id of ReduceAction250 */,
-  3 /* Color of ReduceAction250 */,
-  46 /* Group of ? */,
-  2503 /* Id of ReduceAction251 */,
-  3 /* Color of ReduceAction251 */,
-  46 /* Group of ? */,
-  2499 /* Id of ReduceAction252 */,
-  3 /* Color of ReduceAction252 */,
-  46 /* Group of ? */,
-  2495 /* Id of ReduceAction253 */,
-  3 /* Color of ReduceAction253 */,
-  46 /* Group of ? */,
-  2491 /* Id of ReduceAction254 */,
-  3 /* Color of ReduceAction254 */,
-  46 /* Group of ? */,
-  2487 /* Id of ReduceAction255 */,
-  3 /* Color of ReduceAction255 */,
-  46 /* Group of ? */,
-  2483 /* Id of ReduceAction256 */,
-  3 /* Color of ReduceAction256 */,
-  46 /* Group of ? */,
-  2479 /* Id of ReduceAction257 */,
-  3 /* Color of ReduceAction257 */,
-  46 /* Group of ? */,
-  2475 /* Id of ReduceAction258 */,
-  3 /* Color of ReduceAction258 */,
-  46 /* Group of ? */,
-  2471 /* Id of ReduceAction259 */,
-  3 /* Color of ReduceAction259 */,
-  46 /* Group of ? */,
-  2463 /* Id of ReduceAction260 */,
-  3 /* Color of ReduceAction260 */,
-  46 /* Group of ? */,
-  2459 /* Id of ReduceAction261 */,
-  3 /* Color of ReduceAction261 */,
-  46 /* Group of ? */,
-  2455 /* Id of ReduceAction262 */,
-  3 /* Color of ReduceAction262 */,
-  46 /* Group of ? */,
-  2451 /* Id of ReduceAction263 */,
-  3 /* Color of ReduceAction263 */,
-  46 /* Group of ? */,
-  2447 /* Id of ReduceAction264 */,
-  3 /* Color of ReduceAction264 */,
-  46 /* Group of ? */,
-  2443 /* Id of ReduceAction265 */,
-  3 /* Color of ReduceAction265 */,
-  46 /* Group of ? */,
-  2439 /* Id of ReduceAction266 */,
-  3 /* Color of ReduceAction266 */,
-  46 /* Group of ? */,
-  2435 /* Id of ReduceAction267 */,
-  3 /* Color of ReduceAction267 */,
-  46 /* Group of ? */,
-  2431 /* Id of ReduceAction268 */,
-  3 /* Color of ReduceAction268 */,
-  46 /* Group of ? */,
-  2427 /* Id of ReduceAction269 */,
-  3 /* Color of ReduceAction269 */,
-  46 /* Group of ? */,
-  2419 /* Id of ReduceAction270 */,
-  3 /* Color of ReduceAction270 */,
-  46 /* Group of ? */,
-  2415 /* Id of ReduceAction271 */,
-  3 /* Color of ReduceAction271 */,
-  46 /* Group of ? */,
-  2411 /* Id of ReduceAction272 */,
-  3 /* Color of ReduceAction272 */,
-  46 /* Group of ? */,
-  2407 /* Id of ReduceAction273 */,
-  3 /* Color of ReduceAction273 */,
-  46 /* Group of ? */,
-  2403 /* Id of ReduceAction274 */,
-  3 /* Color of ReduceAction274 */,
-  46 /* Group of ? */,
-  2399 /* Id of ReduceAction275 */,
-  3 /* Color of ReduceAction275 */,
-  46 /* Group of ? */,
-  2395 /* Id of ReduceAction276 */,
-  3 /* Color of ReduceAction276 */,
-  46 /* Group of ? */,
-  2391 /* Id of ReduceAction277 */,
-  3 /* Color of ReduceAction277 */,
-  46 /* Group of ? */,
-  2387 /* Id of ReduceAction278 */,
-  3 /* Color of ReduceAction278 */,
-  46 /* Group of ? */,
-  2383 /* Id of ReduceAction279 */,
-  3 /* Color of ReduceAction279 */,
-  46 /* Group of ? */,
-  2375 /* Id of ReduceAction280 */,
-  3 /* Color of ReduceAction280 */,
-  46 /* Group of ? */,
-  2371 /* Id of ReduceAction281 */,
-  3 /* Color of ReduceAction281 */,
-  46 /* Group of ? */,
-  2367 /* Id of ReduceAction282 */,
-  3 /* Color of ReduceAction282 */,
-  46 /* Group of ? */,
-  2363 /* Id of ReduceAction283 */,
-  3 /* Color of ReduceAction283 */,
-  46 /* Group of ? */,
-  2359 /* Id of ReduceAction284 */,
-  3 /* Color of ReduceAction284 */,
-  46 /* Group of ? */,
-  2355 /* Id of ReduceAction285 */,
-  3 /* Color of ReduceAction285 */,
-  46 /* Group of ? */,
-  2351 /* Id of ReduceAction286 */,
-  3 /* Color of ReduceAction286 */,
-  46 /* Group of ? */,
-  2347 /* Id of ReduceAction287 */,
-  3 /* Color of ReduceAction287 */,
-  46 /* Group of ? */,
-  2343 /* Id of ReduceAction288 */,
-  3 /* Color of ReduceAction288 */,
-  46 /* Group of ? */,
-  2339 /* Id of ReduceAction289 */,
-  3 /* Color of ReduceAction289 */,
-  46 /* Group of ? */,
-  2331 /* Id of ReduceAction290 */,
-  3 /* Color of ReduceAction290 */,
-  46 /* Group of ? */,
-  2327 /* Id of ReduceAction291 */,
-  3 /* Color of ReduceAction291 */,
-  46 /* Group of ? */,
-  2323 /* Id of ReduceAction292 */,
-  3 /* Color of ReduceAction292 */,
-  46 /* Group of ? */,
-  2319 /* Id of ReduceAction293 */,
-  3 /* Color of ReduceAction293 */,
-  46 /* Group of ? */,
-  2315 /* Id of ReduceAction294 */,
-  3 /* Color of ReduceAction294 */,
-  46 /* Group of ? */,
-  2311 /* Id of ReduceAction295 */,
-  3 /* Color of ReduceAction295 */,
-  46 /* Group of ? */,
-  2307 /* Id of ReduceAction296 */,
-  3 /* Color of ReduceAction296 */,
-  46 /* Group of ? */,
-  2303 /* Id of ReduceAction297 */,
-  3 /* Color of ReduceAction297 */,
-  46 /* Group of ? */,
-  2299 /* Id of ReduceAction298 */,
-  3 /* Color of ReduceAction298 */,
-  46 /* Group of ? */,
-  2295 /* Id of ReduceAction299 */,
-  3 /* Color of ReduceAction299 */,
-  46 /* Group of ? */,
-  2283 /* Id of ReduceAction300 */,
-  3 /* Color of ReduceAction300 */,
-  46 /* Group of ? */,
-  2279 /* Id of ReduceAction301 */,
-  3 /* Color of ReduceAction301 */,
-  46 /* Group of ? */,
-  2275 /* Id of ReduceAction302 */,
-  3 /* Color of ReduceAction302 */,
-  46 /* Group of ? */,
-  2271 /* Id of ReduceAction303 */,
-  3 /* Color of ReduceAction303 */,
-  46 /* Group of ? */,
-  2267 /* Id of ReduceAction304 */,
-  3 /* Color of ReduceAction304 */,
-  46 /* Group of ? */,
-  2263 /* Id of ReduceAction305 */,
-  3 /* Color of ReduceAction305 */,
-  46 /* Group of ? */,
-  2259 /* Id of ReduceAction306 */,
-  3 /* Color of ReduceAction306 */,
-  46 /* Group of ? */,
-  2255 /* Id of ReduceAction307 */,
-  3 /* Color of ReduceAction307 */,
-  46 /* Group of ? */,
-  2251 /* Id of ReduceAction308 */,
-  3 /* Color of ReduceAction308 */,
-  46 /* Group of ? */,
-  2247 /* Id of ReduceAction309 */,
-  3 /* Color of ReduceAction309 */,
-  46 /* Group of ? */,
-  2239 /* Id of ReduceAction310 */,
-  3 /* Color of ReduceAction310 */,
-  46 /* Group of ? */,
-  2235 /* Id of ReduceAction311 */,
-  3 /* Color of ReduceAction311 */,
-  46 /* Group of ? */,
-  2231 /* Id of ReduceAction312 */,
-  3 /* Color of ReduceAction312 */,
-  46 /* Group of ? */,
-  2227 /* Id of ReduceAction313 */,
-  3 /* Color of ReduceAction313 */,
-  46 /* Group of ? */,
-  2223 /* Id of ReduceAction314 */,
-  3 /* Color of ReduceAction314 */,
-  46 /* Group of ? */,
-  2219 /* Id of ReduceAction315 */,
-  3 /* Color of ReduceAction315 */,
-  46 /* Group of ? */,
-  2215 /* Id of ReduceAction316 */,
-  3 /* Color of ReduceAction316 */,
-  46 /* Group of ? */,
-  2211 /* Id of ReduceAction317 */,
-  3 /* Color of ReduceAction317 */,
-  46 /* Group of ? */,
-  2207 /* Id of ReduceAction318 */,
-  3 /* Color of ReduceAction318 */,
-  46 /* Group of ? */,
-  2203 /* Id of ReduceAction319 */,
-  3 /* Color of ReduceAction319 */,
-  46 /* Group of ? */,
-  2195 /* Id of ReduceAction320 */,
-  3 /* Color of ReduceAction320 */,
-  46 /* Group of ? */,
-  2191 /* Id of ReduceAction321 */,
-  3 /* Color of ReduceAction321 */,
-  46 /* Group of ? */,
-  2187 /* Id of ReduceAction322 */,
-  3 /* Color of ReduceAction322 */,
-  46 /* Group of ? */,
-  2183 /* Id of ReduceAction323 */,
-  3 /* Color of ReduceAction323 */,
-  46 /* Group of ? */,
-  2179 /* Id of ReduceAction324 */,
-  3 /* Color of ReduceAction324 */,
-  46 /* Group of ? */,
-  2175 /* Id of ReduceAction325 */,
-  3 /* Color of ReduceAction325 */,
-  46 /* Group of ? */,
-  2171 /* Id of ReduceAction326 */,
-  3 /* Color of ReduceAction326 */,
-  46 /* Group of ? */,
-  2167 /* Id of ReduceAction327 */,
-  3 /* Color of ReduceAction327 */,
-  46 /* Group of ? */,
-  2163 /* Id of ReduceAction328 */,
-  3 /* Color of ReduceAction328 */,
-  46 /* Group of ? */,
-  2159 /* Id of ReduceAction329 */,
-  3 /* Color of ReduceAction329 */,
-  46 /* Group of ? */,
-  2151 /* Id of ReduceAction330 */,
-  3 /* Color of ReduceAction330 */,
-  46 /* Group of ? */,
-  2147 /* Id of ReduceAction331 */,
-  3 /* Color of ReduceAction331 */,
-  46 /* Group of ? */,
-  2143 /* Id of ReduceAction332 */,
-  3 /* Color of ReduceAction332 */,
-  46 /* Group of ? */,
-  2139 /* Id of ReduceAction333 */,
-  3 /* Color of ReduceAction333 */,
-  46 /* Group of ? */,
-  2135 /* Id of ReduceAction334 */,
-  3 /* Color of ReduceAction334 */,
-  46 /* Group of ? */,
-  2131 /* Id of ReduceAction335 */,
-  3 /* Color of ReduceAction335 */,
-  46 /* Group of ? */,
-  2127 /* Id of ReduceAction336 */,
-  3 /* Color of ReduceAction336 */,
-  46 /* Group of ? */,
-  2123 /* Id of ReduceAction337 */,
-  3 /* Color of ReduceAction337 */,
-  46 /* Group of ? */,
-  2119 /* Id of ReduceAction338 */,
-  3 /* Color of ReduceAction338 */,
-  46 /* Group of ? */,
-  2115 /* Id of ReduceAction339 */,
-  3 /* Color of ReduceAction339 */,
-  46 /* Group of ? */,
-  2107 /* Id of ReduceAction340 */,
-  3 /* Color of ReduceAction340 */,
-  46 /* Group of ? */,
-  2103 /* Id of ReduceAction341 */,
-  3 /* Color of ReduceAction341 */,
-  46 /* Group of ? */,
-  2099 /* Id of ReduceAction342 */,
-  3 /* Color of ReduceAction342 */,
-  46 /* Group of ? */,
-  2095 /* Id of ReduceAction343 */,
-  3 /* Color of ReduceAction343 */,
-  46 /* Group of ? */,
-  2091 /* Id of ReduceAction344 */,
-  3 /* Color of ReduceAction344 */,
-  46 /* Group of ? */,
-  2087 /* Id of ReduceAction345 */,
-  3 /* Color of ReduceAction345 */,
-  46 /* Group of ? */,
-  2083 /* Id of ReduceAction346 */,
-  3 /* Color of ReduceAction346 */,
-  46 /* Group of ? */,
-  2079 /* Id of ReduceAction347 */,
-  3 /* Color of ReduceAction347 */,
-  46 /* Group of ? */,
-  2075 /* Id of ReduceAction348 */,
-  3 /* Color of ReduceAction348 */,
-  46 /* Group of ? */,
-  2071 /* Id of ReduceAction349 */,
-  3 /* Color of ReduceAction349 */,
-  46 /* Group of ? */,
-  2063 /* Id of ReduceAction350 */,
-  3 /* Color of ReduceAction350 */,
-  46 /* Group of ? */,
-  2059 /* Id of ReduceAction351 */,
-  3 /* Color of ReduceAction351 */,
-  46 /* Group of ? */,
-  2055 /* Id of ReduceAction352 */,
-  3 /* Color of ReduceAction352 */,
-  46 /* Group of ? */,
-  2051 /* Id of ReduceAction353 */,
-  3 /* Color of ReduceAction353 */,
-  46 /* Group of ? */,
-  2047 /* Id of ReduceAction354 */,
-  3 /* Color of ReduceAction354 */,
-  46 /* Group of ? */,
-  2043 /* Id of ReduceAction355 */,
-  3 /* Color of ReduceAction355 */,
-  46 /* Group of ? */,
-  2039 /* Id of ReduceAction356 */,
-  3 /* Color of ReduceAction356 */,
-  46 /* Group of ? */,
-  2035 /* Id of ReduceAction357 */,
-  3 /* Color of ReduceAction357 */,
-  46 /* Group of ? */,
-  2031 /* Id of ReduceAction358 */,
-  3 /* Color of ReduceAction358 */,
-  46 /* Group of ? */,
-  2027 /* Id of ReduceAction359 */,
-  3 /* Color of ReduceAction359 */,
-  46 /* Group of ? */,
-  2019 /* Id of ReduceAction360 */,
-  3 /* Color of ReduceAction360 */,
-  46 /* Group of ? */,
-  2015 /* Id of ReduceAction361 */,
-  3 /* Color of ReduceAction361 */,
-  46 /* Group of ? */,
-  2011 /* Id of ReduceAction362 */,
-  3 /* Color of ReduceAction362 */,
-  46 /* Group of ? */,
-  2007 /* Id of ReduceAction363 */,
-  3 /* Color of ReduceAction363 */,
-  46 /* Group of ? */,
-  2003 /* Id of ReduceAction364 */,
-  3 /* Color of ReduceAction364 */,
-  46 /* Group of ? */,
-  1999 /* Id of ReduceAction365 */,
-  3 /* Color of ReduceAction365 */,
-  46 /* Group of ? */,
-  1995 /* Id of ReduceAction366 */,
-  3 /* Color of ReduceAction366 */,
-  46 /* Group of ? */,
-  1991 /* Id of ReduceAction367 */,
-  3 /* Color of ReduceAction367 */,
-  46 /* Group of ? */,
-  1987 /* Id of ReduceAction368 */,
-  3 /* Color of ReduceAction368 */,
-  46 /* Group of ? */,
-  1983 /* Id of ReduceAction369 */,
-  3 /* Color of ReduceAction369 */,
-  46 /* Group of ? */,
-  1975 /* Id of ReduceAction370 */,
-  3 /* Color of ReduceAction370 */,
-  46 /* Group of ? */,
-  1971 /* Id of ReduceAction371 */,
-  3 /* Color of ReduceAction371 */,
-  46 /* Group of ? */,
-  1967 /* Id of ReduceAction372 */,
-  3 /* Color of ReduceAction372 */,
-  46 /* Group of ? */,
-  1963 /* Id of ReduceAction373 */,
-  3 /* Color of ReduceAction373 */,
-  46 /* Group of ? */,
-  1959 /* Id of ReduceAction374 */,
-  3 /* Color of ReduceAction374 */,
-  46 /* Group of ? */,
-  1955 /* Id of ReduceAction375 */,
-  3 /* Color of ReduceAction375 */,
-  46 /* Group of ? */,
-  1951 /* Id of ReduceAction376 */,
-  3 /* Color of ReduceAction376 */,
-  46 /* Group of ? */,
-  1947 /* Id of ReduceAction377 */,
-  3 /* Color of ReduceAction377 */,
-  46 /* Group of ? */,
-  1943 /* Id of ReduceAction378 */,
-  3 /* Color of ReduceAction378 */,
-  46 /* Group of ? */,
-  1939 /* Id of ReduceAction379 */,
-  3 /* Color of ReduceAction379 */,
-  46 /* Group of ? */,
-  1931 /* Id of ReduceAction380 */,
-  3 /* Color of ReduceAction380 */,
-  46 /* Group of ? */,
-  1927 /* Id of ReduceAction381 */,
-  3 /* Color of ReduceAction381 */,
-  46 /* Group of ? */,
-  1923 /* Id of ReduceAction382 */,
-  3 /* Color of ReduceAction382 */,
-  46 /* Group of ? */,
-  1919 /* Id of ReduceAction383 */,
-  3 /* Color of ReduceAction383 */,
-  46 /* Group of ? */,
-  1915 /* Id of ReduceAction384 */,
-  3 /* Color of ReduceAction384 */,
-  46 /* Group of ? */,
-  1911 /* Id of ReduceAction385 */,
-  3 /* Color of ReduceAction385 */,
-  46 /* Group of ? */,
-  1907 /* Id of ReduceAction386 */,
-  3 /* Color of ReduceAction386 */,
-  46 /* Group of ? */,
-  1903 /* Id of ReduceAction387 */,
-  3 /* Color of ReduceAction387 */,
-  46 /* Group of ? */,
-  1899 /* Id of ReduceAction388 */,
-  3 /* Color of ReduceAction388 */,
-  46 /* Group of ? */,
-  1895 /* Id of ReduceAction389 */,
-  3 /* Color of ReduceAction389 */,
-  46 /* Group of ? */,
-  1887 /* Id of ReduceAction390 */,
-  3 /* Color of ReduceAction390 */,
-  46 /* Group of ? */,
-  1883 /* Id of ReduceAction391 */,
-  3 /* Color of ReduceAction391 */,
-  46 /* Group of ? */,
-  1879 /* Id of ReduceAction392 */,
-  3 /* Color of ReduceAction392 */,
-  46 /* Group of ? */,
-  1875 /* Id of ReduceAction393 */,
-  3 /* Color of ReduceAction393 */,
-  46 /* Group of ? */,
-  1871 /* Id of ReduceAction394 */,
-  3 /* Color of ReduceAction394 */,
-  46 /* Group of ? */,
-  1867 /* Id of ReduceAction395 */,
-  3 /* Color of ReduceAction395 */,
-  46 /* Group of ? */,
-  1863 /* Id of ReduceAction396 */,
-  3 /* Color of ReduceAction396 */,
-  46 /* Group of ? */,
-  1859 /* Id of ReduceAction397 */,
-  3 /* Color of ReduceAction397 */,
-  46 /* Group of ? */,
-  1855 /* Id of ReduceAction398 */,
-  3 /* Color of ReduceAction398 */,
-  46 /* Group of ? */,
-  1851 /* Id of ReduceAction399 */,
-  3 /* Color of ReduceAction399 */,
-  46 /* Group of ? */,
-  1839 /* Id of ReduceAction400 */,
-  3 /* Color of ReduceAction400 */,
-  46 /* Group of ? */,
-  1835 /* Id of ReduceAction401 */,
-  3 /* Color of ReduceAction401 */,
-  46 /* Group of ? */,
-  1831 /* Id of ReduceAction402 */,
-  3 /* Color of ReduceAction402 */,
-  46 /* Group of ? */,
-  1827 /* Id of ReduceAction403 */,
-  3 /* Color of ReduceAction403 */,
-  46 /* Group of ? */,
-  1823 /* Id of ReduceAction404 */,
-  3 /* Color of ReduceAction404 */,
-  46 /* Group of ? */,
-  1819 /* Id of ReduceAction405 */,
-  3 /* Color of ReduceAction405 */,
-  46 /* Group of ? */,
-  1815 /* Id of ReduceAction406 */,
-  3 /* Color of ReduceAction406 */,
-  46 /* Group of ? */,
-  1811 /* Id of ReduceAction407 */,
-  3 /* Color of ReduceAction407 */,
-  46 /* Group of ? */,
-  1807 /* Id of ReduceAction408 */,
-  3 /* Color of ReduceAction408 */,
-  46 /* Group of ? */,
-  1803 /* Id of ReduceAction409 */,
-  3 /* Color of ReduceAction409 */,
-  46 /* Group of ? */,
-  1795 /* Id of ReduceAction410 */,
-  3 /* Color of ReduceAction410 */,
-  46 /* Group of ? */,
-  1791 /* Id of ReduceAction411 */,
-  3 /* Color of ReduceAction411 */,
-  46 /* Group of ? */,
-  1787 /* Id of ReduceAction412 */,
-  3 /* Color of ReduceAction412 */,
-  46 /* Group of ? */,
-  1783 /* Id of ReduceAction413 */,
-  3 /* Color of ReduceAction413 */,
-  46 /* Group of ? */,
-  1779 /* Id of ReduceAction414 */,
-  3 /* Color of ReduceAction414 */,
-  46 /* Group of ? */,
-  1775 /* Id of ReduceAction415 */,
-  3 /* Color of ReduceAction415 */,
-  46 /* Group of ? */,
-  1771 /* Id of ReduceAction416 */,
-  3 /* Color of ReduceAction416 */,
-  46 /* Group of ? */,
-  1767 /* Id of ReduceAction417 */,
-  3 /* Color of ReduceAction417 */,
-  46 /* Group of ? */,
-  1763 /* Id of ReduceAction418 */,
-  3 /* Color of ReduceAction418 */,
-  46 /* Group of ? */,
-  1759 /* Id of ReduceAction419 */,
-  3 /* Color of ReduceAction419 */,
-  46 /* Group of ? */,
-  1751 /* Id of ReduceAction420 */,
-  3 /* Color of ReduceAction420 */,
-  46 /* Group of ? */,
-  1747 /* Id of ReduceAction421 */,
-  3 /* Color of ReduceAction421 */,
-  46 /* Group of ? */,
-  1743 /* Id of ReduceAction422 */,
-  3 /* Color of ReduceAction422 */,
-  46 /* Group of ? */,
-  1739 /* Id of ReduceAction423 */,
-  3 /* Color of ReduceAction423 */,
-  46 /* Group of ? */,
-  1735 /* Id of ReduceAction424 */,
-  3 /* Color of ReduceAction424 */,
-  46 /* Group of ? */,
-  1731 /* Id of ReduceAction425 */,
-  3 /* Color of ReduceAction425 */,
-  46 /* Group of ? */,
-  1727 /* Id of ReduceAction426 */,
-  3 /* Color of ReduceAction426 */,
-  46 /* Group of ? */,
-  1723 /* Id of ReduceAction427 */,
-  3 /* Color of ReduceAction427 */,
-  46 /* Group of ? */,
-  1719 /* Id of ReduceAction428 */,
-  3 /* Color of ReduceAction428 */,
-  46 /* Group of ? */,
-  1715 /* Id of ReduceAction429 */,
-  3 /* Color of ReduceAction429 */,
-  46 /* Group of ? */,
-  1707 /* Id of ReduceAction430 */,
-  3 /* Color of ReduceAction430 */,
-  46 /* Group of ? */,
-  1703 /* Id of ReduceAction431 */,
-  3 /* Color of ReduceAction431 */,
-  46 /* Group of ? */,
-  1699 /* Id of ReduceAction432 */,
-  3 /* Color of ReduceAction432 */,
-  46 /* Group of ? */,
-  1695 /* Id of ReduceAction433 */,
-  3 /* Color of ReduceAction433 */,
-  46 /* Group of ? */,
-  1691 /* Id of ReduceAction434 */,
-  3 /* Color of ReduceAction434 */,
-  46 /* Group of ? */,
-  1687 /* Id of ReduceAction435 */,
-  3 /* Color of ReduceAction435 */,
-  46 /* Group of ? */,
-  1683 /* Id of ReduceAction436 */,
-  3 /* Color of ReduceAction436 */,
-  46 /* Group of ? */,
-  1679 /* Id of ReduceAction437 */,
-  3 /* Color of ReduceAction437 */,
-  46 /* Group of ? */,
-  1675 /* Id of ReduceAction438 */,
-  3 /* Color of ReduceAction438 */,
-  46 /* Group of ? */,
-  1671 /* Id of ReduceAction439 */,
-  3 /* Color of ReduceAction439 */,
-  46 /* Group of ? */,
-  1663 /* Id of ReduceAction440 */,
-  3 /* Color of ReduceAction440 */,
-  46 /* Group of ? */,
-  1659 /* Id of ReduceAction441 */,
-  3 /* Color of ReduceAction441 */,
-  46 /* Group of ? */,
-  1655 /* Id of ReduceAction442 */,
-  3 /* Color of ReduceAction442 */,
-  46 /* Group of ? */,
-  1651 /* Id of ReduceAction443 */,
-  3 /* Color of ReduceAction443 */,
-  46 /* Group of ? */,
-  1647 /* Id of ReduceAction444 */,
-  3 /* Color of ReduceAction444 */,
-  46 /* Group of ? */,
-  1643 /* Id of ReduceAction445 */,
-  3 /* Color of ReduceAction445 */,
-  46 /* Group of ? */,
-  1639 /* Id of ReduceAction446 */,
-  3 /* Color of ReduceAction446 */,
-  46 /* Group of ? */,
-  1635 /* Id of ReduceAction447 */,
-  3 /* Color of ReduceAction447 */,
-  46 /* Group of ? */,
-  1631 /* Id of ReduceAction448 */,
-  3 /* Color of ReduceAction448 */,
-  46 /* Group of ? */,
-  1627 /* Id of ReduceAction449 */,
-  3 /* Color of ReduceAction449 */,
-  46 /* Group of ? */,
-  1619 /* Id of ReduceAction450 */,
-  3 /* Color of ReduceAction450 */,
-  46 /* Group of ? */,
-  1615 /* Id of ReduceAction451 */,
-  3 /* Color of ReduceAction451 */,
-  46 /* Group of ? */,
-  1611 /* Id of ReduceAction452 */,
-  3 /* Color of ReduceAction452 */,
-  46 /* Group of ? */,
-  1607 /* Id of ReduceAction453 */,
-  3 /* Color of ReduceAction453 */,
-  46 /* Group of ? */,
-  1603 /* Id of ReduceAction454 */,
-  3 /* Color of ReduceAction454 */,
-  46 /* Group of ? */,
-  1599 /* Id of ReduceAction455 */,
-  3 /* Color of ReduceAction455 */,
-  46 /* Group of ? */,
-  1595 /* Id of ReduceAction456 */,
-  3 /* Color of ReduceAction456 */,
-  46 /* Group of ? */,
-  1591 /* Id of ReduceAction457 */,
-  3 /* Color of ReduceAction457 */,
-  46 /* Group of ? */,
-  1587 /* Id of ReduceAction458 */,
-  3 /* Color of ReduceAction458 */,
-  46 /* Group of ? */,
-  1583 /* Id of ReduceAction459 */,
-  3 /* Color of ReduceAction459 */,
-  46 /* Group of ? */,
-  1575 /* Id of ReduceAction460 */,
-  3 /* Color of ReduceAction460 */,
-  46 /* Group of ? */,
-  1571 /* Id of ReduceAction461 */,
-  3 /* Color of ReduceAction461 */,
-  46 /* Group of ? */,
-  1567 /* Id of ReduceAction462 */,
-  3 /* Color of ReduceAction462 */,
-  46 /* Group of ? */,
-  1563 /* Id of ReduceAction463 */,
-  3 /* Color of ReduceAction463 */,
-  46 /* Group of ? */,
-  1559 /* Id of ReduceAction464 */,
-  3 /* Color of ReduceAction464 */,
-  46 /* Group of ? */,
-  1555 /* Id of ReduceAction465 */,
-  3 /* Color of ReduceAction465 */,
-  46 /* Group of ? */,
-  1551 /* Id of ReduceAction466 */,
-  3 /* Color of ReduceAction466 */,
-  46 /* Group of ? */,
-  1547 /* Id of ReduceAction467 */,
-  3 /* Color of ReduceAction467 */,
-  46 /* Group of ? */,
-  1543 /* Id of ReduceAction468 */,
-  3 /* Color of ReduceAction468 */,
-  46 /* Group of ? */,
-  1539 /* Id of ReduceAction469 */,
-  3 /* Color of ReduceAction469 */,
-  46 /* Group of ? */,
-  1531 /* Id of ReduceAction470 */,
-  3 /* Color of ReduceAction470 */,
-  46 /* Group of ? */,
-  1527 /* Id of ReduceAction471 */,
-  3 /* Color of ReduceAction471 */,
-  46 /* Group of ? */,
-  1523 /* Id of ReduceAction472 */,
-  3 /* Color of ReduceAction472 */,
-  46 /* Group of ? */,
-  1519 /* Id of ReduceAction473 */,
-  3 /* Color of ReduceAction473 */,
-  46 /* Group of ? */,
-  1515 /* Id of ReduceAction474 */,
-  3 /* Color of ReduceAction474 */,
-  46 /* Group of ? */,
-  1511 /* Id of ReduceAction475 */,
-  3 /* Color of ReduceAction475 */,
-  46 /* Group of ? */,
-  1507 /* Id of ReduceAction476 */,
-  3 /* Color of ReduceAction476 */,
-  46 /* Group of ? */,
-  1503 /* Id of ReduceAction477 */,
-  3 /* Color of ReduceAction477 */,
-  46 /* Group of ? */,
-  1499 /* Id of ReduceAction478 */,
-  3 /* Color of ReduceAction478 */,
-  46 /* Group of ? */,
-  1495 /* Id of ReduceAction479 */,
-  3 /* Color of ReduceAction479 */,
-  46 /* Group of ? */,
-  1487 /* Id of ReduceAction480 */,
-  3 /* Color of ReduceAction480 */,
-  46 /* Group of ? */,
-  1483 /* Id of ReduceAction481 */,
-  3 /* Color of ReduceAction481 */,
-  46 /* Group of ? */,
-  1479 /* Id of ReduceAction482 */,
-  3 /* Color of ReduceAction482 */,
-  46 /* Group of ? */,
-  1475 /* Id of ReduceAction483 */,
-  3 /* Color of ReduceAction483 */,
-  46 /* Group of ? */,
-  1471 /* Id of ReduceAction484 */,
-  3 /* Color of ReduceAction484 */,
-  46 /* Group of ? */,
-  1467 /* Id of ReduceAction485 */,
-  3 /* Color of ReduceAction485 */,
-  46 /* Group of ? */,
-  1463 /* Id of ReduceAction486 */,
-  3 /* Color of ReduceAction486 */,
-  46 /* Group of ? */,
-  1459 /* Id of ReduceAction487 */,
-  3 /* Color of ReduceAction487 */,
-  46 /* Group of ? */,
-  1455 /* Id of ReduceAction488 */,
-  3 /* Color of ReduceAction488 */,
-  46 /* Group of ? */,
-  1451 /* Id of ReduceAction489 */,
-  3 /* Color of ReduceAction489 */,
-  46 /* Group of ? */,
-  1443 /* Id of ReduceAction490 */,
-  3 /* Color of ReduceAction490 */,
-  46 /* Group of ? */,
-  1439 /* Id of ReduceAction491 */,
-  3 /* Color of ReduceAction491 */,
-  46 /* Group of ? */,
-  1435 /* Id of ReduceAction492 */,
-  3 /* Color of ReduceAction492 */,
-  46 /* Group of ? */,
-  1431 /* Id of ReduceAction493 */,
-  3 /* Color of ReduceAction493 */,
-  46 /* Group of ? */,
-  1427 /* Id of ReduceAction494 */,
-  3 /* Color of ReduceAction494 */,
-  46 /* Group of ? */,
-  1423 /* Id of ReduceAction495 */,
-  3 /* Color of ReduceAction495 */,
-  46 /* Group of ? */,
-  1419 /* Id of ReduceAction496 */,
-  3 /* Color of ReduceAction496 */,
-  46 /* Group of ? */,
-  1415 /* Id of ReduceAction497 */,
-  3 /* Color of ReduceAction497 */,
-  46 /* Group of ? */,
-  1411 /* Id of ReduceAction498 */,
-  3 /* Color of ReduceAction498 */,
-  46 /* Group of ? */,
-  1407 /* Id of ReduceAction499 */,
-  3 /* Color of ReduceAction499 */,
-  46 /* Group of ? */,
-  1395 /* Id of ReduceAction500 */,
-  3 /* Color of ReduceAction500 */,
-  46 /* Group of ? */,
-  1391 /* Id of ReduceAction501 */,
-  3 /* Color of ReduceAction501 */,
-  46 /* Group of ? */,
-  1387 /* Id of ReduceAction502 */,
-  3 /* Color of ReduceAction502 */,
-  46 /* Group of ? */,
-  1383 /* Id of ReduceAction503 */,
-  3 /* Color of ReduceAction503 */,
-  46 /* Group of ? */,
-  1379 /* Id of ReduceAction504 */,
-  3 /* Color of ReduceAction504 */,
-  46 /* Group of ? */,
-  1375 /* Id of ReduceAction505 */,
-  3 /* Color of ReduceAction505 */,
-  46 /* Group of ? */,
-  1371 /* Id of ReduceAction506 */,
-  3 /* Color of ReduceAction506 */,
-  46 /* Group of ? */,
-  1367 /* Id of ReduceAction507 */,
-  3 /* Color of ReduceAction507 */,
-  46 /* Group of ? */,
-  1363 /* Id of ReduceAction508 */,
-  3 /* Color of ReduceAction508 */,
-  46 /* Group of ? */,
-  1359 /* Id of ReduceAction509 */,
-  3 /* Color of ReduceAction509 */,
-  46 /* Group of ? */,
-  1351 /* Id of ReduceAction510 */,
-  3 /* Color of ReduceAction510 */,
-  46 /* Group of ? */,
-  1347 /* Id of ReduceAction511 */,
-  3 /* Color of ReduceAction511 */,
-  46 /* Group of ? */,
-  1343 /* Id of ReduceAction512 */,
-  3 /* Color of ReduceAction512 */,
-  46 /* Group of ? */,
-  1339 /* Id of ReduceAction513 */,
-  3 /* Color of ReduceAction513 */,
-  46 /* Group of ? */,
-  1335 /* Id of ReduceAction514 */,
-  3 /* Color of ReduceAction514 */,
-  46 /* Group of ? */,
-  1331 /* Id of ReduceAction515 */,
-  3 /* Color of ReduceAction515 */,
-  46 /* Group of ? */,
-  1327 /* Id of ReduceAction516 */,
-  3 /* Color of ReduceAction516 */,
-  46 /* Group of ? */,
-  1323 /* Id of ReduceAction517 */,
-  3 /* Color of ReduceAction517 */,
-  46 /* Group of ? */,
-  1319 /* Id of ReduceAction518 */,
-  3 /* Color of ReduceAction518 */,
-  46 /* Group of ? */,
-  1315 /* Id of ReduceAction519 */,
-  3 /* Color of ReduceAction519 */,
-  46 /* Group of ? */,
-  1307 /* Id of ReduceAction520 */,
-  3 /* Color of ReduceAction520 */,
-  46 /* Group of ? */,
-  1303 /* Id of ReduceAction521 */,
-  3 /* Color of ReduceAction521 */,
-  46 /* Group of ? */,
-  1299 /* Id of ReduceAction522 */,
-  3 /* Color of ReduceAction522 */,
-  46 /* Group of ? */,
-  1295 /* Id of ReduceAction523 */,
-  3 /* Color of ReduceAction523 */,
-  46 /* Group of ? */,
-  1291 /* Id of ReduceAction524 */,
-  3 /* Color of ReduceAction524 */,
-  46 /* Group of ? */,
-  1287 /* Id of ReduceAction525 */,
-  3 /* Color of ReduceAction525 */,
-  46 /* Group of ? */,
-  1283 /* Id of ReduceAction526 */,
-  3 /* Color of ReduceAction526 */,
-  46 /* Group of ? */,
-  1279 /* Id of ReduceAction527 */,
-  3 /* Color of ReduceAction527 */,
-  46 /* Group of ? */,
-  1275 /* Id of ReduceAction528 */,
-  3 /* Color of ReduceAction528 */,
-  46 /* Group of ? */,
-  1271 /* Id of ReduceAction529 */,
-  3 /* Color of ReduceAction529 */,
-  46 /* Group of ? */,
-  1263 /* Id of ReduceAction530 */,
-  3 /* Color of ReduceAction530 */,
-  46 /* Group of ? */,
-  1259 /* Id of ReduceAction531 */,
-  3 /* Color of ReduceAction531 */,
-  46 /* Group of ? */,
-  1255 /* Id of ReduceAction532 */,
-  3 /* Color of ReduceAction532 */,
-  46 /* Group of ? */,
-  1251 /* Id of ReduceAction533 */,
-  3 /* Color of ReduceAction533 */,
-  46 /* Group of ? */,
-  1247 /* Id of ReduceAction534 */,
-  3 /* Color of ReduceAction534 */,
-  46 /* Group of ? */,
-  1243 /* Id of ReduceAction535 */,
-  3 /* Color of ReduceAction535 */,
-  46 /* Group of ? */,
-  1239 /* Id of ReduceAction536 */,
-  3 /* Color of ReduceAction536 */,
-  46 /* Group of ? */,
-  1235 /* Id of ReduceAction537 */,
-  3 /* Color of ReduceAction537 */,
-  46 /* Group of ? */,
-  1231 /* Id of ReduceAction538 */,
-  3 /* Color of ReduceAction538 */,
-  46 /* Group of ? */,
-  1227 /* Id of ReduceAction539 */,
-  3 /* Color of ReduceAction539 */,
-  46 /* Group of ? */,
-  1219 /* Id of ReduceAction540 */,
-  3 /* Color of ReduceAction540 */,
-  46 /* Group of ? */,
-  1215 /* Id of ReduceAction541 */,
-  3 /* Color of ReduceAction541 */,
-  46 /* Group of ? */,
-  1211 /* Id of ReduceAction542 */,
-  3 /* Color of ReduceAction542 */,
-  46 /* Group of ? */,
-  1207 /* Id of ReduceAction543 */,
-  3 /* Color of ReduceAction543 */,
-  46 /* Group of ? */,
-  1203 /* Id of ReduceAction544 */,
-  3 /* Color of ReduceAction544 */,
-  46 /* Group of ? */,
-  1199 /* Id of ReduceAction545 */,
-  3 /* Color of ReduceAction545 */,
-  46 /* Group of ? */,
-  1195 /* Id of ReduceAction546 */,
-  3 /* Color of ReduceAction546 */,
-  46 /* Group of ? */,
-  1191 /* Id of ReduceAction547 */,
-  3 /* Color of ReduceAction547 */,
-  46 /* Group of ? */,
-  1187 /* Id of ReduceAction548 */,
-  3 /* Color of ReduceAction548 */,
-  46 /* Group of ? */,
-  1183 /* Id of ReduceAction549 */,
-  3 /* Color of ReduceAction549 */,
-  46 /* Group of ? */,
-  1175 /* Id of ReduceAction550 */,
-  3 /* Color of ReduceAction550 */,
-  46 /* Group of ? */,
-  1171 /* Id of ReduceAction551 */,
-  3 /* Color of ReduceAction551 */,
-  46 /* Group of ? */,
-  1167 /* Id of ReduceAction552 */,
-  3 /* Color of ReduceAction552 */,
-  46 /* Group of ? */,
-  1163 /* Id of ReduceAction553 */,
-  3 /* Color of ReduceAction553 */,
-  46 /* Group of ? */,
-  1159 /* Id of ReduceAction554 */,
-  3 /* Color of ReduceAction554 */,
-  46 /* Group of ? */,
-  1155 /* Id of ReduceAction555 */,
-  3 /* Color of ReduceAction555 */,
-  46 /* Group of ? */,
-  1151 /* Id of ReduceAction556 */,
-  3 /* Color of ReduceAction556 */,
-  46 /* Group of ? */,
-  1147 /* Id of ReduceAction557 */,
-  3 /* Color of ReduceAction557 */,
-  46 /* Group of ? */,
-  1143 /* Id of ReduceAction558 */,
-  3 /* Color of ReduceAction558 */,
-  46 /* Group of ? */,
-  1139 /* Id of ReduceAction559 */,
-  3 /* Color of ReduceAction559 */,
-  46 /* Group of ? */,
-  1131 /* Id of ReduceAction560 */,
-  3 /* Color of ReduceAction560 */,
-  46 /* Group of ? */,
-  1127 /* Id of ReduceAction561 */,
-  3 /* Color of ReduceAction561 */,
-  46 /* Group of ? */,
-  1123 /* Id of ReduceAction562 */,
-  3 /* Color of ReduceAction562 */,
-  46 /* Group of ? */,
-  1119 /* Id of ReduceAction563 */,
-  3 /* Color of ReduceAction563 */,
-  46 /* Group of ? */,
-  1115 /* Id of ReduceAction564 */,
-  3 /* Color of ReduceAction564 */,
-  46 /* Group of ? */,
-  1111 /* Id of ReduceAction565 */,
-  3 /* Color of ReduceAction565 */,
-  46 /* Group of ? */,
-  1107 /* Id of ReduceAction566 */,
-  3 /* Color of ReduceAction566 */,
-  46 /* Group of ? */,
-  1103 /* Id of ReduceAction567 */,
-  3 /* Color of ReduceAction567 */,
-  46 /* Group of ? */,
-  1099 /* Id of ReduceAction568 */,
-  3 /* Color of ReduceAction568 */,
-  46 /* Group of ? */,
-  1095 /* Id of ReduceAction569 */,
-  3 /* Color of ReduceAction569 */,
-  46 /* Group of ? */,
-  1087 /* Id of ReduceAction570 */,
-  3 /* Color of ReduceAction570 */,
-  46 /* Group of ? */,
-  1083 /* Id of ReduceAction571 */,
-  3 /* Color of ReduceAction571 */,
-  46 /* Group of ? */,
-  1079 /* Id of ReduceAction572 */,
-  3 /* Color of ReduceAction572 */,
-  46 /* Group of ? */,
-  1075 /* Id of ReduceAction573 */,
-  3 /* Color of ReduceAction573 */,
-  46 /* Group of ? */,
-  1071 /* Id of ReduceAction574 */,
-  3 /* Color of ReduceAction574 */,
-  46 /* Group of ? */,
-  1067 /* Id of ReduceAction575 */,
-  3 /* Color of ReduceAction575 */,
-  46 /* Group of ? */,
-  1063 /* Id of ReduceAction576 */,
-  3 /* Color of ReduceAction576 */,
-  46 /* Group of ? */,
-  1059 /* Id of ReduceAction577 */,
-  3 /* Color of ReduceAction577 */,
-  46 /* Group of ? */,
-  1055 /* Id of ReduceAction578 */,
-  3 /* Color of ReduceAction578 */,
-  46 /* Group of ? */,
-  1051 /* Id of ReduceAction579 */,
-  3 /* Color of ReduceAction579 */,
-  46 /* Group of ? */,
-  1043 /* Id of ReduceAction580 */,
-  3 /* Color of ReduceAction580 */,
-  46 /* Group of ? */,
-  1039 /* Id of ReduceAction581 */,
-  3 /* Color of ReduceAction581 */,
-  46 /* Group of ? */,
-  1035 /* Id of ReduceAction582 */,
-  3 /* Color of ReduceAction582 */,
-  46 /* Group of ? */,
-  1031 /* Id of ReduceAction583 */,
-  3 /* Color of ReduceAction583 */,
-  46 /* Group of ? */,
-  1027 /* Id of ReduceAction584 */,
-  3 /* Color of ReduceAction584 */,
-  46 /* Group of ? */,
-  1023 /* Id of ReduceAction585 */,
-  3 /* Color of ReduceAction585 */,
-  46 /* Group of ? */,
-  1019 /* Id of ReduceAction586 */,
-  3 /* Color of ReduceAction586 */,
-  46 /* Group of ? */,
-  1015 /* Id of ReduceAction587 */,
-  3 /* Color of ReduceAction587 */,
-  46 /* Group of ? */,
-  1011 /* Id of ReduceAction588 */,
-  3 /* Color of ReduceAction588 */,
-  46 /* Group of ? */,
-  1007 /* Id of ReduceAction589 */,
-  3 /* Color of ReduceAction589 */,
-  46 /* Group of ? */,
-  999 /* Id of ReduceAction590 */,
-  3 /* Color of ReduceAction590 */,
-  46 /* Group of ? */,
-  995 /* Id of ReduceAction591 */,
-  3 /* Color of ReduceAction591 */,
-  46 /* Group of ? */,
-  991 /* Id of ReduceAction592 */,
-  3 /* Color of ReduceAction592 */,
-  46 /* Group of ? */,
-  987 /* Id of ReduceAction593 */,
-  3 /* Color of ReduceAction593 */,
-  46 /* Group of ? */,
-  983 /* Id of ReduceAction594 */,
-  3 /* Color of ReduceAction594 */,
-  46 /* Group of ? */,
-  979 /* Id of ReduceAction595 */,
-  3 /* Color of ReduceAction595 */,
-  46 /* Group of ? */,
-  975 /* Id of ReduceAction596 */,
-  3 /* Color of ReduceAction596 */,
-  46 /* Group of ? */,
-  971 /* Id of ReduceAction597 */,
-  3 /* Color of ReduceAction597 */,
-  46 /* Group of ? */,
-  967 /* Id of ReduceAction598 */,
-  3 /* Color of ReduceAction598 */,
-  46 /* Group of ? */,
-  963 /* Id of ReduceAction599 */,
-  3 /* Color of ReduceAction599 */,
-  46 /* Group of ? */,
-  951 /* Id of ReduceAction600 */,
-  3 /* Color of ReduceAction600 */,
-  46 /* Group of ? */,
-  947 /* Id of ReduceAction601 */,
-  3 /* Color of ReduceAction601 */,
-  46 /* Group of ? */,
-  943 /* Id of ReduceAction602 */,
-  3 /* Color of ReduceAction602 */,
-  46 /* Group of ? */,
-  939 /* Id of ReduceAction603 */,
-  3 /* Color of ReduceAction603 */,
-  46 /* Group of ? */,
-  935 /* Id of ReduceAction604 */,
-  3 /* Color of ReduceAction604 */,
-  46 /* Group of ? */,
-  931 /* Id of ReduceAction605 */,
-  3 /* Color of ReduceAction605 */,
-  46 /* Group of ? */,
-  927 /* Id of ReduceAction606 */,
-  3 /* Color of ReduceAction606 */,
-  46 /* Group of ? */,
-  923 /* Id of ReduceAction607 */,
-  3 /* Color of ReduceAction607 */,
-  46 /* Group of ? */,
-  919 /* Id of ReduceAction608 */,
-  3 /* Color of ReduceAction608 */,
-  46 /* Group of ? */,
-  915 /* Id of ReduceAction609 */,
-  3 /* Color of ReduceAction609 */,
-  46 /* Group of ? */,
-  907 /* Id of ReduceAction610 */,
-  3 /* Color of ReduceAction610 */,
-  46 /* Group of ? */,
-  903 /* Id of ReduceAction611 */,
-  3 /* Color of ReduceAction611 */,
-  46 /* Group of ? */,
-  899 /* Id of ReduceAction612 */,
-  3 /* Color of ReduceAction612 */,
-  46 /* Group of ? */,
-  895 /* Id of ReduceAction613 */,
-  3 /* Color of ReduceAction613 */,
-  46 /* Group of ? */,
-  891 /* Id of ReduceAction614 */,
-  3 /* Color of ReduceAction614 */,
-  46 /* Group of ? */,
-  887 /* Id of ReduceAction615 */,
-  3 /* Color of ReduceAction615 */,
-  46 /* Group of ? */,
-  883 /* Id of ReduceAction616 */,
-  3 /* Color of ReduceAction616 */,
-  46 /* Group of ? */,
-  879 /* Id of ReduceAction617 */,
-  3 /* Color of ReduceAction617 */,
-  46 /* Group of ? */,
-  875 /* Id of ReduceAction618 */,
-  3 /* Color of ReduceAction618 */,
-  46 /* Group of ? */,
-  871 /* Id of ReduceAction619 */,
-  3 /* Color of ReduceAction619 */,
-  46 /* Group of ? */,
-  863 /* Id of ReduceAction620 */,
-  3 /* Color of ReduceAction620 */,
-  46 /* Group of ? */,
-  859 /* Id of ReduceAction621 */,
-  3 /* Color of ReduceAction621 */,
-  46 /* Group of ? */,
-  855 /* Id of ReduceAction622 */,
-  3 /* Color of ReduceAction622 */,
-  46 /* Group of ? */,
-  851 /* Id of ReduceAction623 */,
-  3 /* Color of ReduceAction623 */,
-  46 /* Group of ? */,
-  847 /* Id of ReduceAction624 */,
-  3 /* Color of ReduceAction624 */,
-  46 /* Group of ? */,
-  843 /* Id of ReduceAction625 */,
-  3 /* Color of ReduceAction625 */,
-  46 /* Group of ? */,
-  839 /* Id of ReduceAction626 */,
-  3 /* Color of ReduceAction626 */,
-  46 /* Group of ? */,
-  835 /* Id of ReduceAction627 */,
-  3 /* Color of ReduceAction627 */,
-  46 /* Group of ? */,
-  831 /* Id of ReduceAction628 */,
-  3 /* Color of ReduceAction628 */,
-  46 /* Group of ? */,
-  827 /* Id of ReduceAction629 */,
-  3 /* Color of ReduceAction629 */,
-  46 /* Group of ? */,
-  819 /* Id of ReduceAction630 */,
-  3 /* Color of ReduceAction630 */,
-  46 /* Group of ? */,
-  815 /* Id of ReduceAction631 */,
-  3 /* Color of ReduceAction631 */,
-  46 /* Group of ? */,
-  811 /* Id of ReduceAction632 */,
-  3 /* Color of ReduceAction632 */,
-  46 /* Group of ? */,
-  807 /* Id of ReduceAction633 */,
-  3 /* Color of ReduceAction633 */,
-  46 /* Group of ? */,
-  803 /* Id of ReduceAction634 */,
-  3 /* Color of ReduceAction634 */,
-  46 /* Group of ? */,
-  799 /* Id of ReduceAction635 */,
-  3 /* Color of ReduceAction635 */,
-  46 /* Group of ? */,
-  795 /* Id of ReduceAction636 */,
-  3 /* Color of ReduceAction636 */,
-  46 /* Group of ? */,
-  791 /* Id of ReduceAction637 */,
-  3 /* Color of ReduceAction637 */,
-  46 /* Group of ? */,
-  787 /* Id of ReduceAction638 */,
-  3 /* Color of ReduceAction638 */,
-  46 /* Group of ? */,
-  783 /* Id of ReduceAction639 */,
-  3 /* Color of ReduceAction639 */,
-  46 /* Group of ? */,
-  775 /* Id of ReduceAction640 */,
-  3 /* Color of ReduceAction640 */,
-  46 /* Group of ? */,
-  771 /* Id of ReduceAction641 */,
-  3 /* Color of ReduceAction641 */,
-  46 /* Group of ? */,
-  767 /* Id of ReduceAction642 */,
-  3 /* Color of ReduceAction642 */,
-  46 /* Group of ? */,
-  763 /* Id of ReduceAction643 */,
-  3 /* Color of ReduceAction643 */,
-  46 /* Group of ? */,
-  759 /* Id of ReduceAction644 */,
-  3 /* Color of ReduceAction644 */,
-  46 /* Group of ? */,
-  755 /* Id of ReduceAction645 */,
-  3 /* Color of ReduceAction645 */,
-  46 /* Group of ? */,
-  751 /* Id of ReduceAction646 */,
-  3 /* Color of ReduceAction646 */,
-  46 /* Group of ? */,
-  747 /* Id of ReduceAction647 */,
-  3 /* Color of ReduceAction647 */,
-  46 /* Group of ? */,
-  743 /* Id of ReduceAction648 */,
-  3 /* Color of ReduceAction648 */,
-  46 /* Group of ? */,
-  739 /* Id of ReduceAction649 */,
-  3 /* Color of ReduceAction649 */,
-  46 /* Group of ? */,
-  731 /* Id of ReduceAction650 */,
-  3 /* Color of ReduceAction650 */,
-  46 /* Group of ? */,
-  727 /* Id of ReduceAction651 */,
-  3 /* Color of ReduceAction651 */,
-  46 /* Group of ? */,
-  723 /* Id of ReduceAction652 */,
-  3 /* Color of ReduceAction652 */,
-  46 /* Group of ? */,
-  719 /* Id of ReduceAction653 */,
-  3 /* Color of ReduceAction653 */,
-  46 /* Group of ? */,
-  715 /* Id of ReduceAction654 */,
-  3 /* Color of ReduceAction654 */,
-  46 /* Group of ? */,
-  711 /* Id of ReduceAction655 */,
-  3 /* Color of ReduceAction655 */,
-  46 /* Group of ? */,
-  707 /* Id of ReduceAction656 */,
-  3 /* Color of ReduceAction656 */,
-  46 /* Group of ? */,
-  703 /* Id of ReduceAction657 */,
-  3 /* Color of ReduceAction657 */,
-  46 /* Group of ? */,
-  699 /* Id of ReduceAction658 */,
-  3 /* Color of ReduceAction658 */,
-  46 /* Group of ? */,
-  695 /* Id of ReduceAction659 */,
-  3 /* Color of ReduceAction659 */,
-  46 /* Group of ? */,
-  687 /* Id of ReduceAction660 */,
-  3 /* Color of ReduceAction660 */,
-  46 /* Group of ? */,
-  683 /* Id of ReduceAction661 */,
-  3 /* Color of ReduceAction661 */,
-  46 /* Group of ? */,
-  679 /* Id of ReduceAction662 */,
-  3 /* Color of ReduceAction662 */,
-  46 /* Group of ? */,
-  675 /* Id of ReduceAction663 */,
-  3 /* Color of ReduceAction663 */,
-  46 /* Group of ? */,
-  671 /* Id of ReduceAction664 */,
-  3 /* Color of ReduceAction664 */,
-  46 /* Group of ? */,
-  667 /* Id of ReduceAction665 */,
-  3 /* Color of ReduceAction665 */,
-  46 /* Group of ? */,
-  663 /* Id of ReduceAction666 */,
-  3 /* Color of ReduceAction666 */,
-  46 /* Group of ? */,
-  659 /* Id of ReduceAction667 */,
-  3 /* Color of ReduceAction667 */,
-  46 /* Group of ? */,
-  655 /* Id of ReduceAction668 */,
-  3 /* Color of ReduceAction668 */,
-  46 /* Group of ? */,
-  651 /* Id of ReduceAction669 */,
-  3 /* Color of ReduceAction669 */,
-  46 /* Group of ? */,
-  643 /* Id of ReduceAction670 */,
-  3 /* Color of ReduceAction670 */,
-  46 /* Group of ? */,
-  639 /* Id of ReduceAction671 */,
-  3 /* Color of ReduceAction671 */,
-  46 /* Group of ? */,
-  635 /* Id of ReduceAction672 */,
-  3 /* Color of ReduceAction672 */,
-  46 /* Group of ? */,
-  631 /* Id of ReduceAction673 */,
-  3 /* Color of ReduceAction673 */,
-  46 /* Group of ? */,
-  627 /* Id of ReduceAction674 */,
-  3 /* Color of ReduceAction674 */,
-  46 /* Group of ? */,
-  623 /* Id of ReduceAction675 */,
-  3 /* Color of ReduceAction675 */,
-  46 /* Group of ? */,
-  619 /* Id of ReduceAction676 */,
-  3 /* Color of ReduceAction676 */,
-  46 /* Group of ? */,
-  615 /* Id of ReduceAction677 */,
-  3 /* Color of ReduceAction677 */,
-  46 /* Group of ? */,
-  611 /* Id of ReduceAction678 */,
-  3 /* Color of ReduceAction678 */,
-  46 /* Group of ? */,
-  607 /* Id of ReduceAction679 */,
-  3 /* Color of ReduceAction679 */,
-  46 /* Group of ? */,
-  599 /* Id of ReduceAction680 */,
-  3 /* Color of ReduceAction680 */,
-  46 /* Group of ? */,
-  595 /* Id of ReduceAction681 */,
-  3 /* Color of ReduceAction681 */,
-  46 /* Group of ? */,
-  591 /* Id of ReduceAction682 */,
-  3 /* Color of ReduceAction682 */,
-  46 /* Group of ? */,
-  587 /* Id of ReduceAction683 */,
-  3 /* Color of ReduceAction683 */,
-  46 /* Group of ? */,
-  583 /* Id of ReduceAction684 */,
-  3 /* Color of ReduceAction684 */,
-  46 /* Group of ? */,
-  579 /* Id of ReduceAction685 */,
-  3 /* Color of ReduceAction685 */,
-  46 /* Group of ? */,
-  575 /* Id of ReduceAction686 */,
-  3 /* Color of ReduceAction686 */,
-  46 /* Group of ? */,
-  571 /* Id of ReduceAction687 */,
-  3 /* Color of ReduceAction687 */,
-  46 /* Group of ? */,
-  567 /* Id of ReduceAction688 */,
-  3 /* Color of ReduceAction688 */,
-  46 /* Group of ? */,
-  563 /* Id of ReduceAction689 */,
-  3 /* Color of ReduceAction689 */,
-  46 /* Group of ? */,
-  555 /* Id of ReduceAction690 */,
-  3 /* Color of ReduceAction690 */,
-  46 /* Group of ? */,
-  551 /* Id of ReduceAction691 */,
-  3 /* Color of ReduceAction691 */,
-  46 /* Group of ? */,
-  547 /* Id of ReduceAction692 */,
-  3 /* Color of ReduceAction692 */,
-  46 /* Group of ? */,
-  543 /* Id of ReduceAction693 */,
-  3 /* Color of ReduceAction693 */,
-  46 /* Group of ? */,
-  539 /* Id of ReduceAction694 */,
-  3 /* Color of ReduceAction694 */,
-  46 /* Group of ? */,
-  535 /* Id of ReduceAction695 */,
-  3 /* Color of ReduceAction695 */,
-  46 /* Group of ? */,
-  531 /* Id of ReduceAction696 */,
-  3 /* Color of ReduceAction696 */,
-  46 /* Group of ? */,
-  527 /* Id of ReduceAction697 */,
-  3 /* Color of ReduceAction697 */,
-  46 /* Group of ? */,
-  523 /* Id of ReduceAction698 */,
-  3 /* Color of ReduceAction698 */,
-  46 /* Group of ? */,
-  519 /* Id of ReduceAction699 */,
-  3 /* Color of ReduceAction699 */,
-  46 /* Group of ? */,
-  507 /* Id of ReduceAction700 */,
-  3 /* Color of ReduceAction700 */,
-  46 /* Group of ? */,
-  503 /* Id of ReduceAction701 */,
-  3 /* Color of ReduceAction701 */,
-  46 /* Group of ? */,
-  499 /* Id of ReduceAction702 */,
-  3 /* Color of ReduceAction702 */,
-  46 /* Group of ? */,
-  495 /* Id of ReduceAction703 */,
-  3 /* Color of ReduceAction703 */,
-  46 /* Group of ? */,
-  491 /* Id of ReduceAction704 */,
-  3 /* Color of ReduceAction704 */,
-  46 /* Group of ? */,
-  487 /* Id of ReduceAction705 */,
-  3 /* Color of ReduceAction705 */,
-  46 /* Group of ? */,
-  483 /* Id of ReduceAction706 */,
-  3 /* Color of ReduceAction706 */,
-  46 /* Group of ? */,
-  479 /* Id of ReduceAction707 */,
-  3 /* Color of ReduceAction707 */,
-  46 /* Group of ? */,
-  475 /* Id of ReduceAction708 */,
-  3 /* Color of ReduceAction708 */,
-  46 /* Group of ? */,
-  471 /* Id of ReduceAction709 */,
-  3 /* Color of ReduceAction709 */,
-  46 /* Group of ? */,
-  463 /* Id of ReduceAction710 */,
-  3 /* Color of ReduceAction710 */,
-  46 /* Group of ? */,
-  459 /* Id of ReduceAction711 */,
-  3 /* Color of ReduceAction711 */,
-  46 /* Group of ? */,
-  455 /* Id of ReduceAction712 */,
-  3 /* Color of ReduceAction712 */,
-  46 /* Group of ? */,
-  451 /* Id of ReduceAction713 */,
-  3 /* Color of ReduceAction713 */,
-  46 /* Group of ? */,
-  447 /* Id of ReduceAction714 */,
-  3 /* Color of ReduceAction714 */,
-  46 /* Group of ? */,
-  443 /* Id of ReduceAction715 */,
-  3 /* Color of ReduceAction715 */,
-  46 /* Group of ? */,
-  439 /* Id of ReduceAction716 */,
-  3 /* Color of ReduceAction716 */,
-  46 /* Group of ? */,
-  435 /* Id of ReduceAction717 */,
-  3 /* Color of ReduceAction717 */,
-  46 /* Group of ? */,
-  431 /* Id of ReduceAction718 */,
-  3 /* Color of ReduceAction718 */,
-  46 /* Group of ? */,
-  427 /* Id of ReduceAction719 */,
-  3 /* Color of ReduceAction719 */,
-  46 /* Group of ? */,
-  419 /* Id of ReduceAction720 */,
-  3 /* Color of ReduceAction720 */,
-  46 /* Group of ? */,
-  415 /* Id of ReduceAction721 */,
-  3 /* Color of ReduceAction721 */,
-  46 /* Group of ? */,
-  411 /* Id of ReduceAction722 */,
-  3 /* Color of ReduceAction722 */,
-  46 /* Group of ? */,
-  407 /* Id of ReduceAction723 */,
-  3 /* Color of ReduceAction723 */,
-  46 /* Group of ? */,
-  403 /* Id of ReduceAction724 */,
-  3 /* Color of ReduceAction724 */,
-  46 /* Group of ? */,
-  399 /* Id of ReduceAction725 */,
-  3 /* Color of ReduceAction725 */,
-  46 /* Group of ? */,
-  395 /* Id of ReduceAction726 */,
-  3 /* Color of ReduceAction726 */,
-  46 /* Group of ? */,
-  391 /* Id of ReduceAction727 */,
-  3 /* Color of ReduceAction727 */,
-  46 /* Group of ? */,
-  387 /* Id of ReduceAction728 */,
-  3 /* Color of ReduceAction728 */,
-  46 /* Group of ? */,
-  383 /* Id of ReduceAction729 */,
-  3 /* Color of ReduceAction729 */,
-  46 /* Group of ? */,
-  375 /* Id of ReduceAction730 */,
-  3 /* Color of ReduceAction730 */,
-  46 /* Group of ? */,
-  371 /* Id of ReduceAction731 */,
-  3 /* Color of ReduceAction731 */,
-  46 /* Group of ? */,
-  367 /* Id of ReduceAction732 */,
-  3 /* Color of ReduceAction732 */,
-  46 /* Group of ? */,
-  363 /* Id of ReduceAction733 */,
-  3 /* Color of ReduceAction733 */,
-  46 /* Group of ? */,
-  359 /* Id of ReduceAction734 */,
-  3 /* Color of ReduceAction734 */,
-  46 /* Group of ? */,
-  355 /* Id of ReduceAction735 */,
-  3 /* Color of ReduceAction735 */,
-  46 /* Group of ? */,
-  351 /* Id of ReduceAction736 */,
-  3 /* Color of ReduceAction736 */,
-  46 /* Group of ? */,
-  347 /* Id of ReduceAction737 */,
-  3 /* Color of ReduceAction737 */,
-  46 /* Group of ? */,
-};
-const char *LOCATE_parser_prod = "./parser//parser_prod.nit";
-const int SFT_parser_prod[131] = {
-  1 /* Group of ? */,
   50 /* Group of ? */,
+  63 /* Id of ReduceAction */,
+  3 /* Color of ReduceAction */,
+  45 /* Group of ? */,
+  1835 /* Id of ReduceAction0 */,
+  4 /* Color of ReduceAction0 */,
   2 /* Group of ? */,
-  64 /* Group of ? */,
-  7 /* Id of Visitor */,
-  2 /* Color of Visitor */,
-  43 /* Group of ? */,
-  72 /* Group of ? */,
-  71 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  79 /* Group of ? */,
-  78 /* Group of ? */,
-  78 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
-  73 /* Group of ? */,
-  75 /* Group of ? */,
-  83 /* Group of ? */,
-  84 /* Group of ? */,
-  96 /* Group of ? */,
-  96 /* Group of ? */,
-  96 /* Group of ? */,
-  97 /* Group of ? */,
-  107 /* Group of ? */,
-  104 /* Group of ? */,
-  81 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  74 /* Group of ? */,
-  81 /* Group of ? */,
-  74 /* Group of ? */,
-  77 /* Group of ? */,
-  86 /* Group of ? */,
-  88 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  89 /* Group of ? */,
-  95 /* Group of ? */,
-  86 /* Group of ? */,
-  90 /* Group of ? */,
-  115 /* Group of ? */,
-  122 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  129 /* Group of ? */,
-  86 /* Group of ? */,
-  129 /* Group of ? */,
-  127 /* Group of ? */,
-  127 /* Group of ? */,
-  127 /* Group of ? */,
-  127 /* Group of ? */,
-  86 /* Group of ? */,
-  127 /* Group of ? */,
-  127 /* Group of ? */,
-  127 /* Group of ? */,
-  127 /* Group of ? */,
-  127 /* Group of ? */,
-  127 /* Group of ? */,
-  122 /* Group of ? */,
-  110 /* Group of ? */,
-  106 /* Group of ? */,
-  70 /* Group of ? */,
-  70 /* Group of ? */,
-  129 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  112 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  122 /* Group of ? */,
-  107 /* Group of ? */,
-  91 /* Group of ? */,
-  70 /* Group of ? */,
-  70 /* Group of ? */,
-  87 /* Group of ? */,
-  95 /* Group of ? */,
-  95 /* Group of ? */,
-  89 /* Group of ? */,
-  88 /* Group of ? */,
-  93 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  90 /* Group of ? */,
-  90 /* Group of ? */,
-  90 /* Group of ? */,
-  90 /* Group of ? */,
-  90 /* Group of ? */,
-  89 /* Group of ? */,
-  86 /* Group of ? */,
-  86 /* Group of ? */,
-  106 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  82 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  70 /* Group of ? */,
-};
-const char *LOCATE_lexer = "./parser//lexer.nit";
-const int SFT_lexer[95] = {
-  3 /* Group of ? */,
-  65 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  72 /* Group of ? */,
-  7 /* Group of ? */,
-  75 /* Group of ? */,
-  135 /* Id of Lexer */,
-  2 /* Color of Lexer */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-};
-const char *LOCATE_parser_nodes = "./parser//parser_nodes.nit";
-const int SFT_parser_nodes[836] = {
-  63 /* Id of PNode */,
-  2 /* Color of PNode */,
-  60 /* Group of ? */,
-  207 /* Id of Token */,
-  3 /* Color of Token */,
-  71 /* Group of ? */,
-  3191 /* Id of Prod */,
-  3 /* Color of Prod */,
-  69 /* Group of ? */,
-  3719 /* Id of TEol */,
-  4 /* Color of TEol */,
-  73 /* Group of ? */,
-  3743 /* Id of TComment */,
-  4 /* Color of TComment */,
-  73 /* Group of ? */,
-  3567 /* Id of TKwpackage */,
-  4 /* Color of TKwpackage */,
-  73 /* Group of ? */,
-  3631 /* Id of TKwimport */,
-  4 /* Color of TKwimport */,
-  73 /* Group of ? */,
-  3667 /* Id of TKwclass */,
-  4 /* Color of TKwclass */,
-  73 /* Group of ? */,
-  3691 /* Id of TKwabstract */,
-  4 /* Color of TKwabstract */,
-  73 /* Group of ? */,
-  3619 /* Id of TKwinterface */,
-  4 /* Color of TKwinterface */,
-  73 /* Group of ? */,
-  3519 /* Id of TKwuniversal */,
-  4 /* Color of TKwuniversal */,
-  73 /* Group of ? */,
-  3539 /* Id of TKwspecial */,
-  4 /* Color of TKwspecial */,
-  73 /* Group of ? */,
-  3651 /* Id of TKwend */,
-  4 /* Color of TKwend */,
-  73 /* Group of ? */,
-  3595 /* Id of TKwmeth */,
-  4 /* Color of TKwmeth */,
-  73 /* Group of ? */,
-  3523 /* Id of TKwtype */,
-  4 /* Color of TKwtype */,
-  73 /* Group of ? */,
-  3675 /* Id of TKwattr */,
-  4 /* Color of TKwattr */,
-  73 /* Group of ? */,
-  3623 /* Id of TKwinit */,
-  4 /* Color of TKwinit */,
-  73 /* Group of ? */,
-  3551 /* Id of TKwredef */,
-  4 /* Color of TKwredef */,
-  73 /* Group of ? */,
-  3607 /* Id of TKwis */,
-  4 /* Color of TKwis */,
-  73 /* Group of ? */,
-  3659 /* Id of TKwdo */,
-  4 /* Color of TKwdo */,
-  73 /* Group of ? */,
-  3555 /* Id of TKwreadable */,
-  4 /* Color of TKwreadable */,
-  73 /* Group of ? */,
-  3503 /* Id of TKwwritable */,
-  4 /* Color of TKwwritable */,
-  73 /* Group of ? */,
-  3515 /* Id of TKwvar */,
-  4 /* Color of TKwvar */,
-  73 /* Group of ? */,
-  3615 /* Id of TKwintern */,
-  4 /* Color of TKwintern */,
-  73 /* Group of ? */,
-  3647 /* Id of TKwextern */,
-  4 /* Color of TKwextern */,
-  73 /* Group of ? */,
-  3559 /* Id of TKwprotected */,
-  4 /* Color of TKwprotected */,
-  73 /* Group of ? */,
-  3563 /* Id of TKwprivate */,
-  4 /* Color of TKwprivate */,
-  73 /* Group of ? */,
-  3611 /* Id of TKwintrude */,
-  4 /* Color of TKwintrude */,
-  73 /* Group of ? */,
-  3635 /* Id of TKwif */,
-  4 /* Color of TKwif */,
-  73 /* Group of ? */,
-  3531 /* Id of TKwthen */,
-  4 /* Color of TKwthen */,
-  73 /* Group of ? */,
-  3655 /* Id of TKwelse */,
-  4 /* Color of TKwelse */,
-  73 /* Group of ? */,
-  3511 /* Id of TKwwhile */,
-  4 /* Color of TKwwhile */,
-  73 /* Group of ? */,
-  3639 /* Id of TKwfor */,
-  4 /* Color of TKwfor */,
-  73 /* Group of ? */,
-  3627 /* Id of TKwin */,
-  4 /* Color of TKwin */,
-  73 /* Group of ? */,
-  3687 /* Id of TKwand */,
-  4 /* Color of TKwand */,
-  73 /* Group of ? */,
-  3571 /* Id of TKwor */,
-  4 /* Color of TKwor */,
-  73 /* Group of ? */,
-  3587 /* Id of TKwnot */,
-  4 /* Color of TKwnot */,
-  73 /* Group of ? */,
-  3547 /* Id of TKwreturn */,
-  4 /* Color of TKwreturn */,
-  73 /* Group of ? */,
-  3663 /* Id of TKwcontinue */,
-  4 /* Color of TKwcontinue */,
-  73 /* Group of ? */,
-  3671 /* Id of TKwbreak */,
-  4 /* Color of TKwbreak */,
-  73 /* Group of ? */,
-  3695 /* Id of TKwabort */,
-  4 /* Color of TKwabort */,
-  73 /* Group of ? */,
-  3679 /* Id of TKwassert */,
-  4 /* Color of TKwassert */,
-  73 /* Group of ? */,
-  3591 /* Id of TKwnew */,
-  4 /* Color of TKwnew */,
-  73 /* Group of ? */,
-  3603 /* Id of TKwisa */,
-  4 /* Color of TKwisa */,
-  73 /* Group of ? */,
-  3575 /* Id of TKwonce */,
-  4 /* Color of TKwonce */,
-  73 /* Group of ? */,
-  3535 /* Id of TKwsuper */,
-  4 /* Color of TKwsuper */,
-  73 /* Group of ? */,
-  3543 /* Id of TKwself */,
-  4 /* Color of TKwself */,
-  73 /* Group of ? */,
-  3527 /* Id of TKwtrue */,
-  4 /* Color of TKwtrue */,
-  73 /* Group of ? */,
-  3643 /* Id of TKwfalse */,
-  4 /* Color of TKwfalse */,
-  73 /* Group of ? */,
-  3583 /* Id of TKwnull */,
-  4 /* Color of TKwnull */,
-  73 /* Group of ? */,
-  3683 /* Id of TKwas */,
-  4 /* Color of TKwas */,
-  73 /* Group of ? */,
-  3507 /* Id of TKwwith */,
-  4 /* Color of TKwwith */,
-  73 /* Group of ? */,
-  3579 /* Id of TKwnullable */,
-  4 /* Color of TKwnullable */,
-  73 /* Group of ? */,
-  3599 /* Id of TKwisset */,
-  4 /* Color of TKwisset */,
-  73 /* Group of ? */,
-  3467 /* Id of TOpar */,
-  4 /* Color of TOpar */,
-  73 /* Group of ? */,
-  3739 /* Id of TCpar */,
-  4 /* Color of TCpar */,
-  73 /* Group of ? */,
-  3471 /* Id of TObra */,
-  4 /* Color of TObra */,
-  73 /* Group of ? */,
-  3763 /* Id of TCbra */,
-  4 /* Color of TCbra */,
-  73 /* Group of ? */,
-  3747 /* Id of TComma */,
-  4 /* Color of TComma */,
-  73 /* Group of ? */,
-  3751 /* Id of TColumn */,
-  4 /* Color of TColumn */,
-  73 /* Group of ? */,
-  3451 /* Id of TQuad */,
-  4 /* Color of TQuad */,
-  73 /* Group of ? */,
-  3771 /* Id of TAssign */,
-  4 /* Color of TAssign */,
-  73 /* Group of ? */,
-  3455 /* Id of TPluseq */,
-  4 /* Color of TPluseq */,
-  73 /* Group of ? */,
-  3483 /* Id of TMinuseq */,
-  4 /* Color of TMinuseq */,
-  73 /* Group of ? */,
-  3727 /* Id of TDotdotdot */,
-  4 /* Color of TDotdotdot */,
-  73 /* Group of ? */,
-  3731 /* Id of TDotdot */,
-  4 /* Color of TDotdot */,
-  73 /* Group of ? */,
-  3735 /* Id of TDot */,
-  4 /* Color of TDot */,
-  73 /* Group of ? */,
-  3459 /* Id of TPlus */,
-  4 /* Color of TPlus */,
-  73 /* Group of ? */,
-  3487 /* Id of TMinus */,
-  4 /* Color of TMinus */,
-  73 /* Group of ? */,
-  3443 /* Id of TStar */,
-  4 /* Color of TStar */,
-  73 /* Group of ? */,
-  3447 /* Id of TSlash */,
-  4 /* Color of TSlash */,
-  73 /* Group of ? */,
-  3463 /* Id of TPercent */,
-  4 /* Color of TPercent */,
-  73 /* Group of ? */,
-  3715 /* Id of TEq */,
-  4 /* Color of TEq */,
-  73 /* Group of ? */,
-  3479 /* Id of TNe */,
-  4 /* Color of TNe */,
-  73 /* Group of ? */,
-  3495 /* Id of TLt */,
-  4 /* Color of TLt */,
-  73 /* Group of ? */,
-  3499 /* Id of TLe */,
-  4 /* Color of TLe */,
-  73 /* Group of ? */,
-  3703 /* Id of TGt */,
-  4 /* Color of TGt */,
-  73 /* Group of ? */,
-  3707 /* Id of TGe */,
-  4 /* Color of TGe */,
-  73 /* Group of ? */,
-  3439 /* Id of TStarship */,
-  4 /* Color of TStarship */,
-  73 /* Group of ? */,
-  3755 /* Id of TClassid */,
-  4 /* Color of TClassid */,
-  73 /* Group of ? */,
-  3699 /* Id of TId */,
-  4 /* Color of TId */,
-  73 /* Group of ? */,
-  3767 /* Id of TAttrid */,
-  4 /* Color of TAttrid */,
-  73 /* Group of ? */,
-  3475 /* Id of TNumber */,
-  4 /* Color of TNumber */,
-  73 /* Group of ? */,
-  3711 /* Id of TFloat */,
-  4 /* Color of TFloat */,
-  73 /* Group of ? */,
-  3759 /* Id of TChar */,
-  4 /* Color of TChar */,
-  73 /* Group of ? */,
-  3431 /* Id of TString */,
-  4 /* Color of TString */,
-  73 /* Group of ? */,
-  3435 /* Id of TStartString */,
-  4 /* Color of TStartString */,
-  73 /* Group of ? */,
-  3491 /* Id of TMidString */,
-  4 /* Color of TMidString */,
-  73 /* Group of ? */,
-  3723 /* Id of TEndString */,
-  4 /* Color of TEndString */,
-  73 /* Group of ? */,
-  3967 /* Id of EOF */,
-  4 /* Color of EOF */,
-  73 /* Group of ? */,
-  4031 /* Id of PError */,
-  5 /* Color of PError */,
-  78 /* Group of ? */,
-  3823 /* Id of PModule */,
-  4 /* Color of PModule */,
-  70 /* Group of ? */,
-  3819 /* Id of PPackagedecl */,
-  4 /* Color of PPackagedecl */,
-  70 /* Group of ? */,
-  3831 /* Id of PImport */,
-  4 /* Color of PImport */,
-  72 /* Group of ? */,
-  3791 /* Id of PVisibility */,
-  4 /* Color of PVisibility */,
-  71 /* Group of ? */,
-  3859 /* Id of PClassdef */,
-  4 /* Color of PClassdef */,
-  76 /* Group of ? */,
-  3855 /* Id of PClasskind */,
-  4 /* Color of PClasskind */,
-  73 /* Group of ? */,
-  3835 /* Id of PFormaldef */,
-  4 /* Color of PFormaldef */,
-  70 /* Group of ? */,
-  3799 /* Id of PSuperclass */,
-  4 /* Color of PSuperclass */,
-  70 /* Group of ? */,
-  3811 /* Id of PPropdef */,
-  4 /* Color of PPropdef */,
-  4 /* Group of ? */,
-  74 /* Group of ? */,
-  3867 /* Id of PAble */,
-  4 /* Color of PAble */,
-  4 /* Group of ? */,
-  70 /* Group of ? */,
-  3827 /* Id of PMethid */,
-  4 /* Color of PMethid */,
-  72 /* Group of ? */,
-  3803 /* Id of PSignature */,
-  4 /* Color of PSignature */,
-  72 /* Group of ? */,
-  3815 /* Id of PParam */,
-  4 /* Color of PParam */,
-  7 /* Group of ? */,
-  76 /* Group of ? */,
-  3851 /* Id of PClosureDecl */,
-  4 /* Color of PClosureDecl */,
-  72 /* Group of ? */,
-  3795 /* Id of PType */,
-  4 /* Color of PType */,
-  75 /* Group of ? */,
-  3839 /* Id of PExpr */,
-  5 /* Color of PExpr */,
-  80 /* Group of ? */,
-  3863 /* Id of PAssignOp */,
-  4 /* Color of PAssignOp */,
-  71 /* Group of ? */,
-  3847 /* Id of PClosureDef */,
-  4 /* Color of PClosureDef */,
-  79 /* Group of ? */,
-  3807 /* Id of PQualified */,
-  4 /* Color of PQualified */,
-  70 /* Group of ? */,
-  3843 /* Id of PDoc */,
-  4 /* Color of PDoc */,
-  70 /* Group of ? */,
-  4215 /* Id of AModule */,
-  5 /* Color of AModule */,
-  4 /* Group of ? */,
-  74 /* Group of ? */,
-  4199 /* Id of APackagedecl */,
-  5 /* Color of APackagedecl */,
-  4 /* Group of ? */,
-  73 /* Group of ? */,
-  4255 /* Id of AImport */,
-  5 /* Color of AImport */,
-  4 /* Group of ? */,
-  75 /* Group of ? */,
-  4207 /* Id of ANoImport */,
-  5 /* Color of ANoImport */,
-  4 /* Group of ? */,
-  75 /* Group of ? */,
-  4167 /* Id of APublicVisibility */,
-  5 /* Color of APublicVisibility */,
-  74 /* Group of ? */,
-  4179 /* Id of APrivateVisibility */,
-  5 /* Color of APrivateVisibility */,
-  4 /* Group of ? */,
-  74 /* Group of ? */,
-  4175 /* Id of AProtectedVisibility */,
-  5 /* Color of AProtectedVisibility */,
-  4 /* Group of ? */,
-  74 /* Group of ? */,
-  4243 /* Id of AIntrudeVisibility */,
-  5 /* Color of AIntrudeVisibility */,
-  4 /* Group of ? */,
-  74 /* Group of ? */,
-  4319 /* Id of AClassdef */,
-  5 /* Color of AClassdef */,
-  5 /* Group of ? */,
-  81 /* Group of ? */,
-  4111 /* Id of ATopClassdef */,
-  5 /* Color of ATopClassdef */,
-  5 /* Group of ? */,
-  80 /* Group of ? */,
-  4231 /* Id of AMainClassdef */,
-  5 /* Color of AMainClassdef */,
-  5 /* Group of ? */,
-  80 /* Group of ? */,
-  4307 /* Id of AConcreteClasskind */,
-  5 /* Color of AConcreteClasskind */,
-  4 /* Group of ? */,
-  76 /* Group of ? */,
-  4375 /* Id of AAbstractClasskind */,
-  5 /* Color of AAbstractClasskind */,
-  4 /* Group of ? */,
-  76 /* Group of ? */,
-  4247 /* Id of AInterfaceClasskind */,
-  5 /* Color of AInterfaceClasskind */,
-  4 /* Group of ? */,
-  76 /* Group of ? */,
-  4095 /* Id of AUniversalClasskind */,
-  5 /* Color of AUniversalClasskind */,
-  4 /* Group of ? */,
-  76 /* Group of ? */,
-  4279 /* Id of AFormaldef */,
-  5 /* Color of AFormaldef */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4119 /* Id of ASuperclass */,
-  5 /* Color of ASuperclass */,
-  5 /* Group of ? */,
-  77 /* Group of ? */,
-  4347 /* Id of AAttrPropdef */,
-  5 /* Color of AAttrPropdef */,
-  8 /* Group of ? */,
-  85 /* Group of ? */,
-  4227 /* Id of AMethPropdef */,
-  5 /* Color of AMethPropdef */,
-  7 /* Group of ? */,
-  86 /* Group of ? */,
-  4519 /* Id of ADeferredMethPropdef */,
-  6 /* Color of ADeferredMethPropdef */,
-  12 /* Group of ? */,
-  98 /* Group of ? */,
-  4491 /* Id of AInternMethPropdef */,
-  6 /* Color of AInternMethPropdef */,
-  12 /* Group of ? */,
-  98 /* Group of ? */,
-  4507 /* Id of AExternMethPropdef */,
-  6 /* Color of AExternMethPropdef */,
-  12 /* Group of ? */,
-  98 /* Group of ? */,
-  4527 /* Id of AConcreteMethPropdef */,
-  6 /* Color of AConcreteMethPropdef */,
-  12 /* Group of ? */,
-  99 /* Group of ? */,
-  4583 /* Id of AConcreteInitPropdef */,
-  7 /* Color of AConcreteInitPropdef */,
-  16 /* Group of ? */,
-  109 /* Group of ? */,
-  4579 /* Id of AMainMethPropdef */,
-  7 /* Color of AMainMethPropdef */,
-  106 /* Group of ? */,
-  4099 /* Id of ATypePropdef */,
-  5 /* Color of ATypePropdef */,
-  6 /* Group of ? */,
-  83 /* Group of ? */,
-  4155 /* Id of AReadAble */,
-  5 /* Color of AReadAble */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4083 /* Id of AWriteAble */,
-  5 /* Color of AWriteAble */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4267 /* Id of AIdMethid */,
-  5 /* Color of AIdMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4183 /* Id of APlusMethid */,
-  5 /* Color of APlusMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4219 /* Id of AMinusMethid */,
-  5 /* Color of AMinusMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4131 /* Id of AStarMethid */,
-  5 /* Color of AStarMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4135 /* Id of ASlashMethid */,
-  5 /* Color of ASlashMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4191 /* Id of APercentMethid */,
-  5 /* Color of APercentMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4287 /* Id of AEqMethid */,
-  5 /* Color of AEqMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4211 /* Id of ANeMethid */,
-  5 /* Color of ANeMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4239 /* Id of ALeMethid */,
-  5 /* Color of ALeMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4275 /* Id of AGeMethid */,
-  5 /* Color of AGeMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4235 /* Id of ALtMethid */,
-  5 /* Color of ALtMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4271 /* Id of AGtMethid */,
-  5 /* Color of AGtMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4335 /* Id of ABraMethid */,
-  5 /* Color of ABraMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4127 /* Id of AStarshipMethid */,
-  5 /* Color of AStarshipMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4355 /* Id of AAssignMethid */,
-  5 /* Color of AAssignMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4331 /* Id of ABraassignMethid */,
-  5 /* Color of ABraassignMethid */,
-  5 /* Group of ? */,
-  75 /* Group of ? */,
-  4139 /* Id of ASignature */,
-  5 /* Color of ASignature */,
-  4 /* Group of ? */,
-  76 /* Group of ? */,
-  4195 /* Id of AParam */,
-  5 /* Color of AParam */,
-  9 /* Group of ? */,
-  83 /* Group of ? */,
-  4315 /* Id of AClosureDecl */,
-  5 /* Color of AClosureDecl */,
-  5 /* Group of ? */,
-  76 /* Group of ? */,
-  4107 /* Id of AType */,
-  5 /* Color of AType */,
-  7 /* Group of ? */,
-  79 /* Group of ? */,
-  4343 /* Id of ABlockExpr */,
-  6 /* Color of ABlockExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4087 /* Id of AVardeclExpr */,
-  6 /* Color of AVardeclExpr */,
-  10 /* Group of ? */,
-  90 /* Group of ? */,
-  4147 /* Id of AReturnExpr */,
-  6 /* Color of AReturnExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4327 /* Id of ABreakExpr */,
-  6 /* Color of ABreakExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4383 /* Id of AAbortExpr */,
-  6 /* Color of AAbortExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4303 /* Id of AContinueExpr */,
-  6 /* Color of AContinueExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4295 /* Id of ADoExpr */,
-  6 /* Color of ADoExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4263 /* Id of AIfExpr */,
-  6 /* Color of AIfExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4259 /* Id of AIfexprExpr */,
-  6 /* Color of AIfexprExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4431 /* Id of AWhileExpr */,
-  7 /* Color of AWhileExpr */,
-  10 /* Group of ? */,
-  91 /* Group of ? */,
-  4499 /* Id of AForExpr */,
-  7 /* Color of AForExpr */,
-  15 /* Group of ? */,
-  97 /* Group of ? */,
-  4363 /* Id of AAssertExpr */,
-  6 /* Color of AAssertExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4359 /* Id of AAssignFormExpr */,
-  6 /* Color of AAssignFormExpr */,
-  11 /* Group of ? */,
-  91 /* Group of ? */,
-  4151 /* Id of AReassignFormExpr */,
-  6 /* Color of AReassignFormExpr */,
-  12 /* Group of ? */,
-  93 /* Group of ? */,
-  4471 /* Id of AOnceExpr */,
-  7 /* Color of AOnceExpr */,
-  10 /* Group of ? */,
-  92 /* Group of ? */,
-  4591 /* Id of ASendExpr */,
-  9 /* Color of ASendExpr */,
-  16 /* Group of ? */,
-  117 /* Group of ? */,
-  4615 /* Id of ABinopExpr */,
-  10 /* Color of ABinopExpr */,
-  18 /* Group of ? */,
-  124 /* Group of ? */,
-  4339 /* Id of ABoolExpr */,
-  6 /* Color of ABoolExpr */,
-  72 /* Group of ? */,
-  4467 /* Id of AOrExpr */,
-  7 /* Color of AOrExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4551 /* Id of AAndExpr */,
-  7 /* Color of AAndExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4475 /* Id of ANotExpr */,
-  7 /* Color of ANotExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4663 /* Id of AEqExpr */,
-  11 /* Color of AEqExpr */,
-  131 /* Group of ? */,
-  4515 /* Id of AEeExpr */,
-  7 /* Color of AEeExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4639 /* Id of ANeExpr */,
-  11 /* Color of ANeExpr */,
-  131 /* Group of ? */,
-  4647 /* Id of ALtExpr */,
-  11 /* Color of ALtExpr */,
-  129 /* Group of ? */,
-  4651 /* Id of ALeExpr */,
-  11 /* Color of ALeExpr */,
-  129 /* Group of ? */,
-  4655 /* Id of AGtExpr */,
-  11 /* Color of AGtExpr */,
-  129 /* Group of ? */,
-  4659 /* Id of AGeExpr */,
-  11 /* Color of AGeExpr */,
-  129 /* Group of ? */,
-  4487 /* Id of AIsaExpr */,
-  7 /* Color of AIsaExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4631 /* Id of APlusExpr */,
-  11 /* Color of APlusExpr */,
-  129 /* Group of ? */,
-  4643 /* Id of AMinusExpr */,
-  11 /* Color of AMinusExpr */,
-  129 /* Group of ? */,
-  4619 /* Id of AStarshipExpr */,
-  11 /* Color of AStarshipExpr */,
-  129 /* Group of ? */,
-  4623 /* Id of AStarExpr */,
-  11 /* Color of AStarExpr */,
-  129 /* Group of ? */,
-  4627 /* Id of ASlashExpr */,
-  11 /* Color of ASlashExpr */,
-  129 /* Group of ? */,
-  4635 /* Id of APercentExpr */,
-  11 /* Color of APercentExpr */,
-  129 /* Group of ? */,
-  4595 /* Id of AUminusExpr */,
-  10 /* Color of AUminusExpr */,
-  18 /* Group of ? */,
-  124 /* Group of ? */,
-  4575 /* Id of ANewExpr */,
-  8 /* Color of ANewExpr */,
-  16 /* Group of ? */,
-  112 /* Group of ? */,
-  4351 /* Id of AAttrFormExpr */,
-  4 /* Color of AAttrFormExpr */,
-  16 /* Group of ? */,
-  101 /* Group of ? */,
-  4539 /* Id of AAttrExpr */,
-  6 /* Color of AAttrExpr */,
-  108 /* Group of ? */,
-  4543 /* Id of AAttrAssignExpr */,
-  7 /* Color of AAttrAssignExpr */,
-  72 /* Group of ? */,
-  4607 /* Id of ACallFormExpr */,
-  11 /* Color of ACallFormExpr */,
-  18 /* Group of ? */,
-  124 /* Group of ? */,
-  4535 /* Id of AAttrReassignExpr */,
-  7 /* Color of AAttrReassignExpr */,
-  72 /* Group of ? */,
-  4671 /* Id of ACallExpr */,
-  12 /* Color of ACallExpr */,
-  131 /* Group of ? */,
-  4675 /* Id of ACallAssignExpr */,
-  10 /* Color of ACallAssignExpr */,
-  88 /* Group of ? */,
-  4667 /* Id of ACallReassignExpr */,
-  12 /* Color of ACallReassignExpr */,
-  88 /* Group of ? */,
-  4587 /* Id of ASuperExpr */,
-  9 /* Color of ASuperExpr */,
-  17 /* Group of ? */,
-  114 /* Group of ? */,
-  4603 /* Id of AInitExpr */,
-  10 /* Color of AInitExpr */,
-  18 /* Group of ? */,
-  124 /* Group of ? */,
-  4611 /* Id of ABraFormExpr */,
-  11 /* Color of ABraFormExpr */,
-  18 /* Group of ? */,
-  86 /* Group of ? */,
-  4683 /* Id of ABraExpr */,
-  12 /* Color of ABraExpr */,
-  124 /* Group of ? */,
-  4687 /* Id of ABraAssignExpr */,
-  10 /* Color of ABraAssignExpr */,
-  124 /* Group of ? */,
-  4091 /* Id of AVarFormExpr */,
-  4 /* Color of AVarFormExpr */,
-  10 /* Group of ? */,
-  88 /* Group of ? */,
-  4679 /* Id of ABraReassignExpr */,
-  12 /* Color of ABraReassignExpr */,
-  124 /* Group of ? */,
-  4531 /* Id of AClosureCallExpr */,
-  6 /* Color of AClosureCallExpr */,
-  12 /* Group of ? */,
-  109 /* Group of ? */,
-  4439 /* Id of AVarExpr */,
-  6 /* Color of AVarExpr */,
-  93 /* Group of ? */,
-  4443 /* Id of AVarAssignExpr */,
-  7 /* Color of AVarAssignExpr */,
-  72 /* Group of ? */,
-  4435 /* Id of AVarReassignExpr */,
-  7 /* Color of AVarReassignExpr */,
-  72 /* Group of ? */,
-  4159 /* Id of ARangeExpr */,
-  6 /* Color of ARangeExpr */,
-  10 /* Group of ? */,
-  89 /* Group of ? */,
-  4523 /* Id of ACrangeExpr */,
-  7 /* Color of ACrangeExpr */,
-  97 /* Group of ? */,
-  4463 /* Id of AOrangeExpr */,
-  7 /* Color of AOrangeExpr */,
-  97 /* Group of ? */,
-  4371 /* Id of AArrayExpr */,
-  6 /* Color of AArrayExpr */,
-  11 /* Group of ? */,
-  91 /* Group of ? */,
-  4143 /* Id of ASelfExpr */,
-  6 /* Color of ASelfExpr */,
-  10 /* Group of ? */,
-  90 /* Group of ? */,
-  4495 /* Id of AImplicitSelfExpr */,
-  7 /* Color of AImplicitSelfExpr */,
-  95 /* Group of ? */,
-  4447 /* Id of ATrueExpr */,
-  7 /* Color of ATrueExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4503 /* Id of AFalseExpr */,
-  7 /* Color of AFalseExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4203 /* Id of ANullExpr */,
-  6 /* Color of ANullExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4251 /* Id of AIntExpr */,
-  6 /* Color of AIntExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4283 /* Id of AFloatExpr */,
-  6 /* Color of AFloatExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4323 /* Id of ACharExpr */,
-  6 /* Color of ACharExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4123 /* Id of AStringFormExpr */,
-  6 /* Color of AStringFormExpr */,
-  89 /* Group of ? */,
-  4451 /* Id of AStringExpr */,
-  7 /* Color of AStringExpr */,
-  12 /* Group of ? */,
-  92 /* Group of ? */,
-  4455 /* Id of AStartStringExpr */,
-  7 /* Color of AStartStringExpr */,
-  12 /* Group of ? */,
-  92 /* Group of ? */,
-  4479 /* Id of AMidStringExpr */,
-  7 /* Color of AMidStringExpr */,
-  12 /* Group of ? */,
-  92 /* Group of ? */,
-  4511 /* Id of AEndStringExpr */,
-  7 /* Color of AEndStringExpr */,
-  12 /* Group of ? */,
-  92 /* Group of ? */,
-  4115 /* Id of ASuperstringExpr */,
-  6 /* Color of ASuperstringExpr */,
-  13 /* Group of ? */,
-  92 /* Group of ? */,
-  4459 /* Id of AParExpr */,
-  7 /* Color of AParExpr */,
-  91 /* Group of ? */,
-  4171 /* Id of AProxyExpr */,
-  6 /* Color of AProxyExpr */,
-  9 /* Group of ? */,
-  86 /* Group of ? */,
-  4547 /* Id of AAsCastExpr */,
-  6 /* Color of AAsCastExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4367 /* Id of AAsNotnullExpr */,
-  6 /* Color of AAsNotnullExpr */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  4483 /* Id of AIssetAttrExpr */,
-  6 /* Color of AIssetAttrExpr */,
-  18 /* Group of ? */,
-  108 /* Group of ? */,
-  4187 /* Id of APlusAssignOp */,
-  5 /* Color of APlusAssignOp */,
-  4 /* Group of ? */,
-  74 /* Group of ? */,
-  4223 /* Id of AMinusAssignOp */,
-  5 /* Color of AMinusAssignOp */,
-  4 /* Group of ? */,
-  74 /* Group of ? */,
-  4311 /* Id of AClosureDef */,
-  5 /* Color of AClosureDef */,
-  9 /* Group of ? */,
-  84 /* Group of ? */,
-  4163 /* Id of AQualified */,
-  5 /* Color of AQualified */,
-  4 /* Group of ? */,
-  73 /* Group of ? */,
-  4291 /* Id of ADoc */,
-  5 /* Color of ADoc */,
-  4 /* Group of ? */,
-  73 /* Group of ? */,
-  3775 /* Id of Start */,
-  4 /* Color of Start */,
-  4 /* Group of ? */,
-  71 /* Group of ? */,
-};
-const char *LOCATE_standard = "./../lib/standard//standard.nit";
-const char *LOCATE_environ = "./../lib/standard//environ.nit";
-const int SFT_environ[2] = {
-  43 /* Group of ? */,
-  43 /* Group of ? */,
-};
-const char *LOCATE_symbol = "./../lib/standard//symbol.nit";
-const int SFT_symbol[5] = {
-  113 /* Group of ? */,
-  23 /* Id of Symbol */,
-  2 /* Color of Symbol */,
-  1 /* Group of ? */,
-  44 /* Group of ? */,
-};
-const char *LOCATE_hash = "./../lib/standard//hash.nit";
-const int SFT_hash[30] = {
-  18 /* Group of ? */,
-  3323 /* Id of HashCollection */,
-  3 /* Color of HashCollection */,
-  1 /* Group of ? */,
-  45 /* Group of ? */,
-  147 /* Id of HashNode */,
-  2 /* Color of HashNode */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  4411 /* Id of HashMap */,
-  9 /* Color of HashMap */,
-  55 /* Group of ? */,
-  3319 /* Id of HashMapNode */,
-  4 /* Color of HashMapNode */,
-  56 /* Group of ? */,
-  3955 /* Id of HashMapIterator */,
-  4 /* Color of HashMapIterator */,
-  1 /* Group of ? */,
-  50 /* Group of ? */,
-  4407 /* Id of HashSet */,
-  8 /* Color of HashSet */,
-  54 /* Group of ? */,
-  3311 /* Id of HashSetNode */,
-  3 /* Color of HashSetNode */,
-  3 /* Group of ? */,
-  50 /* Group of ? */,
-  3315 /* Id of HashSetIterator */,
-  3 /* Color of HashSetIterator */,
-  1 /* Group of ? */,
-  48 /* Group of ? */,
-};
-const char *LOCATE_string = "./../lib/standard//string.nit";
-const int SFT_string[24] = {
-  4423 /* Id of AbstractString */,
-  12 /* Color of AbstractString */,
+  49 /* Group of ? */,
+  1831 /* Id of ReduceAction1 */,
+  4 /* Color of ReduceAction1 */,
   2 /* Group of ? */,
-  101 /* Group of ? */,
-  4559 /* Id of String */,
-  5 /* Color of String */,
-  114 /* Group of ? */,
-  4563 /* Id of Buffer */,
-  14 /* Color of Buffer */,
-  3 /* Group of ? */,
-  113 /* Group of ? */,
-  19 /* Group of ? */,
-  64 /* Group of ? */,
-  43 /* Group of ? */,
-  58 /* Group of ? */,
-  78 /* Group of ? */,
-  -5 /* Id of NativeString */,
-  2 /* Color of NativeString */,
-  44 /* Group of ? */,
-  27 /* Id of StringCapable */,
-  2 /* Color of StringCapable */,
-  43 /* Group of ? */,
-  1 /* Group of ? */,
-  44 /* Group of ? */,
-};
-const char *LOCATE_array = "./../lib/standard//array.nit";
-const int SFT_array[35] = {
-  4079 /* Id of AbstractArrayRead */,
-  11 /* Color of AbstractArrayRead */,
-  1 /* Group of ? */,
-  94 /* Group of ? */,
-  4427 /* Id of AbstractArray */,
-  13 /* Color of AbstractArray */,
-  46 /* Group of ? */,
-  4567 /* Id of Array */,
-  3 /* Color of Array */,
+  49 /* Group of ? */,
+  1387 /* Id of ReduceAction2 */,
+  4 /* Color of ReduceAction2 */,
   2 /* Group of ? */,
   49 /* Group of ? */,
-  4075 /* Id of ArrayIterator */,
-  5 /* Color of ArrayIterator */,
-  1 /* Group of ? */,
-  52 /* Group of ? */,
-  4415 /* Id of ArraySet */,
-  8 /* Color of ArraySet */,
-  1 /* Group of ? */,
-  78 /* Group of ? */,
-  3387 /* Id of ArraySetIterator */,
-  3 /* Color of ArraySetIterator */,
-  1 /* Group of ? */,
-  48 /* Group of ? */,
-  4419 /* Id of ArrayMap */,
-  9 /* Color of ArrayMap */,
-  1 /* Group of ? */,
-  83 /* Group of ? */,
-  43 /* Group of ? */,
-  59 /* Group of ? */,
-  187 /* Id of ArrayCapable */,
-  2 /* Color of ArrayCapable */,
-  43 /* Group of ? */,
-  -9 /* Id of NativeArray */,
-  2 /* Color of NativeArray */,
-  43 /* Group of ? */,
-};
-const char *LOCATE_abstract_collection = "./../lib/standard//abstract_collection.nit";
-const int SFT_abstract_collection[55] = {
-  175 /* Id of Collection */,
-  4 /* Color of Collection */,
-  60 /* Group of ? */,
-  3227 /* Id of NaiveCollection */,
-  5 /* Color of NaiveCollection */,
-  68 /* Group of ? */,
-  139 /* Id of Iterator */,
-  2 /* Color of Iterator */,
-  44 /* Group of ? */,
-  3355 /* Id of Container */,
-  5 /* Color of Container */,
-  1 /* Group of ? */,
-  68 /* Group of ? */,
-  3351 /* Id of ContainerIterator */,
-  3 /* Color of ContainerIterator */,
-  1 /* Group of ? */,
-  48 /* Group of ? */,
-  231 /* Id of RemovableCollection */,
-  5 /* Color of RemovableCollection */,
-  68 /* Group of ? */,
-  3779 /* Id of SimpleCollection */,
-  7 /* Color of SimpleCollection */,
-  75 /* Group of ? */,
-  4027 /* Id of Set */,
-  6 /* Color of Set */,
-  53 /* Group of ? */,
-  3239 /* Id of MapRead */,
-  6 /* Color of MapRead */,
-  72 /* Group of ? */,
-  3899 /* Id of Map */,
-  8 /* Color of Map */,
-  79 /* Group of ? */,
-  3243 /* Id of MapIterator */,
-  3 /* Color of MapIterator */,
-  48 /* Group of ? */,
-  3943 /* Id of IndexedCollectionRead */,
-  9 /* Color of IndexedCollectionRead */,
-  83 /* Group of ? */,
-  4055 /* Id of IndexedCollection */,
-  10 /* Color of IndexedCollection */,
-  86 /* Group of ? */,
-  3939 /* Id of IndexedIterator */,
-  4 /* Color of IndexedIterator */,
-  50 /* Group of ? */,
-  4071 /* Id of CoupleMap */,
-  7 /* Color of CoupleMap */,
-  53 /* Group of ? */,
-  3971 /* Id of CoupleMapIterator */,
-  4 /* Color of CoupleMapIterator */,
-  1 /* Group of ? */,
-  50 /* Group of ? */,
-  159 /* Id of Couple */,
-  3 /* Color of Couple */,
-  3 /* Group of ? */,
-  50 /* Group of ? */,
-};
-const char *LOCATE_kernel = "./../lib/standard//kernel.nit";
-const int SFT_kernel[27] = {
-  3 /* Id of Object */,
-  1 /* Color of Object */,
-  23 /* Group of ? */,
-  19 /* Id of Sys */,
-  2 /* Color of Sys */,
-  48 /* Group of ? */,
-  167 /* Id of Comparable */,
-  3 /* Color of Comparable */,
+  1007 /* Id of ReduceAction3 */,
+  4 /* Color of ReduceAction3 */,
+  2 /* Group of ? */,
   49 /* Group of ? */,
-  3347 /* Id of Discrete */,
-  4 /* Color of Discrete */,
-  58 /* Group of ? */,
-  -17 /* Id of Bool */,
-  2 /* Color of Bool */,
-  43 /* Group of ? */,
-  -13 /* Id of Float */,
-  2 /* Color of Float */,
-  44 /* Group of ? */,
-  -33 /* Id of Int */,
-  5 /* Color of Int */,
-  67 /* Group of ? */,
-  -37 /* Id of Char */,
-  5 /* Color of Char */,
-  64 /* Group of ? */,
-  -1 /* Id of Pointer */,
-  2 /* Color of Pointer */,
-  43 /* Group of ? */,
-};
-const char *LOCATE_time = "./../lib/standard//time.nit";
-const int SFT_time[1] = {
-  31 /* Group of ? */,
-};
-const char *LOCATE_sorter = "./../lib/standard//sorter.nit";
-const int SFT_sorter[6] = {
-  191 /* Id of AbstractSorter */,
-  2 /* Color of AbstractSorter */,
-  43 /* Group of ? */,
-  3363 /* Id of ComparableSorter */,
-  3 /* Color of ComparableSorter */,
-  50 /* Group of ? */,
-};
-const char *LOCATE_file = "./../lib/standard//file.nit";
-const int SFT_file[33] = {
-  32 /* Group of ? */,
-  3335 /* Id of FStream */,
-  6 /* Color of FStream */,
-  1 /* Group of ? */,
+  703 /* Id of ReduceAction4 */,
+  4 /* Color of ReduceAction4 */,
+  2 /* Group of ? */,
   49 /* Group of ? */,
-  4063 /* Id of IFStream */,
-  7 /* Color of IFStream */,
-  5 /* Group of ? */,
-  71 /* Group of ? */,
-  3891 /* Id of OFStream */,
-  5 /* Color of OFStream */,
-  3 /* Group of ? */,
-  60 /* Group of ? */,
-  4387 /* Id of Stdin */,
-  8 /* Color of Stdin */,
-  76 /* Group of ? */,
-  4019 /* Id of Stdout */,
-  7 /* Color of Stdout */,
-  65 /* Group of ? */,
-  4023 /* Id of Stderr */,
-  7 /* Color of Stderr */,
-  65 /* Group of ? */,
-  120 /* Group of ? */,
-  51 /* Group of ? */,
-  -29 /* Id of FileStat */,
-  3 /* Color of FileStat */,
-  44 /* Group of ? */,
-  -25 /* Id of NativeFile */,
-  3 /* Color of NativeFile */,
-  44 /* Group of ? */,
-  79 /* Id of NativeFileCapable */,
-  2 /* Color of NativeFileCapable */,
-  43 /* Group of ? */,
-};
-const char *LOCATE_stream = "./../lib/standard//stream.nit";
-const int SFT_stream[31] = {
-  143 /* Id of IOS */,
-  3 /* Color of IOS */,
-  54 /* Group of ? */,
-  3307 /* Id of IStream */,
-  5 /* Color of IStream */,
-  60 /* Group of ? */,
-  3223 /* Id of OStream */,
-  4 /* Color of OStream */,
-  57 /* Group of ? */,
-  3991 /* Id of BufferedIStream */,
-  4 /* Color of BufferedIStream */,
-  3 /* Group of ? */,
-  67 /* Group of ? */,
-  3951 /* Id of IOStream */,
-  8 /* Color of IOStream */,
-  73 /* Group of ? */,
-  3339 /* Id of FDStream */,
-  2 /* Color of FDStream */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  3963 /* Id of FDIStream */,
-  7 /* Color of FDIStream */,
-  3 /* Group of ? */,
-  51 /* Group of ? */,
-  3959 /* Id of FDOStream */,
-  6 /* Color of FDOStream */,
+  659 /* Id of ReduceAction5 */,
+  4 /* Color of ReduceAction5 */,
   2 /* Group of ? */,
   49 /* Group of ? */,
-  4067 /* Id of FDIOStream */,
-  9 /* Color of FDIOStream */,
-  67 /* Group of ? */,
-};
-const char *LOCATE_string_search = "./../lib/standard//string_search.nit";
-const int SFT_string_search[12] = {
-  51 /* Id of Pattern */,
-  2 /* Color of Pattern */,
-  43 /* Group of ? */,
-  3379 /* Id of BM_Pattern */,
-  3 /* Color of BM_Pattern */,
-  1 /* Group of ? */,
+  615 /* Id of ReduceAction6 */,
+  4 /* Color of ReduceAction6 */,
+  2 /* Group of ? */,
   49 /* Group of ? */,
-  87 /* Id of Match */,
-  2 /* Color of Match */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  128 /* Group of ? */,
-};
-const char *LOCATE_exec = "./../lib/standard//exec.nit";
-const int SFT_exec[20] = {
-  43 /* Id of Process */,
-  2 /* Color of Process */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  3947 /* Id of IProcess */,
-  7 /* Color of IProcess */,
-  3 /* Group of ? */,
-  70 /* Group of ? */,
-  3887 /* Id of OProcess */,
-  6 /* Color of OProcess */,
+  459 /* Id of ReduceAction7 */,
+  4 /* Color of ReduceAction7 */,
   2 /* Group of ? */,
-  67 /* Group of ? */,
-  4059 /* Id of IOProcess */,
-  9 /* Color of IOProcess */,
-  74 /* Group of ? */,
-  43 /* Group of ? */,
-  55 /* Group of ? */,
-  -21 /* Id of NativeProcess */,
-  3 /* Color of NativeProcess */,
-  44 /* Group of ? */,
-};
-const char *LOCATE_list = "./../lib/standard//list.nit";
-const int SFT_list[12] = {
-  4403 /* Id of List */,
-  11 /* Color of List */,
-  1 /* Group of ? */,
-  94 /* Group of ? */,
-  4051 /* Id of ListIterator */,
-  5 /* Color of ListIterator */,
-  1 /* Group of ? */,
-  52 /* Group of ? */,
-  3935 /* Id of ListNode */,
-  6 /* Color of ListNode */,
+  49 /* Group of ? */,
+  415 /* Id of ReduceAction8 */,
+  4 /* Color of ReduceAction8 */,
   2 /* Group of ? */,
-  72 /* Group of ? */,
-};
-const char *LOCATE_range = "./../lib/standard//range.nit";
-const int SFT_range[8] = {
-  3187 /* Id of Range */,
-  5 /* Color of Range */,
-  1 /* Group of ? */,
-  68 /* Group of ? */,
-  3303 /* Id of IteratorRange */,
-  3 /* Color of IteratorRange */,
-  1 /* Group of ? */,
-  48 /* Group of ? */,
-};
-const char *LOCATE_math = "./../lib/standard//math.nit";
-const int SFT_math[3] = {
-  78 /* Group of ? */,
-  55 /* Group of ? */,
-  39 /* Group of ? */,
-};
-const char *LOCATE_parser_tables = "./parser//parser_tables.nit";
-const int SFT_parser_tables[4] = {
-  59 /* Id of ParserTable */,
-  2 /* Color of ParserTable */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-};
-const char *LOCATE_mmloader = "./mmloader.nit";
-const int SFT_mmloader[8] = {
-  203 /* Id of ToolContext */,
-  3 /* Color of ToolContext */,
-  13 /* Group of ? */,
-  67 /* Group of ? */,
-  83 /* Id of ModuleLoader */,
-  2 /* Color of ModuleLoader */,
-  43 /* Group of ? */,
-  44 /* Group of ? */,
-};
-const char *LOCATE_metamodel = "./metamodel//metamodel.nit";
-const char *LOCATE_vararg = "./metamodel//vararg.nit";
-const int SFT_vararg[2] = {
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-};
-const char *LOCATE_genericity = "./metamodel//genericity.nit";
-const int SFT_genericity[11] = {
-  1 /* Group of ? */,
-  46 /* Group of ? */,
-  50 /* Group of ? */,
-  3911 /* Id of MMTypeGeneric */,
-  4 /* Color of MMTypeGeneric */,
-  3 /* Group of ? */,
-  68 /* Group of ? */,
-  3915 /* Id of MMTypeFormalParameter */,
-  4 /* Color of MMTypeFormalParameter */,
-  4 /* Group of ? */,
-  70 /* Group of ? */,
-};
-const char *LOCATE_type_formal = "./metamodel//type_formal.nit";
-const int SFT_type_formal[5] = {
-  51 /* Group of ? */,
-  3255 /* Id of MMTypeFormal */,
-  3 /* Color of MMTypeFormal */,
+  49 /* Group of ? */,
+  371 /* Id of ReduceAction9 */,
+  4 /* Color of ReduceAction9 */,
   2 /* Group of ? */,
-  66 /* Group of ? */,
-};
-const char *LOCATE_inheritance = "./metamodel//inheritance.nit";
-const int SFT_inheritance[18] = {
-  45 /* Group of ? */,
-  3 /* Group of ? */,
-  52 /* Group of ? */,
   49 /* Group of ? */,
-  43 /* Group of ? */,
-  3287 /* Id of MMImplicitLocalClass */,
-  3 /* Color of MMImplicitLocalClass */,
-  106 /* Group of ? */,
-  3275 /* Id of MMRefineAncestor */,
-  3 /* Color of MMRefineAncestor */,
-  3 /* Group of ? */,
-  53 /* Group of ? */,
-  3271 /* Id of MMSpecAncestor */,
-  3 /* Color of MMSpecAncestor */,
-  53 /* Group of ? */,
-  3291 /* Id of MMDefaultAncestor */,
-  3 /* Color of MMDefaultAncestor */,
-  53 /* Group of ? */,
-};
-const char *LOCATE_static_type = "./metamodel//static_type.nit";
-const int SFT_static_type[37] = {
-  5 /* Group of ? */,
-  68 /* Group of ? */,
+  1827 /* Id of ReduceAction10 */,
+  4 /* Color of ReduceAction10 */,
   2 /* Group of ? */,
-  50 /* Group of ? */,
-  95 /* Id of MMSignature */,
-  2 /* Color of MMSignature */,
+  49 /* Group of ? */,
+  1783 /* Id of ReduceAction11 */,
+  4 /* Color of ReduceAction11 */,
   2 /* Group of ? */,
   49 /* Group of ? */,
-  127 /* Id of MMClosure */,
-  2 /* Color of MMClosure */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  131 /* Id of MMAncestor */,
-  2 /* Color of MMAncestor */,
-  1 /* Group of ? */,
-  44 /* Group of ? */,
-  91 /* Id of MMType */,
-  2 /* Color of MMType */,
-  1 /* Group of ? */,
-  52 /* Group of ? */,
-  3279 /* Id of MMNullableType */,
-  3 /* Color of MMNullableType */,
+  1739 /* Id of ReduceAction12 */,
+  4 /* Color of ReduceAction12 */,
   2 /* Group of ? */,
-  66 /* Group of ? */,
-  3259 /* Id of MMTypeClass */,
-  3 /* Color of MMTypeClass */,
+  49 /* Group of ? */,
+  1695 /* Id of ReduceAction13 */,
+  4 /* Color of ReduceAction13 */,
   2 /* Group of ? */,
-  66 /* Group of ? */,
-  3907 /* Id of MMTypeSimpleClass */,
-  4 /* Color of MMTypeSimpleClass */,
-  68 /* Group of ? */,
-  3251 /* Id of MMTypeNone */,
-  3 /* Color of MMTypeNone */,
+  49 /* Group of ? */,
+  1651 /* Id of ReduceAction14 */,
+  4 /* Color of ReduceAction14 */,
   2 /* Group of ? */,
-  66 /* Group of ? */,
-  1 /* Group of ? */,
-  48 /* Group of ? */,
-};
-const char *LOCATE_abstractmetamodel = "./metamodel//abstractmetamodel.nit";
-const int SFT_abstractmetamodel[37] = {
-  123 /* Id of MMContext */,
-  2 /* Color of MMContext */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  119 /* Id of MMDirectory */,
-  2 /* Color of MMDirectory */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  99 /* Id of MMModule */,
-  2 /* Color of MMModule */,
+  49 /* Group of ? */,
+  1607 /* Id of ReduceAction15 */,
+  4 /* Color of ReduceAction15 */,
   2 /* Group of ? */,
   49 /* Group of ? */,
-  115 /* Id of MMGlobalClass */,
-  2 /* Color of MMGlobalClass */,
-  1 /* Group of ? */,
-  47 /* Group of ? */,
-  107 /* Id of MMLocalClass */,
-  2 /* Color of MMLocalClass */,
-  7 /* Group of ? */,
-  72 /* Group of ? */,
-  111 /* Id of MMGlobalProperty */,
-  2 /* Color of MMGlobalProperty */,
-  1 /* Group of ? */,
-  47 /* Group of ? */,
-  103 /* Id of MMLocalProperty */,
-  2 /* Color of MMLocalProperty */,
-  4 /* Group of ? */,
-  53 /* Group of ? */,
-  3299 /* Id of MMAttribute */,
-  3 /* Color of MMAttribute */,
-  68 /* Group of ? */,
-  3283 /* Id of MMMethod */,
-  3 /* Color of MMMethod */,
-  72 /* Group of ? */,
-  3295 /* Id of MMConcreteClass */,
-  3 /* Color of MMConcreteClass */,
-  106 /* Group of ? */,
-};
-const char *LOCATE_partial_order = "./metamodel//partial_order.nit";
-const int SFT_partial_order[8] = {
-  3195 /* Id of PartialOrder */,
-  5 /* Color of PartialOrder */,
-  1 /* Group of ? */,
-  68 /* Group of ? */,
-  55 /* Id of PartialOrderElement */,
-  2 /* Color of PartialOrderElement */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-};
-const char *LOCATE_virtualtype = "./metamodel//virtualtype.nit";
-const int SFT_virtualtype[10] = {
-  46 /* Group of ? */,
-  3247 /* Id of MMTypeProperty */,
-  3 /* Color of MMTypeProperty */,
-  9 /* Group of ? */,
-  65 /* Group of ? */,
-  3903 /* Id of MMVirtualType */,
-  4 /* Color of MMVirtualType */,
-  4 /* Group of ? */,
-  70 /* Group of ? */,
-  99 /* Group of ? */,
-};
-const char *LOCATE_opts = "./../lib/opts.nit";
-const int SFT_opts[34] = {
-  71 /* Id of Option */,
-  2 /* Color of Option */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  3207 /* Id of OptionText */,
-  3 /* Color of OptionText */,
-  59 /* Group of ? */,
-  3219 /* Id of OptionBool */,
-  3 /* Color of OptionBool */,
-  59 /* Group of ? */,
-  3215 /* Id of OptionCount */,
-  3 /* Color of OptionCount */,
-  59 /* Group of ? */,
-  3211 /* Id of OptionParameter */,
-  3 /* Color of OptionParameter */,
-  59 /* Group of ? */,
-  3871 /* Id of OptionString */,
-  4 /* Color of OptionString */,
-  62 /* Group of ? */,
-  3879 /* Id of OptionEnum */,
-  4 /* Color of OptionEnum */,
-  7 /* Group of ? */,
-  62 /* Group of ? */,
-  3875 /* Id of OptionInt */,
-  4 /* Color of OptionInt */,
-  62 /* Group of ? */,
-  3883 /* Id of OptionArray */,
-  4 /* Color of OptionArray */,
-  7 /* Group of ? */,
-  62 /* Group of ? */,
-  67 /* Id of OptionContext */,
-  2 /* Color of OptionContext */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-};
-const char *LOCATE_typing = "./syntax//typing.nit";
-const int SFT_typing[65] = {
-  90 /* Group of ? */,
-  3403 /* Id of TypingVisitor */,
-  4 /* Color of TypingVisitor */,
-  5 /* Group of ? */,
-  73 /* Group of ? */,
-  62 /* Group of ? */,
-  77 /* Group of ? */,
-  104 /* Group of ? */,
-  11 /* Group of ? */,
-  95 /* Group of ? */,
-  96 /* Group of ? */,
-  14 /* Group of ? */,
-  104 /* Group of ? */,
-  10 /* Group of ? */,
-  87 /* Group of ? */,
-  4 /* Group of ? */,
-  76 /* Group of ? */,
-  5 /* Group of ? */,
-  81 /* Group of ? */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  9 /* Group of ? */,
-  88 /* Group of ? */,
-  11 /* Group of ? */,
-  91 /* Group of ? */,
-  70 /* Group of ? */,
-  11 /* Group of ? */,
-  88 /* Group of ? */,
-  9 /* Group of ? */,
-  86 /* Group of ? */,
-  9 /* Group of ? */,
-  86 /* Group of ? */,
-  9 /* Group of ? */,
-  86 /* Group of ? */,
-  94 /* Group of ? */,
-  94 /* Group of ? */,
-  16 /* Group of ? */,
-  111 /* Group of ? */,
-  14 /* Group of ? */,
-  98 /* Group of ? */,
-  4379 /* Id of AAbsAbsSendExpr */,
-  4 /* Color of AAbsAbsSendExpr */,
-  9 /* Group of ? */,
-  99 /* Group of ? */,
-  4555 /* Id of AAbsSendExpr */,
-  7 /* Color of AAbsSendExpr */,
-  14 /* Group of ? */,
-  104 /* Group of ? */,
-  4571 /* Id of ASuperInitCall */,
-  8 /* Color of ASuperInitCall */,
-  70 /* Group of ? */,
-  111 /* Group of ? */,
-  4599 /* Id of ASendReassignExpr */,
-  10 /* Color of ASendReassignExpr */,
-  4 /* Group of ? */,
-  72 /* Group of ? */,
-  127 /* Group of ? */,
-  127 /* Group of ? */,
-  122 /* Group of ? */,
-  4 /* Group of ? */,
-  72 /* Group of ? */,
-  4103 /* Id of ATypeCheckExpr */,
-  4 /* Color of ATypeCheckExpr */,
-  70 /* Group of ? */,
-  89 /* Group of ? */,
-};
-const char *LOCATE_escape = "./syntax//escape.nit";
-const int SFT_escape[16] = {
-  151 /* Id of EscapableContext */,
-  2 /* Color of EscapableContext */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  155 /* Id of EscapableBlock */,
-  2 /* Color of EscapableBlock */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  3343 /* Id of EscapableClosure */,
-  3 /* Color of EscapableClosure */,
+  1563 /* Id of ReduceAction16 */,
+  4 /* Color of ReduceAction16 */,
   2 /* Group of ? */,
   49 /* Group of ? */,
-  3399 /* Id of AEscapeExpr */,
-  4 /* Color of AEscapeExpr */,
-  4 /* Group of ? */,
-  70 /* Group of ? */,
-};
-const char *LOCATE_control_flow = "./syntax//control_flow.nit";
-const int SFT_control_flow[12] = {
-  11 /* Id of VariableContext */,
-  2 /* Color of VariableContext */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  227 /* Id of RootVariableContext */,
-  3 /* Color of RootVariableContext */,
-  62 /* Group of ? */,
-  215 /* Id of SubVariableContext */,
-  3 /* Color of SubVariableContext */,
-  9 /* Group of ? */,
-  62 /* Group of ? */,
-  43 /* Group of ? */,
-};
-const char *LOCATE_compiling = "./compiling//compiling.nit";
-const int SFT_compiling[1] = {
-  69 /* Group of ? */,
-};
-const char *LOCATE_compiling_global = "./compiling//compiling_global.nit";
-const int SFT_compiling_global[76] = {
-  171 /* Id of ColorContext */,
-  2 /* Color of ColorContext */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  3331 /* Id of GlobalAnalysis */,
-  3 /* Color of GlobalAnalysis */,
+  1519 /* Id of ReduceAction17 */,
+  4 /* Color of ReduceAction17 */,
   2 /* Group of ? */,
-  48 /* Group of ? */,
-  3327 /* Id of GlobalCompilerVisitor */,
-  3 /* Color of GlobalCompilerVisitor */,
-  9 /* Group of ? */,
-  68 /* Group of ? */,
-  3359 /* Id of CompiledClass */,
-  3 /* Color of CompiledClass */,
+  49 /* Group of ? */,
+  1475 /* Id of ReduceAction18 */,
+  4 /* Color of ReduceAction18 */,
   2 /* Group of ? */,
-  48 /* Group of ? */,
-  19 /* Group of ? */,
-  107 /* Group of ? */,
-  17 /* Group of ? */,
-  72 /* Group of ? */,
-  195 /* Id of AbsTableElt */,
-  2 /* Color of AbsTableElt */,
-  43 /* Group of ? */,
-  211 /* Id of TableElt */,
-  3 /* Color of TableElt */,
-  46 /* Group of ? */,
-  3231 /* Id of ModuleTableElt */,
-  4 /* Color of ModuleTableElt */,
-  51 /* Group of ? */,
-  3895 /* Id of ModuleTableEltGroup */,
-  5 /* Color of ModuleTableEltGroup */,
-  1 /* Group of ? */,
-  53 /* Group of ? */,
-  3411 /* Id of TableEltProp */,
-  4 /* Color of TableEltProp */,
-  1 /* Group of ? */,
-  51 /* Group of ? */,
-  4003 /* Id of TableEltMeth */,
-  5 /* Color of TableEltMeth */,
-  53 /* Group of ? */,
-  3999 /* Id of TableEltSuper */,
-  5 /* Color of TableEltSuper */,
-  53 /* Group of ? */,
-  4015 /* Id of TableEltAttr */,
-  5 /* Color of TableEltAttr */,
-  53 /* Group of ? */,
-  3391 /* Id of AbsTableEltClass */,
-  5 /* Color of AbsTableEltClass */,
-  1 /* Group of ? */,
-  53 /* Group of ? */,
-  3427 /* Id of TableEltClass */,
-  6 /* Color of TableEltClass */,
-  56 /* Group of ? */,
-  3423 /* Id of TableEltClassId */,
-  3 /* Color of TableEltClassId */,
-  46 /* Group of ? */,
-  4007 /* Id of TableEltClassInitTable */,
-  7 /* Color of TableEltClassInitTable */,
-  57 /* Group of ? */,
-  4011 /* Id of TableEltClassColor */,
-  7 /* Color of TableEltClassColor */,
-  57 /* Group of ? */,
-  3415 /* Id of TableEltComposite */,
-  4 /* Color of TableEltComposite */,
-  1 /* Group of ? */,
-  51 /* Group of ? */,
-  3419 /* Id of TableEltClassSelfId */,
-  4 /* Color of TableEltClassSelfId */,
-  51 /* Group of ? */,
-  3407 /* Id of TableEltVftPointer */,
-  4 /* Color of TableEltVftPointer */,
-  51 /* Group of ? */,
-  3371 /* Id of ClassSorter */,
-  3 /* Color of ClassSorter */,
-  50 /* Group of ? */,
-  101 /* Group of ? */,
-};
-const char *LOCATE_compiling_methods = "./compiling//compiling_methods.nit";
-const int SFT_compiling_methods[33] = {
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  179 /* Id of CFunctionContext */,
-  2 /* Color of CFunctionContext */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  75 /* Id of NitMethodContext */,
-  2 /* Color of NitMethodContext */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  4 /* Group of ? */,
-  51 /* Group of ? */,
-  65 /* Group of ? */,
-  65 /* Group of ? */,
-  43 /* Group of ? */,
-  73 /* Group of ? */,
-  43 /* Group of ? */,
-  77 /* Group of ? */,
-  70 /* Group of ? */,
-  74 /* Group of ? */,
-  4299 /* Id of AControlableBlock */,
-  6 /* Color of AControlableBlock */,
-  86 /* Group of ? */,
-  9 /* Group of ? */,
-  86 /* Group of ? */,
-  110 /* Group of ? */,
-  98 /* Group of ? */,
-  110 /* Group of ? */,
-  70 /* Group of ? */,
-  8 /* Group of ? */,
-  80 /* Group of ? */,
-  70 /* Group of ? */,
-  104 /* Group of ? */,
-};
-const char *LOCATE_compiling_base = "./compiling//compiling_base.nit";
-const int SFT_compiling_base[21] = {
-  5 /* Group of ? */,
-  51 /* Group of ? */,
-  163 /* Id of CompilerVisitor */,
-  2 /* Color of CompilerVisitor */,
-  4 /* Group of ? */,
-  55 /* Group of ? */,
-  183 /* Id of CContext */,
-  2 /* Color of CContext */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  43 /* Group of ? */,
-  43 /* Group of ? */,
-  17 /* Group of ? */,
-  104 /* Group of ? */,
-  47 /* Id of PrimitiveInfo */,
-  2 /* Color of PrimitiveInfo */,
-  1 /* Group of ? */,
-  43 /* Group of ? */,
-  46 /* Group of ? */,
-  1 /* Group of ? */,
-  44 /* Group of ? */,
-};
-const char *LOCATE_utils = "./utils.nit";
-const int SFT_utils[1] = {
-  16 /* Group of ? */,
-};
-const char *LOCATE_nitc = "./nitc.nit";
-const int SFT_nitc[4] = {
-  4035 /* Id of NitCompiler */,
-  5 /* Color of NitCompiler */,
-  26 /* Group of ? */,
-  92 /* Group of ? */,
-};
-const classtable_elt_t VFT_NitCompiler[103] = {
-  {(bigint) 4035 /* 0: Identity */},
-  {(bigint) 3 /* 1: NitCompiler < Object: superclass typecheck marker */},
-  {(bigint) 123 /* 2: NitCompiler < MMContext: superclass typecheck marker */},
-  {(bigint) 203 /* 3: NitCompiler < ToolContext: superclass typecheck marker */},
-  {(bigint) 3995 /* 4: NitCompiler < AbstractCompiler: superclass typecheck marker */},
-  {(bigint) 4035 /* 5: NitCompiler < NitCompiler: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: NitCompiler < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: NitCompiler < MMContext: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMContext___init},
-  {(bigint) abstractmetamodel___MMContext___module_hierarchy},
-  {(bigint) abstractmetamodel___MMContext___class_hierarchy},
-  {(bigint) abstractmetamodel___MMContext___modules},
-  {(bigint) abstractmetamodel___MMContext___add_module},
-  {(bigint) abstractmetamodel___MMContext___add_global_class},
-  {(bigint) abstractmetamodel___MMContext___add_local_class},
-  {(bigint) compiling_base___ToolContext___global},
-  {(bigint) compiling_base___ToolContext___global__eq},
-  {(bigint) compiling_base___ToolContext___compdir},
-  {(bigint) compiling_base___ToolContext___compdir__eq},
-  {(bigint) compiling_base___ToolContext___clibdir},
-  {(bigint) compiling_base___ToolContext___clibdir__eq},
-  {(bigint) compiling_base___ToolContext___bindir},
-  {(bigint) compiling_base___ToolContext___bindir__eq},
-  {(bigint) compiling_base___ToolContext___output_file},
-  {(bigint) compiling_base___ToolContext___output_file__eq},
-  {(bigint) compiling_base___ToolContext___boost},
-  {(bigint) compiling_base___ToolContext___boost__eq},
-  {(bigint) compiling_base___ToolContext___no_cc},
-  {(bigint) compiling_base___ToolContext___no_cc__eq},
-  {(bigint) compiling_base___ToolContext___ext_prefix},
-  {(bigint) compiling_base___ToolContext___ext_prefix__eq},
-  {(bigint) 1 /* 67: NitCompiler < ToolContext: superclass init_table position */},
-  {(bigint) mmloader___ToolContext___error_count},
-  {(bigint) mmloader___ToolContext___warning_count},
-  {(bigint) mmloader___ToolContext___error},
-  {(bigint) mmloader___ToolContext___warning},
-  {(bigint) mmloader___ToolContext___paths},
-  {(bigint) mmloader___ToolContext___option_context},
-  {(bigint) mmloader___ToolContext___opt_warn},
-  {(bigint) mmloader___ToolContext___opt_path},
-  {(bigint) mmloader___ToolContext___opt_log},
-  {(bigint) mmloader___ToolContext___opt_only_metamodel},
-  {(bigint) mmloader___ToolContext___opt_only_parse},
-  {(bigint) mmloader___ToolContext___opt_help},
-  {(bigint) mmloader___ToolContext___init},
-  {(bigint) nitc___NitCompiler___process_options},
-  {(bigint) mmloader___ToolContext___try_to_load},
-  {(bigint) mmloader___ToolContext___get_module_from_filename},
-  {(bigint) mmloader___ToolContext___get_module},
-  {(bigint) mmloader___ToolContext___directory_for},
-  {(bigint) mmloader___ToolContext___register_loader},
-  {(bigint) 0 /* 87: NitCompiler < AbstractCompiler: superclass init_table position */},
-  {(bigint) abstracttool___AbstractCompiler___init},
-  {(bigint) abstracttool___AbstractCompiler___exec_cmd_line},
-  {(bigint) nitc___NitCompiler___perform_work},
-  {(bigint) abstracttool___AbstractCompiler___dump_context_info},
-  {(bigint) 4 /* 92: NitCompiler < NitCompiler: superclass init_table position */},
-  {(bigint) nitc___NitCompiler___opt_output},
-  {(bigint) nitc___NitCompiler___opt_boost},
-  {(bigint) nitc___NitCompiler___opt_no_cc},
-  {(bigint) nitc___NitCompiler___opt_global},
-  {(bigint) nitc___NitCompiler___opt_clibdir},
-  {(bigint) nitc___NitCompiler___opt_bindir},
-  {(bigint) nitc___NitCompiler___opt_compdir},
-  {(bigint) nitc___NitCompiler___opt_extension_prefix},
-  {(bigint) nitc___NitCompiler___init},
-  {(bigint) mmloader___ToolContext___process_options},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute NitCompiler::_module_hierarchy */
-/* 2: Attribute NitCompiler::_class_hierarchy */
-/* 3: Attribute NitCompiler::_global_classes */
-/* 4: Attribute NitCompiler::_modules */
-/* 5: Attribute NitCompiler::_global */
-/* 6: Attribute NitCompiler::_compdir */
-/* 7: Attribute NitCompiler::_clibdir */
-/* 8: Attribute NitCompiler::_bindir */
-/* 9: Attribute NitCompiler::_output_file */
-/* 10: Attribute NitCompiler::_boost */
-/* 11: Attribute NitCompiler::_no_cc */
-/* 12: Attribute NitCompiler::_ext_prefix */
-/* 13: Attribute NitCompiler::_error_count */
-/* 14: Attribute NitCompiler::_warning_count */
-/* 15: Attribute NitCompiler::_paths */
-/* 16: Attribute NitCompiler::_loaders */
-/* 17: Attribute NitCompiler::_option_context */
-/* 18: Attribute NitCompiler::_opt_warn */
-/* 19: Attribute NitCompiler::_opt_path */
-/* 20: Attribute NitCompiler::_opt_log */
-/* 21: Attribute NitCompiler::_opt_only_metamodel */
-/* 22: Attribute NitCompiler::_opt_only_parse */
-/* 23: Attribute NitCompiler::_opt_help */
-/* 24: Attribute NitCompiler::_processing_modules */
-/* 25: Attribute NitCompiler::_path_dirs */
-/* 26: Attribute NitCompiler::_opt_output */
-/* 27: Attribute NitCompiler::_opt_boost */
-/* 28: Attribute NitCompiler::_opt_no_cc */
-/* 29: Attribute NitCompiler::_opt_global */
-/* 30: Attribute NitCompiler::_opt_clibdir */
-/* 31: Attribute NitCompiler::_opt_bindir */
-/* 32: Attribute NitCompiler::_opt_compdir */
-/* 33: Attribute NitCompiler::_opt_extension_prefix */
-val_t NEW_NitCompiler(void) {
-  static val_t once_value_0 = NIT_NULL; /* Once value for string variable[1]*/
-  static val_t once_value_1 = NIT_NULL; /* Once value for string variable[3]*/
-  static val_t once_value_2 = NIT_NULL; /* Once value for string variable[4]*/
-  static val_t once_value_3 = NIT_NULL; /* Once value for string variable[3]*/
-  static val_t once_value_4 = NIT_NULL; /* Once value for string variable[5]*/
-  static val_t once_value_5 = NIT_NULL; /* Once value for string variable[6]*/
-  static val_t once_value_6 = NIT_NULL; /* Once value for string variable[5]*/
-  static val_t once_value_7 = NIT_NULL; /* Once value for string variable[7]*/
-  static val_t once_value_8 = NIT_NULL; /* Once value for string variable[7]*/
-  static val_t once_value_9 = NIT_NULL; /* Once value for string variable[9]*/
-  static val_t once_value_10 = NIT_NULL; /* Once value for string variable[9]*/
-  static val_t once_value_11 = NIT_NULL; /* Once value for string variable[11]*/
-  static val_t once_value_12 = NIT_NULL; /* Once value for string variable[11]*/
-  static val_t once_value_13 = NIT_NULL; /* Once value for string variable[13]*/
-  static val_t once_value_14 = NIT_NULL; /* Once value for string variable[14]*/
-  static val_t once_value_15 = NIT_NULL; /* Once value for string variable[15]*/
-  static val_t once_value_16 = NIT_NULL; /* Once value for string variable[13]*/
-  static val_t once_value_17 = NIT_NULL; /* Once value for string variable[15]*/
-  static val_t once_value_18 = NIT_NULL; /* Once value for string variable[16]*/
-  static val_t once_value_19 = NIT_NULL; /* Once value for string variable[15]*/
-  static val_t once_value_20 = NIT_NULL; /* Once value for string variable[17]*/
-  static val_t once_value_21 = NIT_NULL; /* Once value for string variable[18]*/
-  static val_t once_value_22 = NIT_NULL; /* Once value for string variable[17]*/
-  static val_t once_value_23 = NIT_NULL; /* Once value for string variable[19]*/
-  static val_t once_value_24 = NIT_NULL; /* Once value for string variable[19]*/
-  static val_t once_value_25 = NIT_NULL; /* Once value for string variable[21]*/
-  static val_t once_value_26 = NIT_NULL; /* Once value for string variable[21]*/
-  static val_t once_value_27 = NIT_NULL; /* Once value for string variable[23]*/
-  static val_t once_value_28 = NIT_NULL; /* Once value for string variable[23]*/
-  static val_t once_value_29 = NIT_NULL; /* Once value for string variable[25]*/
-  static val_t once_value_30 = NIT_NULL; /* Once value for string variable[25]*/
-  static val_t once_value_31 = NIT_NULL; /* Once value for string variable[27]*/
-  static val_t once_value_32 = NIT_NULL; /* Once value for string variable[27]*/
-  static val_t once_value_33 = NIT_NULL; /* Once value for string variable[29]*/
-  static val_t once_value_34 = NIT_NULL; /* Once value for string variable[30]*/
-  val_t variable[31];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 34);
-  obj->vft = (classtable_elt_t*)VFT_NitCompiler;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMContext____module_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMModule]*/;
-  ATTR_abstractmetamodel___MMContext____class_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMLocalClass]*/;
-  ATTR_abstractmetamodel___MMContext____global_classes(obj) = NEW_Array_array___Array___init() /*new Array[MMGlobalClass]*/;
-  ATTR_abstractmetamodel___MMContext____modules(obj) = NEW_Array_array___Array___init() /*new Array[MMModule]*/;
-  ATTR_mmloader___ToolContext____error_count(obj) =  TAG_Int(0);
-  ATTR_mmloader___ToolContext____warning_count(obj) =  TAG_Int(0);
-  ATTR_mmloader___ToolContext____loaders(obj) = NEW_Array_array___Array___init() /*new Array[ModuleLoader]*/;
-  ATTR_mmloader___ToolContext____option_context(obj) = NEW_OptionContext_opts___OptionContext___init() /*new OptionContext*/;
-  /* Register variable[1]: Once String constant */
-  if (once_value_0 != NIT_NULL) variable[1] = once_value_0;
-  else {
-    variable[1] = NEW_String_string___String___with_native(BOX_NativeString("Show warnings"), TAG_Int(13)) /*new String*/;
-    once_value_0 = variable[1];
-  }
-  /* Register variable[1]: Result */
-  variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(2)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[3]: Once String constant */
-  if (once_value_1 != NIT_NULL) variable[3] = once_value_1;
-  else {
-    variable[3] = NEW_String_string___String___with_native(BOX_NativeString("-W"), TAG_Int(2)) /*new String*/;
-    once_value_1 = variable[3];
-  }
-  /* Register variable[3]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
-  /* Register variable[4]: Once String constant */
-  if (once_value_2 != NIT_NULL) variable[4] = once_value_2;
-  else {
-    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("--warn"), TAG_Int(6)) /*new String*/;
-    once_value_2 = variable[4];
-  }
-  /* Register variable[4]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[4]) /*AbstractArray::add*/;
-  /* Register variable[2]: Result */
-  ATTR_mmloader___ToolContext____opt_warn(obj) = NEW_OptionCount_opts___OptionCount___init(variable[1], variable[2]) /*new OptionCount*/;
-  /* Register variable[3]: Once String constant */
-  if (once_value_3 != NIT_NULL) variable[3] = once_value_3;
-  else {
-    variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Set include path for loaders (may be used more than once)"), TAG_Int(57)) /*new String*/;
-    once_value_3 = variable[3];
-  }
-  /* Register variable[3]: Result */
-  variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(2)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[5]: Once String constant */
-  if (once_value_4 != NIT_NULL) variable[5] = once_value_4;
-  else {
-    variable[5] = NEW_String_string___String___with_native(BOX_NativeString("-I"), TAG_Int(2)) /*new String*/;
-    once_value_4 = variable[5];
-  }
-  /* Register variable[5]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
-  /* Register variable[6]: Once String constant */
-  if (once_value_5 != NIT_NULL) variable[6] = once_value_5;
-  else {
-    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("--path"), TAG_Int(6)) /*new String*/;
-    once_value_5 = variable[6];
-  }
-  /* Register variable[6]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[6]) /*AbstractArray::add*/;
-  /* Register variable[4]: Result */
-  ATTR_mmloader___ToolContext____opt_path(obj) = NEW_OptionArray_opts___OptionArray___init(variable[3], variable[4]) /*new OptionArray*/;
-  /* Register variable[5]: Once String constant */
-  if (once_value_6 != NIT_NULL) variable[5] = once_value_6;
-  else {
-    variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Generate various log files"), TAG_Int(26)) /*new String*/;
-    once_value_6 = variable[5];
-  }
-  /* Register variable[5]: Result */
-  variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[7]: Once String constant */
-  if (once_value_7 != NIT_NULL) variable[7] = once_value_7;
-  else {
-    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("--log"), TAG_Int(5)) /*new String*/;
-    once_value_7 = variable[7];
-  }
-  /* Register variable[7]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
-  /* Register variable[6]: Result */
-  ATTR_mmloader___ToolContext____opt_log(obj) = NEW_OptionBool_opts___OptionBool___init(variable[5], variable[6]) /*new OptionBool*/;
-  /* Register variable[7]: Once String constant */
-  if (once_value_8 != NIT_NULL) variable[7] = once_value_8;
-  else {
-    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Stop after meta-model processing"), TAG_Int(32)) /*new String*/;
-    once_value_8 = variable[7];
-  }
-  /* Register variable[7]: Result */
-  variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[9]: Once String constant */
-  if (once_value_9 != NIT_NULL) variable[9] = once_value_9;
-  else {
-    variable[9] = NEW_String_string___String___with_native(BOX_NativeString("--only-metamodel"), TAG_Int(16)) /*new String*/;
-    once_value_9 = variable[9];
-  }
-  /* Register variable[9]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
-  /* Register variable[8]: Result */
-  ATTR_mmloader___ToolContext____opt_only_metamodel(obj) = NEW_OptionBool_opts___OptionBool___init(variable[7], variable[8]) /*new OptionBool*/;
-  /* Register variable[9]: Once String constant */
-  if (once_value_10 != NIT_NULL) variable[9] = once_value_10;
-  else {
-    variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Only proceed to parse step of loaders"), TAG_Int(37)) /*new String*/;
-    once_value_10 = variable[9];
-  }
-  /* Register variable[9]: Result */
-  variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[11]: Once String constant */
-  if (once_value_11 != NIT_NULL) variable[11] = once_value_11;
-  else {
-    variable[11] = NEW_String_string___String___with_native(BOX_NativeString("--only-parse"), TAG_Int(12)) /*new String*/;
-    once_value_11 = variable[11];
-  }
-  /* Register variable[11]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
-  /* Register variable[10]: Result */
-  ATTR_mmloader___ToolContext____opt_only_parse(obj) = NEW_OptionBool_opts___OptionBool___init(variable[9], variable[10]) /*new OptionBool*/;
-  /* Register variable[11]: Once String constant */
-  if (once_value_12 != NIT_NULL) variable[11] = once_value_12;
-  else {
-    variable[11] = NEW_String_string___String___with_native(BOX_NativeString("Show Help (This screen)"), TAG_Int(23)) /*new String*/;
-    once_value_12 = variable[11];
-  }
-  /* Register variable[11]: Result */
-  variable[12] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[13]: Once String constant */
-  if (once_value_13 != NIT_NULL) variable[13] = once_value_13;
-  else {
-    variable[13] = NEW_String_string___String___with_native(BOX_NativeString("-h"), TAG_Int(2)) /*new String*/;
-    once_value_13 = variable[13];
-  }
-  /* Register variable[13]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
-  /* Register variable[14]: Once String constant */
-  if (once_value_14 != NIT_NULL) variable[14] = once_value_14;
-  else {
-    variable[14] = NEW_String_string___String___with_native(BOX_NativeString("-?"), TAG_Int(2)) /*new String*/;
-    once_value_14 = variable[14];
-  }
-  /* Register variable[14]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[14]) /*AbstractArray::add*/;
-  /* Register variable[15]: Once String constant */
-  if (once_value_15 != NIT_NULL) variable[15] = once_value_15;
-  else {
-    variable[15] = NEW_String_string___String___with_native(BOX_NativeString("--help"), TAG_Int(6)) /*new String*/;
-    once_value_15 = variable[15];
-  }
-  /* Register variable[15]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[15]) /*AbstractArray::add*/;
-  /* Register variable[12]: Result */
-  ATTR_mmloader___ToolContext____opt_help(obj) = NEW_OptionBool_opts___OptionBool___init(variable[11], variable[12]) /*new OptionBool*/;
-  ATTR_mmloader___ToolContext____processing_modules(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[Symbol]*/;
-  ATTR_mmloader___ToolContext____path_dirs(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[String, MMDirectory]*/;
-  ATTR_compiling_base___ToolContext____global(obj) =  TAG_Bool(false);
-  ATTR_compiling_base___ToolContext____boost(obj) =  TAG_Bool(false);
-  ATTR_compiling_base___ToolContext____no_cc(obj) =  TAG_Bool(false);
-  /* Register variable[13]: Once String constant */
-  if (once_value_16 != NIT_NULL) variable[13] = once_value_16;
-  else {
-    variable[13] = NEW_String_string___String___with_native(BOX_NativeString("Output file"), TAG_Int(11)) /*new String*/;
-    once_value_16 = variable[13];
-  }
-  /* Register variable[13]: Result */
-  variable[14] = NEW_Array_array___Array___with_capacity(TAG_Int(2)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[15]: Once String constant */
-  if (once_value_17 != NIT_NULL) variable[15] = once_value_17;
-  else {
-    variable[15] = NEW_String_string___String___with_native(BOX_NativeString("-o"), TAG_Int(2)) /*new String*/;
-    once_value_17 = variable[15];
-  }
-  /* Register variable[15]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[15]) /*AbstractArray::add*/;
-  /* Register variable[16]: Once String constant */
-  if (once_value_18 != NIT_NULL) variable[16] = once_value_18;
-  else {
-    variable[16] = NEW_String_string___String___with_native(BOX_NativeString("--output"), TAG_Int(8)) /*new String*/;
-    once_value_18 = variable[16];
-  }
-  /* Register variable[16]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[14])(variable[14], variable[16]) /*AbstractArray::add*/;
-  /* Register variable[14]: Result */
-  ATTR_nitc___NitCompiler____opt_output(obj) = NEW_OptionString_opts___OptionString___init(variable[13], variable[14]) /*new OptionString*/;
-  /* Register variable[15]: Once String constant */
-  if (once_value_19 != NIT_NULL) variable[15] = once_value_19;
-  else {
-    variable[15] = NEW_String_string___String___with_native(BOX_NativeString("Optimize compilation"), TAG_Int(20)) /*new String*/;
-    once_value_19 = variable[15];
-  }
-  /* Register variable[15]: Result */
-  variable[16] = NEW_Array_array___Array___with_capacity(TAG_Int(2)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[17]: Once String constant */
-  if (once_value_20 != NIT_NULL) variable[17] = once_value_20;
-  else {
-    variable[17] = NEW_String_string___String___with_native(BOX_NativeString("-O"), TAG_Int(2)) /*new String*/;
-    once_value_20 = variable[17];
-  }
-  /* Register variable[17]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[16])(variable[16], variable[17]) /*AbstractArray::add*/;
-  /* Register variable[18]: Once String constant */
-  if (once_value_21 != NIT_NULL) variable[18] = once_value_21;
-  else {
-    variable[18] = NEW_String_string___String___with_native(BOX_NativeString("--boost"), TAG_Int(7)) /*new String*/;
-    once_value_21 = variable[18];
-  }
-  /* Register variable[18]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[16])(variable[16], variable[18]) /*AbstractArray::add*/;
-  /* Register variable[16]: Result */
-  ATTR_nitc___NitCompiler____opt_boost(obj) = NEW_OptionBool_opts___OptionBool___init(variable[15], variable[16]) /*new OptionBool*/;
-  /* Register variable[17]: Once String constant */
-  if (once_value_22 != NIT_NULL) variable[17] = once_value_22;
-  else {
-    variable[17] = NEW_String_string___String___with_native(BOX_NativeString("Do not invoke C compiler"), TAG_Int(24)) /*new String*/;
-    once_value_22 = variable[17];
-  }
-  /* Register variable[17]: Result */
-  variable[18] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[19]: Once String constant */
-  if (once_value_23 != NIT_NULL) variable[19] = once_value_23;
-  else {
-    variable[19] = NEW_String_string___String___with_native(BOX_NativeString("--no_cc"), TAG_Int(7)) /*new String*/;
-    once_value_23 = variable[19];
-  }
-  /* Register variable[19]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[18])(variable[18], variable[19]) /*AbstractArray::add*/;
-  /* Register variable[18]: Result */
-  ATTR_nitc___NitCompiler____opt_no_cc(obj) = NEW_OptionBool_opts___OptionBool___init(variable[17], variable[18]) /*new OptionBool*/;
-  /* Register variable[19]: Once String constant */
-  if (once_value_24 != NIT_NULL) variable[19] = once_value_24;
-  else {
-    variable[19] = NEW_String_string___String___with_native(BOX_NativeString("Use global compilation"), TAG_Int(22)) /*new String*/;
-    once_value_24 = variable[19];
-  }
-  /* Register variable[19]: Result */
-  variable[20] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[21]: Once String constant */
-  if (once_value_25 != NIT_NULL) variable[21] = once_value_25;
-  else {
-    variable[21] = NEW_String_string___String___with_native(BOX_NativeString("--global"), TAG_Int(8)) /*new String*/;
-    once_value_25 = variable[21];
-  }
-  /* Register variable[21]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[20])(variable[20], variable[21]) /*AbstractArray::add*/;
-  /* Register variable[20]: Result */
-  ATTR_nitc___NitCompiler____opt_global(obj) = NEW_OptionBool_opts___OptionBool___init(variable[19], variable[20]) /*new OptionBool*/;
-  /* Register variable[21]: Once String constant */
-  if (once_value_26 != NIT_NULL) variable[21] = once_value_26;
-  else {
-    variable[21] = NEW_String_string___String___with_native(BOX_NativeString("NIT C library directory"), TAG_Int(23)) /*new String*/;
-    once_value_26 = variable[21];
-  }
-  /* Register variable[21]: Result */
-  variable[22] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[23]: Once String constant */
-  if (once_value_27 != NIT_NULL) variable[23] = once_value_27;
-  else {
-    variable[23] = NEW_String_string___String___with_native(BOX_NativeString("--clibdir"), TAG_Int(9)) /*new String*/;
-    once_value_27 = variable[23];
-  }
-  /* Register variable[23]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[22])(variable[22], variable[23]) /*AbstractArray::add*/;
-  /* Register variable[22]: Result */
-  ATTR_nitc___NitCompiler____opt_clibdir(obj) = NEW_OptionString_opts___OptionString___init(variable[21], variable[22]) /*new OptionString*/;
-  /* Register variable[23]: Once String constant */
-  if (once_value_28 != NIT_NULL) variable[23] = once_value_28;
-  else {
-    variable[23] = NEW_String_string___String___with_native(BOX_NativeString("NIT tools directory"), TAG_Int(19)) /*new String*/;
-    once_value_28 = variable[23];
-  }
-  /* Register variable[23]: Result */
-  variable[24] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[25]: Once String constant */
-  if (once_value_29 != NIT_NULL) variable[25] = once_value_29;
-  else {
-    variable[25] = NEW_String_string___String___with_native(BOX_NativeString("--bindir"), TAG_Int(8)) /*new String*/;
-    once_value_29 = variable[25];
-  }
-  /* Register variable[25]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[24])(variable[24], variable[25]) /*AbstractArray::add*/;
-  /* Register variable[24]: Result */
-  ATTR_nitc___NitCompiler____opt_bindir(obj) = NEW_OptionString_opts___OptionString___init(variable[23], variable[24]) /*new OptionString*/;
-  /* Register variable[25]: Once String constant */
-  if (once_value_30 != NIT_NULL) variable[25] = once_value_30;
-  else {
-    variable[25] = NEW_String_string___String___with_native(BOX_NativeString("Intermediate compilation directory"), TAG_Int(34)) /*new String*/;
-    once_value_30 = variable[25];
-  }
-  /* Register variable[25]: Result */
-  variable[26] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[27]: Once String constant */
-  if (once_value_31 != NIT_NULL) variable[27] = once_value_31;
-  else {
-    variable[27] = NEW_String_string___String___with_native(BOX_NativeString("--compdir"), TAG_Int(9)) /*new String*/;
-    once_value_31 = variable[27];
-  }
-  /* Register variable[27]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[26])(variable[26], variable[27]) /*AbstractArray::add*/;
-  /* Register variable[26]: Result */
-  ATTR_nitc___NitCompiler____opt_compdir(obj) = NEW_OptionString_opts___OptionString___init(variable[25], variable[26]) /*new OptionString*/;
-  /* Register variable[27]: Once String constant */
-  if (once_value_32 != NIT_NULL) variable[27] = once_value_32;
-  else {
-    variable[27] = NEW_String_string___String___with_native(BOX_NativeString("Append prefix to file extension"), TAG_Int(31)) /*new String*/;
-    once_value_32 = variable[27];
-  }
-  /* Register variable[27]: Result */
-  variable[28] = NEW_Array_array___Array___with_capacity(TAG_Int(2)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[29]: Once String constant */
-  if (once_value_33 != NIT_NULL) variable[29] = once_value_33;
-  else {
-    variable[29] = NEW_String_string___String___with_native(BOX_NativeString("-p"), TAG_Int(2)) /*new String*/;
-    once_value_33 = variable[29];
-  }
-  /* Register variable[29]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[28])(variable[28], variable[29]) /*AbstractArray::add*/;
-  /* Register variable[30]: Once String constant */
-  if (once_value_34 != NIT_NULL) variable[30] = once_value_34;
-  else {
-    variable[30] = NEW_String_string___String___with_native(BOX_NativeString("--extension-prefix"), TAG_Int(18)) /*new String*/;
-    once_value_34 = variable[30];
-  }
-  /* Register variable[30]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[28])(variable[28], variable[30]) /*AbstractArray::add*/;
-  /* Register variable[28]: Result */
-  ATTR_nitc___NitCompiler____opt_extension_prefix(obj) = NEW_OptionString_opts___OptionString___init(variable[27], variable[28]) /*new OptionString*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_NitCompiler(val_t self, char *from) {
-}
-val_t NEW_NitCompiler_nitc___NitCompiler___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_NitCompiler();
-  nitc___NitCompiler___init(self, init_table);
-  CHECKNEW_NitCompiler(self, "nitc::NitCompiler::init for NitCompiler");
-  return self;
-}
-const classtable_elt_t VFT_Sys[51] = {
-  {(bigint) 19 /* 0: Identity */},
-  {(bigint) 3 /* 1: Sys < Object: superclass typecheck marker */},
-  {(bigint) 19 /* 2: Sys < Sys: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Sys___args},
-  {(bigint) 0 /* 23: Sys < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) exec___Sys___system},
-  {(bigint) string___Sys___program_name},
-  {(bigint) string___Sys___init_args},
-  {(bigint) string___Sys___native_argc},
-  {(bigint) string___Sys___native_argv},
-  {(bigint) 1 /* 48: Sys < Sys: superclass init_table position */},
-  {(bigint) nitc___Sys___main},
-  {(bigint) kernel___Sys___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Sys::_args_cache */
-val_t NEW_Sys(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_Sys;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Sys(val_t self, char *from) {
-}
-val_t NEW_Sys_kernel___Sys___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Sys();
-  kernel___Sys___init(self, init_table);
-  CHECKNEW_Sys(self, "kernel::Sys::init for Sys");
-  return self;
-}
-const classtable_elt_t VFT_Object[43] = {
-  {(bigint) 3 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Object < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_Object(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_Object;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Object(val_t self, char *from) {
-}
-const classtable_elt_t VFT_Comparable[58] = {
-  {(bigint) 167 /* 0: Identity */},
-  {(bigint) 3 /* 1: Comparable < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 167 /* 3: Comparable < Comparable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Comparable < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 49: Comparable < Comparable: superclass init_table position */},
-  {(bigint) kernel___Comparable_____l},
-  {(bigint) kernel___Comparable_____leq},
-  {(bigint) kernel___Comparable_____geq},
-  {(bigint) kernel___Comparable_____g},
-  {(bigint) kernel___Comparable_____leqg},
-  {(bigint) kernel___Comparable___is_between},
-  {(bigint) kernel___Comparable___max},
-  {(bigint) kernel___Comparable___min},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_Comparable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_Comparable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Comparable(val_t self, char *from) {
-}
-const classtable_elt_t VFT_Discrete[64] = {
-  {(bigint) 3347 /* 0: Identity */},
-  {(bigint) 3 /* 1: Discrete < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 167 /* 3: Discrete < Comparable: superclass typecheck marker */},
-  {(bigint) 3347 /* 4: Discrete < Discrete: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Discrete < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 49: Discrete < Comparable: superclass init_table position */},
-  {(bigint) kernel___Comparable_____l},
-  {(bigint) kernel___Comparable_____leq},
-  {(bigint) kernel___Comparable_____geq},
-  {(bigint) kernel___Comparable_____g},
-  {(bigint) kernel___Comparable_____leqg},
-  {(bigint) kernel___Comparable___is_between},
-  {(bigint) kernel___Comparable___max},
-  {(bigint) kernel___Comparable___min},
-  {(bigint) 2 /* 58: Discrete < Discrete: superclass init_table position */},
-  {(bigint) kernel___Discrete___succ},
-  {(bigint) kernel___Discrete___prec},
-  {(bigint) kernel___Discrete_____plus},
-  {(bigint) kernel___Discrete_____minus},
-  {(bigint) kernel___Discrete___distance},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_Discrete(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_Discrete;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Discrete(val_t self, char *from) {
-}
-const classtable_elt_t VFT_Bool[44] = {
-  {(bigint) -17 /* 0: Identity */},
-  {(bigint) 3 /* 1: Bool < Object: superclass typecheck marker */},
-  {(bigint) -17 /* 2: Bool < Bool: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Bool___hash},
-  {(bigint) string___Bool___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Bool < Object: superclass init_table position */},
-  {(bigint) kernel___Bool___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Bool_____eqeq},
-  {(bigint) kernel___Bool_____neq},
-  {(bigint) kernel___Bool___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: Bool < Bool: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-const classtable_elt_t VFT_Float[66] = {
-  {(bigint) -13 /* 0: Identity */},
-  {(bigint) 3 /* 1: Float < Object: superclass typecheck marker */},
-  {(bigint) -13 /* 2: Float < Float: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Float___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Float < Object: superclass init_table position */},
-  {(bigint) kernel___Float___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Float___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) string___Float___to_precision},
-  {(bigint) 1 /* 44: Float < Float: superclass init_table position */},
-  {(bigint) kernel___Float_____leq},
-  {(bigint) kernel___Float_____l},
-  {(bigint) kernel___Float_____geq},
-  {(bigint) kernel___Float_____g},
-  {(bigint) kernel___Float_____plus},
-  {(bigint) kernel___Float___unary__minus},
-  {(bigint) kernel___Float_____minus},
-  {(bigint) kernel___Float_____star},
-  {(bigint) kernel___Float_____slash},
-  {(bigint) kernel___Float___to_i},
-  {(bigint) math___Float___sqrt},
-  {(bigint) math___Float___cos},
-  {(bigint) math___Float___sin},
-  {(bigint) math___Float___tan},
-  {(bigint) math___Float___acos},
-  {(bigint) math___Float___asin},
-  {(bigint) math___Float___atan},
-  {(bigint) math___Float___pow},
-  {(bigint) math___Float___log},
-  {(bigint) math___Float___exp},
-  {(bigint) math___Float___rand},
-};
-/* 0: Pointer to the classtable */
-val_t BOX_Float(float val) {
-  struct TBOX_Float *box = (struct TBOX_Float*)alloc(sizeof(struct TBOX_Float));
-  box->vft = VFT_Float;
-  box->val = val;
-  return OBJ2VAL(box);
-}
-const classtable_elt_t VFT_Int[79] = {
-  {(bigint) -33 /* 0: Identity */},
-  {(bigint) 3 /* 1: Int < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 167 /* 3: Int < Comparable: superclass typecheck marker */},
-  {(bigint) 3347 /* 4: Int < Discrete: superclass typecheck marker */},
-  {(bigint) -33 /* 5: Int < Int: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Int___hash},
-  {(bigint) string___Int___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Int < Object: superclass init_table position */},
-  {(bigint) kernel___Int___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Int_____eqeq},
-  {(bigint) kernel___Int_____neq},
-  {(bigint) kernel___Int___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 49: Int < Comparable: superclass init_table position */},
-  {(bigint) kernel___Int_____l},
-  {(bigint) kernel___Int_____leq},
-  {(bigint) kernel___Int_____geq},
-  {(bigint) kernel___Int_____g},
-  {(bigint) kernel___Int_____leqg},
-  {(bigint) kernel___Int___is_between},
-  {(bigint) kernel___Int___max},
-  {(bigint) kernel___Int___min},
-  {(bigint) 2 /* 58: Int < Discrete: superclass init_table position */},
-  {(bigint) kernel___Int___succ},
-  {(bigint) kernel___Int___prec},
-  {(bigint) kernel___Int_____plus},
-  {(bigint) kernel___Int_____minus},
-  {(bigint) kernel___Int___distance},
-  {(bigint) string___Int___fill_buffer},
-  {(bigint) string___Int___to_hex},
-  {(bigint) string___Int___to_base},
-  {(bigint) 3 /* 67: Int < Int: superclass init_table position */},
-  {(bigint) kernel___Int___unary__minus},
-  {(bigint) kernel___Int_____star},
-  {(bigint) kernel___Int_____slash},
-  {(bigint) kernel___Int_____percent},
-  {(bigint) kernel___Int___lshift},
-  {(bigint) kernel___Int___rshift},
-  {(bigint) kernel___Int___to_f},
-  {(bigint) kernel___Int___ascii},
-  {(bigint) kernel___Int___digit_count},
-  {(bigint) kernel___Int___to_c},
-  {(bigint) math___Int___rand},
-};
-/* 0: Pointer to the classtable */
-const classtable_elt_t VFT_Char[69] = {
-  {(bigint) -37 /* 0: Identity */},
-  {(bigint) 3 /* 1: Char < Object: superclass typecheck marker */},
-  {(bigint) 51 /* 2: Char < Pattern: superclass typecheck marker */},
-  {(bigint) 167 /* 3: Char < Comparable: superclass typecheck marker */},
-  {(bigint) 3347 /* 4: Char < Discrete: superclass typecheck marker */},
-  {(bigint) -37 /* 5: Char < Char: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Char___hash},
-  {(bigint) string___Char___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Char < Object: superclass init_table position */},
-  {(bigint) kernel___Char___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Char_____eqeq},
-  {(bigint) kernel___Char_____neq},
-  {(bigint) kernel___Char___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 3 /* 43: Char < Pattern: superclass init_table position */},
-  {(bigint) string_search___Char___search_index_in},
-  {(bigint) string_search___Char___search_in},
-  {(bigint) string_search___Pattern___search_all_in},
-  {(bigint) string_search___Pattern___split_in},
-  {(bigint) string_search___Pattern___init},
-  {(bigint) 1 /* 49: Char < Comparable: superclass init_table position */},
-  {(bigint) kernel___Char_____l},
-  {(bigint) kernel___Char_____leq},
-  {(bigint) kernel___Char_____geq},
-  {(bigint) kernel___Char_____g},
-  {(bigint) kernel___Comparable_____leqg},
-  {(bigint) kernel___Comparable___is_between},
-  {(bigint) kernel___Comparable___max},
-  {(bigint) kernel___Comparable___min},
-  {(bigint) 2 /* 58: Char < Discrete: superclass init_table position */},
-  {(bigint) kernel___Char___succ},
-  {(bigint) kernel___Char___prec},
-  {(bigint) kernel___Char_____plus},
-  {(bigint) kernel___Char_____minus},
-  {(bigint) kernel___Char___distance},
-  {(bigint) 4 /* 64: Char < Char: superclass init_table position */},
-  {(bigint) kernel___Char___to_i},
-  {(bigint) kernel___Char___ascii},
-  {(bigint) kernel___Char___to_lower},
-  {(bigint) kernel___Char___to_upper},
-};
-/* 0: Pointer to the classtable */
-const classtable_elt_t VFT_Pointer[44] = {
-  {(bigint) -1 /* 0: Identity */},
-  {(bigint) 3 /* 1: Pointer < Object: superclass typecheck marker */},
-  {(bigint) -1 /* 2: Pointer < Pointer: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Pointer < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: Pointer < Pointer: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-val_t BOX_Pointer(void * val) {
-  struct TBOX_Pointer *box = (struct TBOX_Pointer*)alloc(sizeof(struct TBOX_Pointer));
-  box->vft = VFT_Pointer;
-  box->val = val;
-  return OBJ2VAL(box);
-}
-const classtable_elt_t VFT_Collection[68] = {
-  {(bigint) 175 /* 0: Identity */},
-  {(bigint) 3 /* 1: Collection < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: Collection < Collection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Collection < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: Collection < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___Collection___iterator},
-  {(bigint) abstract_collection___Collection___is_empty},
-  {(bigint) abstract_collection___Collection___length},
-  {(bigint) abstract_collection___Collection___has},
-  {(bigint) abstract_collection___Collection___has_only},
-  {(bigint) abstract_collection___Collection___count},
-  {(bigint) abstract_collection___Collection___first},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_Collection(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_Collection;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Collection(val_t self, char *from) {
-}
-const classtable_elt_t VFT_NaiveCollection[69] = {
-  {(bigint) 3227 /* 0: Identity */},
-  {(bigint) 3 /* 1: NaiveCollection < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: NaiveCollection < Collection: superclass typecheck marker */},
-  {(bigint) 3227 /* 5: NaiveCollection < NaiveCollection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: NaiveCollection < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: NaiveCollection < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___Collection___iterator},
-  {(bigint) abstract_collection___NaiveCollection___is_empty},
-  {(bigint) abstract_collection___NaiveCollection___length},
-  {(bigint) abstract_collection___NaiveCollection___has},
-  {(bigint) abstract_collection___NaiveCollection___has_only},
-  {(bigint) abstract_collection___NaiveCollection___count},
-  {(bigint) abstract_collection___NaiveCollection___first},
-  {(bigint) 2 /* 68: NaiveCollection < NaiveCollection: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_NaiveCollection(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_NaiveCollection;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_NaiveCollection(val_t self, char *from) {
-}
-const classtable_elt_t VFT_Iterator[48] = {
-  {(bigint) 139 /* 0: Identity */},
-  {(bigint) 3 /* 1: Iterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 2: Iterator < Iterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Iterator < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) array___Iterator___to_a},
-  {(bigint) 1 /* 44: Iterator < Iterator: superclass init_table position */},
-  {(bigint) abstract_collection___Iterator___item},
-  {(bigint) abstract_collection___Iterator___next},
-  {(bigint) abstract_collection___Iterator___is_ok},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_Iterator(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_Iterator;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Iterator(val_t self, char *from) {
-}
-const classtable_elt_t VFT_Container[72] = {
-  {(bigint) 3355 /* 0: Identity */},
-  {(bigint) 3 /* 1: Container < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: Container < Collection: superclass typecheck marker */},
-  {(bigint) 3355 /* 5: Container < Container: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Container < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: Container < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___Container___iterator},
-  {(bigint) abstract_collection___Container___is_empty},
-  {(bigint) abstract_collection___Container___length},
-  {(bigint) abstract_collection___Container___has},
-  {(bigint) abstract_collection___Container___has_only},
-  {(bigint) abstract_collection___Container___count},
-  {(bigint) abstract_collection___Container___first},
-  {(bigint) 2 /* 68: Container < Container: superclass init_table position */},
-  {(bigint) abstract_collection___Container___init},
-  {(bigint) abstract_collection___Container___item},
-  {(bigint) abstract_collection___Container___item__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Container::_item */
-val_t NEW_Container(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_Container;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Container(val_t self, char *from) {
-}
-val_t NEW_Container_abstract_collection___Container___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_Container();
-  abstract_collection___Container___init(self, p0, init_table);
-  CHECKNEW_Container(self, "abstract_collection::Container::init for Container");
-  return self;
-}
-const classtable_elt_t VFT_ContainerIterator[50] = {
-  {(bigint) 3351 /* 0: Identity */},
-  {(bigint) 3 /* 1: ContainerIterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 2: ContainerIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 3351 /* 3: ContainerIterator < ContainerIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ContainerIterator < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) array___Iterator___to_a},
-  {(bigint) 1 /* 44: ContainerIterator < Iterator: superclass init_table position */},
-  {(bigint) abstract_collection___ContainerIterator___item},
-  {(bigint) abstract_collection___ContainerIterator___next},
-  {(bigint) abstract_collection___ContainerIterator___is_ok},
-  {(bigint) 2 /* 48: ContainerIterator < ContainerIterator: superclass init_table position */},
-  {(bigint) abstract_collection___ContainerIterator___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ContainerIterator::_is_ok */
-/* 2: Attribute ContainerIterator::_container */
-val_t NEW_ContainerIterator(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_ContainerIterator;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstract_collection___ContainerIterator____is_ok(obj) =  TAG_Bool(true);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ContainerIterator(val_t self, char *from) {
-}
-val_t NEW_ContainerIterator_abstract_collection___ContainerIterator___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ContainerIterator();
-  abstract_collection___ContainerIterator___init(self, p0, init_table);
-  CHECKNEW_ContainerIterator(self, "abstract_collection::ContainerIterator::init for ContainerIterator");
-  return self;
-}
-const classtable_elt_t VFT_RemovableCollection[72] = {
-  {(bigint) 231 /* 0: Identity */},
-  {(bigint) 3 /* 1: RemovableCollection < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: RemovableCollection < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: RemovableCollection < RemovableCollection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: RemovableCollection < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: RemovableCollection < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___Collection___iterator},
-  {(bigint) abstract_collection___Collection___is_empty},
-  {(bigint) abstract_collection___Collection___length},
-  {(bigint) abstract_collection___Collection___has},
-  {(bigint) abstract_collection___Collection___has_only},
-  {(bigint) abstract_collection___Collection___count},
-  {(bigint) abstract_collection___Collection___first},
-  {(bigint) 2 /* 68: RemovableCollection < RemovableCollection: superclass init_table position */},
-  {(bigint) abstract_collection___RemovableCollection___clear},
-  {(bigint) abstract_collection___RemovableCollection___remove},
-  {(bigint) abstract_collection___RemovableCollection___remove_all},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_RemovableCollection(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_RemovableCollection;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_RemovableCollection(val_t self, char *from) {
-}
-const classtable_elt_t VFT_SimpleCollection[78] = {
-  {(bigint) 3779 /* 0: Identity */},
-  {(bigint) 3 /* 1: SimpleCollection < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: SimpleCollection < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: SimpleCollection < RemovableCollection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3779 /* 7: SimpleCollection < SimpleCollection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: SimpleCollection < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: SimpleCollection < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___Collection___iterator},
-  {(bigint) abstract_collection___Collection___is_empty},
-  {(bigint) abstract_collection___Collection___length},
-  {(bigint) abstract_collection___Collection___has},
-  {(bigint) abstract_collection___Collection___has_only},
-  {(bigint) abstract_collection___Collection___count},
-  {(bigint) abstract_collection___Collection___first},
-  {(bigint) 2 /* 68: SimpleCollection < RemovableCollection: superclass init_table position */},
-  {(bigint) abstract_collection___RemovableCollection___clear},
-  {(bigint) abstract_collection___RemovableCollection___remove},
-  {(bigint) abstract_collection___RemovableCollection___remove_all},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 75: SimpleCollection < SimpleCollection: superclass init_table position */},
-  {(bigint) abstract_collection___SimpleCollection___add},
-  {(bigint) abstract_collection___SimpleCollection___add_all},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_SimpleCollection(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_SimpleCollection;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_SimpleCollection(val_t self, char *from) {
-}
-const classtable_elt_t VFT_Set[78] = {
-  {(bigint) 4027 /* 0: Identity */},
-  {(bigint) 3 /* 1: Set < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: Set < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: Set < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 4027 /* 6: Set < Set: superclass typecheck marker */},
-  {(bigint) 3779 /* 7: Set < SimpleCollection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Set < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 53: Set < Set: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: Set < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___Collection___iterator},
-  {(bigint) abstract_collection___Collection___is_empty},
-  {(bigint) abstract_collection___Collection___length},
-  {(bigint) abstract_collection___Collection___has},
-  {(bigint) abstract_collection___Set___has_only},
-  {(bigint) abstract_collection___Set___count},
-  {(bigint) abstract_collection___Collection___first},
-  {(bigint) 2 /* 68: Set < RemovableCollection: superclass init_table position */},
-  {(bigint) abstract_collection___RemovableCollection___clear},
-  {(bigint) abstract_collection___RemovableCollection___remove},
-  {(bigint) abstract_collection___Set___remove_all},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 75: Set < SimpleCollection: superclass init_table position */},
-  {(bigint) abstract_collection___SimpleCollection___add},
-  {(bigint) abstract_collection___SimpleCollection___add_all},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_Set(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_Set;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Set(val_t self, char *from) {
-}
-const classtable_elt_t VFT_MapRead[75] = {
-  {(bigint) 3239 /* 0: Identity */},
-  {(bigint) 3 /* 1: MapRead < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: MapRead < Collection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3239 /* 6: MapRead < MapRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MapRead < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: MapRead < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___MapRead___iterator},
-  {(bigint) abstract_collection___Collection___is_empty},
-  {(bigint) abstract_collection___Collection___length},
-  {(bigint) abstract_collection___Collection___has},
-  {(bigint) abstract_collection___Collection___has_only},
-  {(bigint) abstract_collection___Collection___count},
-  {(bigint) abstract_collection___Collection___first},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 72: MapRead < MapRead: superclass init_table position */},
-  {(bigint) abstract_collection___MapRead_____bra},
-  {(bigint) abstract_collection___MapRead___has_key},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_MapRead(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_MapRead;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MapRead(val_t self, char *from) {
-}
-const classtable_elt_t VFT_Map[83] = {
-  {(bigint) 3899 /* 0: Identity */},
-  {(bigint) 3 /* 1: Map < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: Map < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: Map < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3239 /* 6: Map < MapRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3899 /* 8: Map < Map: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Map < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: Map < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___MapRead___iterator},
-  {(bigint) abstract_collection___Collection___is_empty},
-  {(bigint) abstract_collection___Collection___length},
-  {(bigint) abstract_collection___Collection___has},
-  {(bigint) abstract_collection___Collection___has_only},
-  {(bigint) abstract_collection___Collection___count},
-  {(bigint) abstract_collection___Collection___first},
-  {(bigint) 2 /* 68: Map < RemovableCollection: superclass init_table position */},
-  {(bigint) abstract_collection___RemovableCollection___clear},
-  {(bigint) abstract_collection___RemovableCollection___remove},
-  {(bigint) abstract_collection___RemovableCollection___remove_all},
-  {(bigint) 3 /* 72: Map < MapRead: superclass init_table position */},
-  {(bigint) abstract_collection___MapRead_____bra},
-  {(bigint) abstract_collection___MapRead___has_key},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Map___map_join},
-  {(bigint) 4 /* 79: Map < Map: superclass init_table position */},
-  {(bigint) abstract_collection___Map_____braeq},
-  {(bigint) abstract_collection___Map___remove_at},
-  {(bigint) abstract_collection___Map___recover_with},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_Map(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_Map;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Map(val_t self, char *from) {
-}
-const classtable_elt_t VFT_MapIterator[50] = {
-  {(bigint) 3243 /* 0: Identity */},
-  {(bigint) 3 /* 1: MapIterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 2: MapIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 3243 /* 3: MapIterator < MapIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MapIterator < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) array___Iterator___to_a},
-  {(bigint) 1 /* 44: MapIterator < Iterator: superclass init_table position */},
-  {(bigint) abstract_collection___Iterator___item},
-  {(bigint) abstract_collection___Iterator___next},
-  {(bigint) abstract_collection___Iterator___is_ok},
-  {(bigint) 2 /* 48: MapIterator < MapIterator: superclass init_table position */},
-  {(bigint) abstract_collection___MapIterator___key},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_MapIterator(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_MapIterator;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MapIterator(val_t self, char *from) {
-}
-const classtable_elt_t VFT_IndexedCollectionRead[86] = {
-  {(bigint) 3943 /* 0: Identity */},
-  {(bigint) 3 /* 1: IndexedCollectionRead < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: IndexedCollectionRead < Collection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3239 /* 6: IndexedCollectionRead < MapRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3943 /* 9: IndexedCollectionRead < IndexedCollectionRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: IndexedCollectionRead < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: IndexedCollectionRead < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollectionRead___iterator},
-  {(bigint) abstract_collection___Collection___is_empty},
-  {(bigint) abstract_collection___Collection___length},
-  {(bigint) abstract_collection___Collection___has},
-  {(bigint) abstract_collection___Collection___has_only},
-  {(bigint) abstract_collection___Collection___count},
-  {(bigint) abstract_collection___IndexedCollectionRead___first},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 72: IndexedCollectionRead < MapRead: superclass init_table position */},
-  {(bigint) abstract_collection___MapRead_____bra},
-  {(bigint) abstract_collection___MapRead___has_key},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 83: IndexedCollectionRead < IndexedCollectionRead: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollectionRead___last},
-  {(bigint) abstract_collection___IndexedCollectionRead___index_of},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_IndexedCollectionRead(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_IndexedCollectionRead;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_IndexedCollectionRead(val_t self, char *from) {
-}
-const classtable_elt_t VFT_IndexedCollection[94] = {
-  {(bigint) 4055 /* 0: Identity */},
-  {(bigint) 3 /* 1: IndexedCollection < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: IndexedCollection < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: IndexedCollection < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3239 /* 6: IndexedCollection < MapRead: superclass typecheck marker */},
-  {(bigint) 3779 /* 7: IndexedCollection < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3899 /* 8: IndexedCollection < Map: superclass typecheck marker */},
-  {(bigint) 3943 /* 9: IndexedCollection < IndexedCollectionRead: superclass typecheck marker */},
-  {(bigint) 4055 /* 10: IndexedCollection < IndexedCollection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: IndexedCollection < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: IndexedCollection < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollectionRead___iterator},
-  {(bigint) abstract_collection___Collection___is_empty},
-  {(bigint) abstract_collection___Collection___length},
-  {(bigint) abstract_collection___Collection___has},
-  {(bigint) abstract_collection___Collection___has_only},
-  {(bigint) abstract_collection___Collection___count},
-  {(bigint) abstract_collection___IndexedCollectionRead___first},
-  {(bigint) 4 /* 68: IndexedCollection < RemovableCollection: superclass init_table position */},
-  {(bigint) abstract_collection___RemovableCollection___clear},
-  {(bigint) abstract_collection___RemovableCollection___remove},
-  {(bigint) abstract_collection___RemovableCollection___remove_all},
-  {(bigint) 2 /* 72: IndexedCollection < MapRead: superclass init_table position */},
-  {(bigint) abstract_collection___MapRead_____bra},
-  {(bigint) abstract_collection___MapRead___has_key},
-  {(bigint) 6 /* 75: IndexedCollection < SimpleCollection: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollection___add},
-  {(bigint) abstract_collection___SimpleCollection___add_all},
-  {(bigint) string___Map___map_join},
-  {(bigint) 5 /* 79: IndexedCollection < Map: superclass init_table position */},
-  {(bigint) abstract_collection___Map_____braeq},
-  {(bigint) abstract_collection___Map___remove_at},
-  {(bigint) abstract_collection___Map___recover_with},
-  {(bigint) 3 /* 83: IndexedCollection < IndexedCollectionRead: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollectionRead___last},
-  {(bigint) abstract_collection___IndexedCollectionRead___index_of},
-  {(bigint) 7 /* 86: IndexedCollection < IndexedCollection: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollection___first__eq},
-  {(bigint) abstract_collection___IndexedCollection___last__eq},
-  {(bigint) abstract_collection___IndexedCollection___push},
-  {(bigint) abstract_collection___IndexedCollection___append},
-  {(bigint) abstract_collection___IndexedCollection___pop},
-  {(bigint) abstract_collection___IndexedCollection___unshift},
-  {(bigint) abstract_collection___IndexedCollection___shift},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_IndexedCollection(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_IndexedCollection;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_IndexedCollection(val_t self, char *from) {
-}
-const classtable_elt_t VFT_IndexedIterator[52] = {
-  {(bigint) 3939 /* 0: Identity */},
-  {(bigint) 3 /* 1: IndexedIterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 2: IndexedIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 3243 /* 3: IndexedIterator < MapIterator: superclass typecheck marker */},
-  {(bigint) 3939 /* 4: IndexedIterator < IndexedIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: IndexedIterator < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) array___Iterator___to_a},
-  {(bigint) 1 /* 44: IndexedIterator < Iterator: superclass init_table position */},
-  {(bigint) abstract_collection___Iterator___item},
-  {(bigint) abstract_collection___Iterator___next},
-  {(bigint) abstract_collection___Iterator___is_ok},
-  {(bigint) 2 /* 48: IndexedIterator < MapIterator: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedIterator___key},
-  {(bigint) 3 /* 50: IndexedIterator < IndexedIterator: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedIterator___index},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_IndexedIterator(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_IndexedIterator;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_IndexedIterator(val_t self, char *from) {
-}
-const classtable_elt_t VFT_CoupleMap[83] = {
-  {(bigint) 4071 /* 0: Identity */},
-  {(bigint) 3 /* 1: CoupleMap < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: CoupleMap < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: CoupleMap < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3239 /* 6: CoupleMap < MapRead: superclass typecheck marker */},
-  {(bigint) 4071 /* 7: CoupleMap < CoupleMap: superclass typecheck marker */},
-  {(bigint) 3899 /* 8: CoupleMap < Map: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: CoupleMap < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 5 /* 53: CoupleMap < CoupleMap: superclass init_table position */},
-  {(bigint) abstract_collection___CoupleMap___couple_at},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: CoupleMap < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___MapRead___iterator},
-  {(bigint) abstract_collection___Collection___is_empty},
-  {(bigint) abstract_collection___Collection___length},
-  {(bigint) abstract_collection___Collection___has},
-  {(bigint) abstract_collection___Collection___has_only},
-  {(bigint) abstract_collection___Collection___count},
-  {(bigint) abstract_collection___Collection___first},
-  {(bigint) 2 /* 68: CoupleMap < RemovableCollection: superclass init_table position */},
-  {(bigint) abstract_collection___RemovableCollection___clear},
-  {(bigint) abstract_collection___RemovableCollection___remove},
-  {(bigint) abstract_collection___RemovableCollection___remove_all},
-  {(bigint) 3 /* 72: CoupleMap < MapRead: superclass init_table position */},
-  {(bigint) abstract_collection___CoupleMap_____bra},
-  {(bigint) abstract_collection___CoupleMap___has_key},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Map___map_join},
-  {(bigint) 4 /* 79: CoupleMap < Map: superclass init_table position */},
-  {(bigint) abstract_collection___Map_____braeq},
-  {(bigint) abstract_collection___Map___remove_at},
-  {(bigint) abstract_collection___Map___recover_with},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_CoupleMap(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_CoupleMap;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_CoupleMap(val_t self, char *from) {
-}
-const classtable_elt_t VFT_CoupleMapIterator[52] = {
-  {(bigint) 3971 /* 0: Identity */},
-  {(bigint) 3 /* 1: CoupleMapIterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 2: CoupleMapIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 3243 /* 3: CoupleMapIterator < MapIterator: superclass typecheck marker */},
-  {(bigint) 3971 /* 4: CoupleMapIterator < CoupleMapIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: CoupleMapIterator < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) array___Iterator___to_a},
-  {(bigint) 1 /* 44: CoupleMapIterator < Iterator: superclass init_table position */},
-  {(bigint) abstract_collection___CoupleMapIterator___item},
-  {(bigint) abstract_collection___CoupleMapIterator___next},
-  {(bigint) abstract_collection___CoupleMapIterator___is_ok},
-  {(bigint) 2 /* 48: CoupleMapIterator < MapIterator: superclass init_table position */},
-  {(bigint) abstract_collection___CoupleMapIterator___key},
-  {(bigint) 3 /* 50: CoupleMapIterator < CoupleMapIterator: superclass init_table position */},
-  {(bigint) abstract_collection___CoupleMapIterator___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute CoupleMapIterator::_iter */
-val_t NEW_CoupleMapIterator(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_CoupleMapIterator;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_CoupleMapIterator(val_t self, char *from) {
-}
-val_t NEW_CoupleMapIterator_abstract_collection___CoupleMapIterator___init(val_t p0) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_CoupleMapIterator();
-  abstract_collection___CoupleMapIterator___init(self, p0, init_table);
-  CHECKNEW_CoupleMapIterator(self, "abstract_collection::CoupleMapIterator::init for CoupleMapIterator");
-  return self;
-}
-const classtable_elt_t VFT_Couple[56] = {
-  {(bigint) 159 /* 0: Identity */},
-  {(bigint) 3 /* 1: Couple < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 159 /* 3: Couple < Couple: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Couple < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 50: Couple < Couple: superclass init_table position */},
-  {(bigint) abstract_collection___Couple___first},
-  {(bigint) abstract_collection___Couple___first__eq},
-  {(bigint) abstract_collection___Couple___second},
-  {(bigint) abstract_collection___Couple___second__eq},
-  {(bigint) abstract_collection___Couple___init},
-};
-/* 0: Pointer to the classtable */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 3: Attribute Couple::_first */
-/* 4: Attribute Couple::_second */
-val_t NEW_Couple(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_Couple;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Couple(val_t self, char *from) {
-}
-val_t NEW_Couple_abstract_collection___Couple___init(val_t p0, val_t p1) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Couple();
-  abstract_collection___Couple___init(self, p0, p1, init_table);
-  CHECKNEW_Couple(self, "abstract_collection::Couple::init for Couple");
-  return self;
-}
-const classtable_elt_t VFT_AbstractArrayRead[101] = {
-  {(bigint) 4079 /* 0: Identity */},
-  {(bigint) 3 /* 1: AbstractArrayRead < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: AbstractArrayRead < Collection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3239 /* 6: AbstractArrayRead < MapRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3943 /* 9: AbstractArrayRead < IndexedCollectionRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4079 /* 11: AbstractArrayRead < AbstractArrayRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AbstractArrayRead < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) array___AbstractArrayRead_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) array___AbstractArrayRead___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: AbstractArrayRead < Collection: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___iterator},
-  {(bigint) array___AbstractArrayRead___is_empty},
-  {(bigint) array___AbstractArrayRead___length},
-  {(bigint) array___AbstractArrayRead___has},
-  {(bigint) array___AbstractArrayRead___has_only},
-  {(bigint) array___AbstractArrayRead___count},
-  {(bigint) abstract_collection___IndexedCollectionRead___first},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 72: AbstractArrayRead < MapRead: superclass init_table position */},
-  {(bigint) abstract_collection___MapRead_____bra},
-  {(bigint) array___AbstractArrayRead___has_key},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 83: AbstractArrayRead < IndexedCollectionRead: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollectionRead___last},
-  {(bigint) array___AbstractArrayRead___index_of},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 94: AbstractArrayRead < AbstractArrayRead: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___last_index_of},
-  {(bigint) array___AbstractArrayRead___index_of_from},
-  {(bigint) array___AbstractArrayRead___last_index_of_from},
-  {(bigint) array___AbstractArrayRead___reversed},
-  {(bigint) array___AbstractArrayRead___copy_to},
-  {(bigint) array___AbstractArrayRead___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AbstractArrayRead::_length */
-val_t NEW_AbstractArrayRead(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_AbstractArrayRead;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_array___AbstractArrayRead____length(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AbstractArrayRead(val_t self, char *from) {
-}
-val_t NEW_AbstractArrayRead_array___AbstractArrayRead___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AbstractArrayRead();
-  array___AbstractArrayRead___init(self, init_table);
-  CHECKNEW_AbstractArrayRead(self, "array::AbstractArrayRead::init for AbstractArrayRead");
-  return self;
-}
-const classtable_elt_t VFT_AbstractArray[101] = {
-  {(bigint) 4427 /* 0: Identity */},
-  {(bigint) 3 /* 1: AbstractArray < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: AbstractArray < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: AbstractArray < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3239 /* 6: AbstractArray < MapRead: superclass typecheck marker */},
-  {(bigint) 3779 /* 7: AbstractArray < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3899 /* 8: AbstractArray < Map: superclass typecheck marker */},
-  {(bigint) 3943 /* 9: AbstractArray < IndexedCollectionRead: superclass typecheck marker */},
-  {(bigint) 4055 /* 10: AbstractArray < IndexedCollection: superclass typecheck marker */},
-  {(bigint) 4079 /* 11: AbstractArray < AbstractArrayRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4427 /* 13: AbstractArray < AbstractArray: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AbstractArray < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) array___AbstractArrayRead_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) array___AbstractArrayRead___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 9 /* 46: AbstractArray < AbstractArray: superclass init_table position */},
-  {(bigint) array___AbstractArray___enlarge},
-  {(bigint) array___AbstractArray___insert},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: AbstractArray < Collection: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___iterator},
-  {(bigint) array___AbstractArrayRead___is_empty},
-  {(bigint) array___AbstractArrayRead___length},
-  {(bigint) array___AbstractArrayRead___has},
-  {(bigint) array___AbstractArrayRead___has_only},
-  {(bigint) array___AbstractArrayRead___count},
-  {(bigint) abstract_collection___IndexedCollectionRead___first},
-  {(bigint) 5 /* 68: AbstractArray < RemovableCollection: superclass init_table position */},
-  {(bigint) array___AbstractArray___clear},
-  {(bigint) array___AbstractArray___remove},
-  {(bigint) array___AbstractArray___remove_all},
-  {(bigint) 2 /* 72: AbstractArray < MapRead: superclass init_table position */},
-  {(bigint) abstract_collection___MapRead_____bra},
-  {(bigint) array___AbstractArrayRead___has_key},
-  {(bigint) 7 /* 75: AbstractArray < SimpleCollection: superclass init_table position */},
-  {(bigint) array___AbstractArray___add},
-  {(bigint) abstract_collection___SimpleCollection___add_all},
-  {(bigint) string___Map___map_join},
-  {(bigint) 6 /* 79: AbstractArray < Map: superclass init_table position */},
-  {(bigint) abstract_collection___Map_____braeq},
-  {(bigint) array___AbstractArray___remove_at},
-  {(bigint) abstract_collection___Map___recover_with},
-  {(bigint) 3 /* 83: AbstractArray < IndexedCollectionRead: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollectionRead___last},
-  {(bigint) array___AbstractArrayRead___index_of},
-  {(bigint) 8 /* 86: AbstractArray < IndexedCollection: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollection___first__eq},
-  {(bigint) abstract_collection___IndexedCollection___last__eq},
-  {(bigint) array___AbstractArray___push},
-  {(bigint) abstract_collection___IndexedCollection___append},
-  {(bigint) array___AbstractArray___pop},
-  {(bigint) array___AbstractArray___unshift},
-  {(bigint) array___AbstractArray___shift},
-  {(bigint) 4 /* 94: AbstractArray < AbstractArrayRead: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___last_index_of},
-  {(bigint) array___AbstractArrayRead___index_of_from},
-  {(bigint) array___AbstractArrayRead___last_index_of_from},
-  {(bigint) array___AbstractArrayRead___reversed},
-  {(bigint) array___AbstractArrayRead___copy_to},
-  {(bigint) array___AbstractArrayRead___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AbstractArray::_length */
-val_t NEW_AbstractArray(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_AbstractArray;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_array___AbstractArrayRead____length(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AbstractArray(val_t self, char *from) {
-}
-val_t NEW_AbstractArray_array___AbstractArrayRead___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AbstractArray();
-  array___AbstractArrayRead___init(self, init_table);
-  CHECKNEW_AbstractArray(self, "array::AbstractArrayRead::init for AbstractArray");
-  return self;
-}
-const classtable_elt_t VFT_Array[101] = {
-  {(bigint) 4567 /* 0: Identity */},
-  {(bigint) 3 /* 1: Array < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 2: Array < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 4567 /* 3: Array < Array: superclass typecheck marker */},
-  {(bigint) 175 /* 4: Array < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: Array < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3239 /* 6: Array < MapRead: superclass typecheck marker */},
-  {(bigint) 3779 /* 7: Array < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3899 /* 8: Array < Map: superclass typecheck marker */},
-  {(bigint) 3943 /* 9: Array < IndexedCollectionRead: superclass typecheck marker */},
-  {(bigint) 4055 /* 10: Array < IndexedCollection: superclass typecheck marker */},
-  {(bigint) 4079 /* 11: Array < AbstractArrayRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4427 /* 13: Array < AbstractArray: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Array___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Array < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) array___AbstractArrayRead_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) array___AbstractArrayRead___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 10 /* 43: Array < ArrayCapable: superclass init_table position */},
-  {(bigint) array___ArrayCapable___calloc_array},
-  {0} /* Class Hole :( */,
-  {(bigint) 9 /* 46: Array < AbstractArray: superclass init_table position */},
-  {(bigint) array___Array___enlarge},
-  {(bigint) array___AbstractArray___insert},
-  {(bigint) 11 /* 49: Array < Array: superclass init_table position */},
-  {(bigint) array___Array___init},
-  {(bigint) array___Array___with_items},
-  {(bigint) array___Array___with_capacity},
-  {(bigint) array___Array___filled_with},
-  {(bigint) array___Array___with_native},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: Array < Collection: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___iterator},
-  {(bigint) array___AbstractArrayRead___is_empty},
-  {(bigint) array___AbstractArrayRead___length},
-  {(bigint) array___AbstractArrayRead___has},
-  {(bigint) array___AbstractArrayRead___has_only},
-  {(bigint) array___AbstractArrayRead___count},
-  {(bigint) abstract_collection___IndexedCollectionRead___first},
-  {(bigint) 5 /* 68: Array < RemovableCollection: superclass init_table position */},
-  {(bigint) array___AbstractArray___clear},
-  {(bigint) array___AbstractArray___remove},
-  {(bigint) array___AbstractArray___remove_all},
-  {(bigint) 2 /* 72: Array < MapRead: superclass init_table position */},
-  {(bigint) array___Array_____bra},
-  {(bigint) array___AbstractArrayRead___has_key},
-  {(bigint) 7 /* 75: Array < SimpleCollection: superclass init_table position */},
-  {(bigint) array___AbstractArray___add},
-  {(bigint) abstract_collection___SimpleCollection___add_all},
-  {(bigint) string___Map___map_join},
-  {(bigint) 6 /* 79: Array < Map: superclass init_table position */},
-  {(bigint) array___Array_____braeq},
-  {(bigint) array___AbstractArray___remove_at},
-  {(bigint) abstract_collection___Map___recover_with},
-  {(bigint) 3 /* 83: Array < IndexedCollectionRead: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollectionRead___last},
-  {(bigint) array___AbstractArrayRead___index_of},
-  {(bigint) 8 /* 86: Array < IndexedCollection: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollection___first__eq},
-  {(bigint) abstract_collection___IndexedCollection___last__eq},
-  {(bigint) array___AbstractArray___push},
-  {(bigint) abstract_collection___IndexedCollection___append},
-  {(bigint) array___AbstractArray___pop},
-  {(bigint) array___AbstractArray___unshift},
-  {(bigint) array___AbstractArray___shift},
-  {(bigint) 4 /* 94: Array < AbstractArrayRead: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___last_index_of},
-  {(bigint) array___AbstractArrayRead___index_of_from},
-  {(bigint) array___AbstractArrayRead___last_index_of_from},
-  {(bigint) array___AbstractArrayRead___reversed},
-  {(bigint) array___AbstractArrayRead___copy_to},
-  {(bigint) array___AbstractArrayRead___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Array::_length */
-/* 2: Attribute Array::_items */
-/* 3: Attribute Array::_capacity */
-val_t NEW_Array(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_Array;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_array___AbstractArrayRead____length(obj) =  TAG_Int(0);
-  ATTR_array___Array____items(obj) =  NIT_NULL /*null*/;
-  ATTR_array___Array____capacity(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Array(val_t self, char *from) {
-}
-val_t NEW_Array_array___Array___init() {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_Array();
-  array___Array___init(self, init_table);
-  CHECKNEW_Array(self, "array::Array::init for Array");
-  return self;
-}
-val_t NEW_Array_array___Array___with_items(val_t p0) {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_Array();
-  array___Array___with_items(self, p0, init_table);
-  CHECKNEW_Array(self, "array::Array::with_items for Array");
-  return self;
-}
-val_t NEW_Array_array___Array___with_capacity(val_t p0) {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_Array();
-  array___Array___with_capacity(self, p0, init_table);
-  CHECKNEW_Array(self, "array::Array::with_capacity for Array");
-  return self;
-}
-val_t NEW_Array_array___Array___filled_with(val_t p0, val_t p1) {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_Array();
-  array___Array___filled_with(self, p0, p1, init_table);
-  CHECKNEW_Array(self, "array::Array::filled_with for Array");
-  return self;
-}
-val_t NEW_Array_array___Array___with_native(val_t p0, val_t p1) {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_Array();
-  array___Array___with_native(self, p0, p1, init_table);
-  CHECKNEW_Array(self, "array::Array::with_native for Array");
-  return self;
-}
-const classtable_elt_t VFT_ArrayIterator[54] = {
-  {(bigint) 4075 /* 0: Identity */},
-  {(bigint) 3 /* 1: ArrayIterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 2: ArrayIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 3243 /* 3: ArrayIterator < MapIterator: superclass typecheck marker */},
-  {(bigint) 3939 /* 4: ArrayIterator < IndexedIterator: superclass typecheck marker */},
-  {(bigint) 4075 /* 5: ArrayIterator < ArrayIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ArrayIterator < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) array___Iterator___to_a},
-  {(bigint) 1 /* 44: ArrayIterator < Iterator: superclass init_table position */},
-  {(bigint) array___ArrayIterator___item},
-  {(bigint) array___ArrayIterator___next},
-  {(bigint) array___ArrayIterator___is_ok},
-  {(bigint) 2 /* 48: ArrayIterator < MapIterator: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedIterator___key},
-  {(bigint) 3 /* 50: ArrayIterator < IndexedIterator: superclass init_table position */},
-  {(bigint) array___ArrayIterator___index},
-  {(bigint) 4 /* 52: ArrayIterator < ArrayIterator: superclass init_table position */},
-  {(bigint) array___ArrayIterator___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ArrayIterator::_index */
-/* 2: Attribute ArrayIterator::_array */
-val_t NEW_ArrayIterator(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_ArrayIterator;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_array___ArrayIterator____index(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ArrayIterator(val_t self, char *from) {
-}
-val_t NEW_ArrayIterator_array___ArrayIterator___init(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ArrayIterator();
-  array___ArrayIterator___init(self, p0, init_table);
-  CHECKNEW_ArrayIterator(self, "array::ArrayIterator::init for ArrayIterator");
-  return self;
-}
-const classtable_elt_t VFT_ArraySet[83] = {
-  {(bigint) 4415 /* 0: Identity */},
-  {(bigint) 3 /* 1: ArraySet < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: ArraySet < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: ArraySet < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 4027 /* 6: ArraySet < Set: superclass typecheck marker */},
-  {(bigint) 3779 /* 7: ArraySet < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 4415 /* 8: ArraySet < ArraySet: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ArraySet < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 53: ArraySet < Set: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: ArraySet < Collection: superclass init_table position */},
-  {(bigint) array___ArraySet___iterator},
-  {(bigint) array___ArraySet___is_empty},
-  {(bigint) array___ArraySet___length},
-  {(bigint) array___ArraySet___has},
-  {(bigint) abstract_collection___Set___has_only},
-  {(bigint) abstract_collection___Set___count},
-  {(bigint) array___ArraySet___first},
-  {(bigint) 2 /* 68: ArraySet < RemovableCollection: superclass init_table position */},
-  {(bigint) array___ArraySet___clear},
-  {(bigint) array___ArraySet___remove},
-  {(bigint) array___ArraySet___remove_all},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 75: ArraySet < SimpleCollection: superclass init_table position */},
-  {(bigint) array___ArraySet___add},
-  {(bigint) abstract_collection___SimpleCollection___add_all},
-  {(bigint) 5 /* 78: ArraySet < ArraySet: superclass init_table position */},
-  {(bigint) array___ArraySet___enlarge},
-  {(bigint) array___ArraySet___remove_at},
-  {(bigint) array___ArraySet___init},
-  {(bigint) array___ArraySet___with_capacity},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ArraySet::_array */
-val_t NEW_ArraySet(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_ArraySet;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ArraySet(val_t self, char *from) {
-}
-val_t NEW_ArraySet_array___ArraySet___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ArraySet();
-  array___ArraySet___init(self, init_table);
-  CHECKNEW_ArraySet(self, "array::ArraySet::init for ArraySet");
-  return self;
-}
-val_t NEW_ArraySet_array___ArraySet___with_capacity(val_t p0) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ArraySet();
-  array___ArraySet___with_capacity(self, p0, init_table);
-  CHECKNEW_ArraySet(self, "array::ArraySet::with_capacity for ArraySet");
-  return self;
-}
-const classtable_elt_t VFT_ArraySetIterator[50] = {
-  {(bigint) 3387 /* 0: Identity */},
-  {(bigint) 3 /* 1: ArraySetIterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 2: ArraySetIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 3387 /* 3: ArraySetIterator < ArraySetIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ArraySetIterator < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) array___Iterator___to_a},
-  {(bigint) 1 /* 44: ArraySetIterator < Iterator: superclass init_table position */},
-  {(bigint) array___ArraySetIterator___item},
-  {(bigint) array___ArraySetIterator___next},
-  {(bigint) array___ArraySetIterator___is_ok},
-  {(bigint) 2 /* 48: ArraySetIterator < ArraySetIterator: superclass init_table position */},
-  {(bigint) array___ArraySetIterator___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ArraySetIterator::_iter */
-val_t NEW_ArraySetIterator(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_ArraySetIterator;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ArraySetIterator(val_t self, char *from) {
-}
-val_t NEW_ArraySetIterator_array___ArraySetIterator___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ArraySetIterator();
-  array___ArraySetIterator___init(self, p0, init_table);
-  CHECKNEW_ArraySetIterator(self, "array::ArraySetIterator::init for ArraySetIterator");
-  return self;
-}
-const classtable_elt_t VFT_ArrayMap[88] = {
-  {(bigint) 4419 /* 0: Identity */},
-  {(bigint) 3 /* 1: ArrayMap < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: ArrayMap < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: ArrayMap < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3239 /* 6: ArrayMap < MapRead: superclass typecheck marker */},
-  {(bigint) 4071 /* 7: ArrayMap < CoupleMap: superclass typecheck marker */},
-  {(bigint) 3899 /* 8: ArrayMap < Map: superclass typecheck marker */},
-  {(bigint) 4419 /* 9: ArrayMap < ArrayMap: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ArrayMap < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 5 /* 53: ArrayMap < CoupleMap: superclass init_table position */},
-  {(bigint) array___ArrayMap___couple_at},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: ArrayMap < Collection: superclass init_table position */},
-  {(bigint) array___ArrayMap___iterator},
-  {(bigint) array___ArrayMap___is_empty},
-  {(bigint) array___ArrayMap___length},
-  {(bigint) array___ArrayMap___has},
-  {(bigint) array___ArrayMap___has_only},
-  {(bigint) array___ArrayMap___count},
-  {(bigint) array___ArrayMap___first},
-  {(bigint) 2 /* 68: ArrayMap < RemovableCollection: superclass init_table position */},
-  {(bigint) array___ArrayMap___clear},
-  {(bigint) array___ArrayMap___remove},
-  {(bigint) array___ArrayMap___remove_all},
-  {(bigint) 3 /* 72: ArrayMap < MapRead: superclass init_table position */},
-  {(bigint) array___ArrayMap_____bra},
-  {(bigint) array___ArrayMap___has_key},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Map___map_join},
-  {(bigint) 4 /* 79: ArrayMap < Map: superclass init_table position */},
-  {(bigint) array___ArrayMap_____braeq},
-  {(bigint) array___ArrayMap___remove_at},
-  {(bigint) abstract_collection___Map___recover_with},
-  {(bigint) 6 /* 83: ArrayMap < ArrayMap: superclass init_table position */},
-  {(bigint) array___ArrayMap___enlarge},
-  {(bigint) array___ArrayMap___remove_at_index},
-  {(bigint) array___ArrayMap___index},
-  {(bigint) array___ArrayMap___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ArrayMap::_items */
-/* 2: Attribute ArrayMap::_last_index */
-val_t NEW_ArrayMap(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_ArrayMap;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_array___ArrayMap____last_index(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ArrayMap(val_t self, char *from) {
-}
-val_t NEW_ArrayMap_array___ArrayMap___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ArrayMap();
-  array___ArrayMap___init(self, init_table);
-  CHECKNEW_ArrayMap(self, "array::ArrayMap::init for ArrayMap");
-  return self;
-}
-const classtable_elt_t VFT_ArrayCapable[45] = {
-  {(bigint) 187 /* 0: Identity */},
-  {(bigint) 3 /* 1: ArrayCapable < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 2: ArrayCapable < ArrayCapable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ArrayCapable < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ArrayCapable < ArrayCapable: superclass init_table position */},
-  {(bigint) array___ArrayCapable___calloc_array},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ArrayCapable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ArrayCapable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ArrayCapable(val_t self, char *from) {
-}
-const classtable_elt_t VFT_NativeArray[47] = {
-  {(bigint) -9 /* 0: Identity */},
-  {(bigint) 3 /* 1: NativeArray < Object: superclass typecheck marker */},
-  {(bigint) -9 /* 2: NativeArray < NativeArray: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: NativeArray < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: NativeArray < NativeArray: superclass init_table position */},
-  {(bigint) array___NativeArray_____bra},
-  {(bigint) array___NativeArray_____braeq},
-  {(bigint) array___NativeArray___copy_to},
-};
-/* 0: Pointer to the classtable */
-val_t BOX_NativeArray(val_t * val) {
-  struct TBOX_NativeArray *box = (struct TBOX_NativeArray*)alloc(sizeof(struct TBOX_NativeArray));
-  box->vft = VFT_NativeArray;
-  box->val = val;
-  return OBJ2VAL(box);
-}
-const classtable_elt_t VFT_AbstractString[113] = {
-  {(bigint) 4423 /* 0: Identity */},
-  {(bigint) 3 /* 1: AbstractString < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: AbstractString < Collection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3239 /* 6: AbstractString < MapRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3943 /* 9: AbstractString < IndexedCollectionRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4079 /* 11: AbstractString < AbstractArrayRead: superclass typecheck marker */},
-  {(bigint) 4423 /* 12: AbstractString < AbstractString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AbstractString < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) array___AbstractArrayRead_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) string___AbstractString___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: AbstractString < Collection: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___iterator},
-  {(bigint) array___AbstractArrayRead___is_empty},
-  {(bigint) array___AbstractArrayRead___length},
-  {(bigint) array___AbstractArrayRead___has},
-  {(bigint) array___AbstractArrayRead___has_only},
-  {(bigint) array___AbstractArrayRead___count},
-  {(bigint) abstract_collection___IndexedCollectionRead___first},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 72: AbstractString < MapRead: superclass init_table position */},
-  {(bigint) string___AbstractString_____bra},
-  {(bigint) array___AbstractArrayRead___has_key},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 83: AbstractString < IndexedCollectionRead: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollectionRead___last},
-  {(bigint) array___AbstractArrayRead___index_of},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 94: AbstractString < AbstractArrayRead: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___last_index_of},
-  {(bigint) array___AbstractArrayRead___index_of_from},
-  {(bigint) array___AbstractArrayRead___last_index_of_from},
-  {(bigint) array___AbstractArrayRead___reversed},
-  {(bigint) array___AbstractArrayRead___copy_to},
-  {(bigint) array___AbstractArrayRead___init},
-  {(bigint) 5 /* 101: AbstractString < AbstractString: superclass init_table position */},
-  {(bigint) string___AbstractString___items},
-  {(bigint) string___AbstractString___substring},
-  {(bigint) string___AbstractString___substring_from},
-  {(bigint) string___AbstractString___has_substring},
-  {(bigint) string___AbstractString___has_prefix},
-  {(bigint) string___AbstractString___has_suffix},
-  {(bigint) string___AbstractString___to_i},
-  {(bigint) string___AbstractString___to_hex},
-  {(bigint) string___AbstractString___a_to},
-  {(bigint) string___AbstractString___to_upper},
-  {(bigint) string___AbstractString___to_lower},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AbstractString::_length */
-/* 2: Attribute AbstractString::_items */
-val_t NEW_AbstractString(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_AbstractString;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_array___AbstractArrayRead____length(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AbstractString(val_t self, char *from) {
-}
-val_t NEW_AbstractString_array___AbstractArrayRead___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AbstractString();
-  array___AbstractArrayRead___init(self, init_table);
-  CHECKNEW_AbstractString(self, "array::AbstractArrayRead::init for AbstractString");
-  return self;
-}
-const classtable_elt_t VFT_String[133] = {
-  {(bigint) 4559 /* 0: Identity */},
-  {(bigint) 3 /* 1: String < Object: superclass typecheck marker */},
-  {(bigint) 51 /* 2: String < Pattern: superclass typecheck marker */},
-  {(bigint) 167 /* 3: String < Comparable: superclass typecheck marker */},
-  {(bigint) 175 /* 4: String < Collection: superclass typecheck marker */},
-  {(bigint) 4559 /* 5: String < String: superclass typecheck marker */},
-  {(bigint) 3239 /* 6: String < MapRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3943 /* 9: String < IndexedCollectionRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4079 /* 11: String < AbstractArrayRead: superclass typecheck marker */},
-  {(bigint) 4423 /* 12: String < AbstractString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___String___hash},
-  {(bigint) string___String___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: String < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) string___String_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) string___AbstractString___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 7 /* 43: String < Pattern: superclass init_table position */},
-  {(bigint) string_search___String___search_index_in},
-  {(bigint) string_search___String___search_in},
-  {(bigint) string_search___Pattern___search_all_in},
-  {(bigint) string_search___Pattern___split_in},
-  {(bigint) string_search___Pattern___init},
-  {(bigint) 1 /* 49: String < Comparable: superclass init_table position */},
-  {(bigint) string___String_____l},
-  {(bigint) kernel___Comparable_____leq},
-  {(bigint) kernel___Comparable_____geq},
-  {(bigint) kernel___Comparable_____g},
-  {(bigint) kernel___Comparable_____leqg},
-  {(bigint) kernel___Comparable___is_between},
-  {(bigint) kernel___Comparable___max},
-  {(bigint) kernel___Comparable___min},
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 2 /* 60: String < Collection: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___iterator},
-  {(bigint) array___AbstractArrayRead___is_empty},
-  {(bigint) array___AbstractArrayRead___length},
-  {(bigint) array___AbstractArrayRead___has},
-  {(bigint) array___AbstractArrayRead___has_only},
-  {(bigint) array___AbstractArrayRead___count},
-  {(bigint) abstract_collection___IndexedCollectionRead___first},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 72: String < MapRead: superclass init_table position */},
-  {(bigint) string___AbstractString_____bra},
-  {(bigint) array___AbstractArrayRead___has_key},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 83: String < IndexedCollectionRead: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollectionRead___last},
-  {(bigint) array___AbstractArrayRead___index_of},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 5 /* 94: String < AbstractArrayRead: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___last_index_of},
-  {(bigint) array___AbstractArrayRead___index_of_from},
-  {(bigint) array___AbstractArrayRead___last_index_of_from},
-  {(bigint) array___AbstractArrayRead___reversed},
-  {(bigint) array___AbstractArrayRead___copy_to},
-  {(bigint) array___AbstractArrayRead___init},
-  {(bigint) 6 /* 101: String < AbstractString: superclass init_table position */},
-  {(bigint) string___AbstractString___items},
-  {(bigint) string___AbstractString___substring},
-  {(bigint) string___AbstractString___substring_from},
-  {(bigint) string___AbstractString___has_substring},
-  {(bigint) string___AbstractString___has_prefix},
-  {(bigint) string___AbstractString___has_suffix},
-  {(bigint) string___AbstractString___to_i},
-  {(bigint) string___AbstractString___to_hex},
-  {(bigint) string___AbstractString___a_to},
-  {(bigint) string___AbstractString___to_upper},
-  {(bigint) string___AbstractString___to_lower},
-  {(bigint) symbol___String___to_symbol},
-  {(bigint) 8 /* 114: String < String: superclass init_table position */},
-  {(bigint) string___String___with_native},
-  {(bigint) string___String___from_cstring},
-  {(bigint) string___String___to_cstring},
-  {(bigint) string___String_____plus},
-  {(bigint) string___String_____star},
-  {(bigint) file___String___file_exists},
-  {(bigint) file___String___file_stat},
-  {(bigint) file___String___file_delete},
-  {(bigint) file___String___strip_extension},
-  {(bigint) file___String___basename},
-  {(bigint) file___String___dirname},
-  {(bigint) file___String___file_path},
-  {(bigint) file___String___mkdir},
-  {(bigint) string_search___String___search},
-  {(bigint) string_search___String___search_from},
-  {(bigint) string_search___String___search_all},
-  {(bigint) string_search___String___split_with},
-  {(bigint) string_search___String___split},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute String::_length */
-/* 2: Attribute String::_items */
-val_t NEW_String(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_String;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_array___AbstractArrayRead____length(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_String(val_t self, char *from) {
-}
-val_t NEW_String_string___String___with_native(val_t p0, val_t p1) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_String();
-  string___String___with_native(self, p0, p1, init_table);
-  CHECKNEW_String(self, "string::String::with_native for String");
-  return self;
-}
-val_t NEW_String_string___String___from_cstring(val_t p0) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_String();
-  string___String___from_cstring(self, p0, init_table);
-  CHECKNEW_String(self, "string::String::from_cstring for String");
-  return self;
-}
-const classtable_elt_t VFT_Buffer[119] = {
-  {(bigint) 4563 /* 0: Identity */},
-  {(bigint) 3 /* 1: Buffer < Object: superclass typecheck marker */},
-  {(bigint) 27 /* 2: Buffer < StringCapable: superclass typecheck marker */},
-  {(bigint) 167 /* 3: Buffer < Comparable: superclass typecheck marker */},
-  {(bigint) 175 /* 4: Buffer < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: Buffer < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3239 /* 6: Buffer < MapRead: superclass typecheck marker */},
-  {(bigint) 3779 /* 7: Buffer < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3899 /* 8: Buffer < Map: superclass typecheck marker */},
-  {(bigint) 3943 /* 9: Buffer < IndexedCollectionRead: superclass typecheck marker */},
-  {(bigint) 4055 /* 10: Buffer < IndexedCollection: superclass typecheck marker */},
-  {(bigint) 4079 /* 11: Buffer < AbstractArrayRead: superclass typecheck marker */},
-  {(bigint) 4423 /* 12: Buffer < AbstractString: superclass typecheck marker */},
-  {(bigint) 4427 /* 13: Buffer < AbstractArray: superclass typecheck marker */},
-  {(bigint) 4563 /* 14: Buffer < Buffer: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Buffer___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Buffer < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) string___Buffer_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) string___AbstractString___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 7 /* 43: Buffer < StringCapable: superclass init_table position */},
-  {(bigint) string___StringCapable___calloc_string},
-  {(bigint) string___StringCapable___init},
-  {(bigint) 12 /* 46: Buffer < AbstractArray: superclass init_table position */},
-  {(bigint) string___Buffer___enlarge},
-  {(bigint) array___AbstractArray___insert},
-  {(bigint) 6 /* 49: Buffer < Comparable: superclass init_table position */},
-  {(bigint) string___Buffer_____l},
-  {(bigint) kernel___Comparable_____leq},
-  {(bigint) kernel___Comparable_____geq},
-  {(bigint) kernel___Comparable_____g},
-  {(bigint) kernel___Comparable_____leqg},
-  {(bigint) kernel___Comparable___is_between},
-  {(bigint) kernel___Comparable___max},
-  {(bigint) kernel___Comparable___min},
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: Buffer < Collection: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___iterator},
-  {(bigint) array___AbstractArrayRead___is_empty},
-  {(bigint) array___AbstractArrayRead___length},
-  {(bigint) array___AbstractArrayRead___has},
-  {(bigint) array___AbstractArrayRead___has_only},
-  {(bigint) array___AbstractArrayRead___count},
-  {(bigint) abstract_collection___IndexedCollectionRead___first},
-  {(bigint) 8 /* 68: Buffer < RemovableCollection: superclass init_table position */},
-  {(bigint) array___AbstractArray___clear},
-  {(bigint) array___AbstractArray___remove},
-  {(bigint) array___AbstractArray___remove_all},
-  {(bigint) 2 /* 72: Buffer < MapRead: superclass init_table position */},
-  {(bigint) string___AbstractString_____bra},
-  {(bigint) array___AbstractArrayRead___has_key},
-  {(bigint) 10 /* 75: Buffer < SimpleCollection: superclass init_table position */},
-  {(bigint) string___Buffer___add},
-  {(bigint) abstract_collection___SimpleCollection___add_all},
-  {(bigint) string___Map___map_join},
-  {(bigint) 9 /* 79: Buffer < Map: superclass init_table position */},
-  {(bigint) string___Buffer_____braeq},
-  {(bigint) array___AbstractArray___remove_at},
-  {(bigint) abstract_collection___Map___recover_with},
-  {(bigint) 3 /* 83: Buffer < IndexedCollectionRead: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollectionRead___last},
-  {(bigint) array___AbstractArrayRead___index_of},
-  {(bigint) 11 /* 86: Buffer < IndexedCollection: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollection___first__eq},
-  {(bigint) abstract_collection___IndexedCollection___last__eq},
-  {(bigint) array___AbstractArray___push},
-  {(bigint) string___Buffer___append},
-  {(bigint) array___AbstractArray___pop},
-  {(bigint) array___AbstractArray___unshift},
-  {(bigint) array___AbstractArray___shift},
-  {(bigint) 4 /* 94: Buffer < AbstractArrayRead: superclass init_table position */},
-  {(bigint) array___AbstractArrayRead___last_index_of},
-  {(bigint) array___AbstractArrayRead___index_of_from},
-  {(bigint) array___AbstractArrayRead___last_index_of_from},
-  {(bigint) array___AbstractArrayRead___reversed},
-  {(bigint) array___AbstractArrayRead___copy_to},
-  {(bigint) array___AbstractArrayRead___init},
-  {(bigint) 5 /* 101: Buffer < AbstractString: superclass init_table position */},
-  {(bigint) string___AbstractString___items},
-  {(bigint) string___AbstractString___substring},
-  {(bigint) string___AbstractString___substring_from},
-  {(bigint) string___AbstractString___has_substring},
-  {(bigint) string___AbstractString___has_prefix},
-  {(bigint) string___AbstractString___has_suffix},
-  {(bigint) string___AbstractString___to_i},
-  {(bigint) string___AbstractString___to_hex},
-  {(bigint) string___AbstractString___a_to},
-  {(bigint) string___AbstractString___to_upper},
-  {(bigint) string___AbstractString___to_lower},
-  {(bigint) 13 /* 113: Buffer < Buffer: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollection___append},
-  {(bigint) string___Buffer___init},
-  {(bigint) string___Buffer___from},
-  {(bigint) string___Buffer___with_capacity},
-  {(bigint) string___Buffer___capacity},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Buffer::_length */
-/* 2: Attribute Buffer::_items */
-/* 3: Attribute Buffer::_capacity */
-val_t NEW_Buffer(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_Buffer;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_array___AbstractArrayRead____length(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Buffer(val_t self, char *from) {
-}
-val_t NEW_Buffer_string___Buffer___init() {
-  int init_table[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_Buffer();
-  string___Buffer___init(self, init_table);
-  CHECKNEW_Buffer(self, "string::Buffer::init for Buffer");
-  return self;
-}
-val_t NEW_Buffer_string___Buffer___from(val_t p0) {
-  int init_table[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_Buffer();
-  string___Buffer___from(self, p0, init_table);
-  CHECKNEW_Buffer(self, "string::Buffer::from for Buffer");
-  return self;
-}
-val_t NEW_Buffer_string___Buffer___with_capacity(val_t p0) {
-  int init_table[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_Buffer();
-  string___Buffer___with_capacity(self, p0, init_table);
-  CHECKNEW_Buffer(self, "string::Buffer::with_capacity for Buffer");
-  return self;
-}
-const classtable_elt_t VFT_NativeString[56] = {
-  {(bigint) -5 /* 0: Identity */},
-  {(bigint) 3 /* 1: NativeString < Object: superclass typecheck marker */},
-  {(bigint) -5 /* 2: NativeString < NativeString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: NativeString < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) environ___NativeString___get_environ},
-  {(bigint) 1 /* 44: NativeString < NativeString: superclass init_table position */},
-  {(bigint) string___NativeString_____bra},
-  {(bigint) string___NativeString_____braeq},
-  {(bigint) string___NativeString___copy_to},
-  {(bigint) string___NativeString___cstring_length},
-  {(bigint) string___NativeString___atoi},
-  {(bigint) string___NativeString___init},
-  {(bigint) file___NativeString___file_exists},
-  {(bigint) file___NativeString___file_stat},
-  {(bigint) file___NativeString___file_mkdir},
-  {(bigint) file___NativeString___file_delete},
-  {(bigint) exec___NativeString___system},
-};
-/* 0: Pointer to the classtable */
-val_t BOX_NativeString(char * val) {
-  struct TBOX_NativeString *box = (struct TBOX_NativeString*)alloc(sizeof(struct TBOX_NativeString));
-  box->vft = VFT_NativeString;
-  box->val = val;
-  return OBJ2VAL(box);
-}
-const classtable_elt_t VFT_StringCapable[46] = {
-  {(bigint) 27 /* 0: Identity */},
-  {(bigint) 3 /* 1: StringCapable < Object: superclass typecheck marker */},
-  {(bigint) 27 /* 2: StringCapable < StringCapable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: StringCapable < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: StringCapable < StringCapable: superclass init_table position */},
-  {(bigint) string___StringCapable___calloc_string},
-  {(bigint) string___StringCapable___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_StringCapable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_StringCapable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_StringCapable(val_t self, char *from) {
-}
-val_t NEW_StringCapable_string___StringCapable___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_StringCapable();
-  string___StringCapable___init(self, init_table);
-  CHECKNEW_StringCapable(self, "string::StringCapable::init for StringCapable");
-  return self;
-}
-const classtable_elt_t VFT_HashCollection[68] = {
-  {(bigint) 3323 /* 0: Identity */},
-  {(bigint) 3 /* 1: HashCollection < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 2: HashCollection < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 3323 /* 3: HashCollection < HashCollection: superclass typecheck marker */},
-  {(bigint) 175 /* 4: HashCollection < Collection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: HashCollection < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: HashCollection < ArrayCapable: superclass init_table position */},
-  {(bigint) array___ArrayCapable___calloc_array},
-  {(bigint) 3 /* 45: HashCollection < HashCollection: superclass init_table position */},
-  {(bigint) hash___HashCollection___first_item},
-  {(bigint) hash___HashCollection___index_at},
-  {(bigint) hash___HashCollection___store},
-  {(bigint) hash___HashCollection___remove_index},
-  {(bigint) hash___HashCollection___raz},
-  {(bigint) hash___HashCollection___enlarge},
-  {(bigint) hash___HashCollection___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: HashCollection < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___Collection___iterator},
-  {(bigint) abstract_collection___Collection___is_empty},
-  {(bigint) hash___HashCollection___length},
-  {(bigint) abstract_collection___Collection___has},
-  {(bigint) abstract_collection___Collection___has_only},
-  {(bigint) abstract_collection___Collection___count},
-  {(bigint) abstract_collection___Collection___first},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute HashCollection::_array */
-/* 2: Attribute HashCollection::_capacity */
-/* 3: Attribute HashCollection::_length */
-/* 4: Attribute HashCollection::_first_item */
-/* 5: Attribute HashCollection::_last_item */
-/* 6: Attribute HashCollection::_last_accessed_index */
-/* 7: Attribute HashCollection::_last_accessed_key */
-val_t NEW_HashCollection(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_HashCollection;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_hash___HashCollection____array(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashCollection____capacity(obj) =  TAG_Int(0);
-  ATTR_hash___HashCollection____length(obj) =  TAG_Int(0);
-  ATTR_hash___HashCollection____first_item(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashCollection____last_item(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashCollection____last_accessed_index(obj) = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-  ATTR_hash___HashCollection____last_accessed_key(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_HashCollection(val_t self, char *from) {
-}
-val_t NEW_HashCollection_hash___HashCollection___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_HashCollection();
-  hash___HashCollection___init(self, init_table);
-  CHECKNEW_HashCollection(self, "hash::HashCollection::init for HashCollection");
-  return self;
-}
-const classtable_elt_t VFT_HashNode[50] = {
-  {(bigint) 147 /* 0: Identity */},
-  {(bigint) 3 /* 1: HashNode < Object: superclass typecheck marker */},
-  {(bigint) 147 /* 2: HashNode < HashNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: HashNode < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: HashNode < HashNode: superclass init_table position */},
-  {(bigint) hash___HashNode___key},
-  {(bigint) hash___HashNode___next_item},
-  {(bigint) hash___HashNode___next_item__eq},
-  {(bigint) hash___HashNode___prev_item},
-  {(bigint) hash___HashNode___prev_item__eq},
-  {(bigint) hash___HashNode___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute HashNode::_next_item */
-/* 2: Attribute HashNode::_prev_item */
-val_t NEW_HashNode(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_HashNode;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_hash___HashNode____next_item(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashNode____prev_item(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_HashNode(val_t self, char *from) {
-}
-val_t NEW_HashNode_hash___HashNode___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_HashNode();
-  hash___HashNode___init(self, init_table);
-  CHECKNEW_HashNode(self, "hash::HashNode::init for HashNode");
-  return self;
-}
-const classtable_elt_t VFT_HashMap[83] = {
-  {(bigint) 4411 /* 0: Identity */},
-  {(bigint) 3 /* 1: HashMap < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 2: HashMap < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 3323 /* 3: HashMap < HashCollection: superclass typecheck marker */},
-  {(bigint) 175 /* 4: HashMap < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: HashMap < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3239 /* 6: HashMap < MapRead: superclass typecheck marker */},
-  {(bigint) 4071 /* 7: HashMap < CoupleMap: superclass typecheck marker */},
-  {(bigint) 3899 /* 8: HashMap < Map: superclass typecheck marker */},
-  {(bigint) 4411 /* 9: HashMap < HashMap: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: HashMap < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 6 /* 43: HashMap < ArrayCapable: superclass init_table position */},
-  {(bigint) array___ArrayCapable___calloc_array},
-  {(bigint) 7 /* 45: HashMap < HashCollection: superclass init_table position */},
-  {(bigint) hash___HashCollection___first_item},
-  {(bigint) hash___HashCollection___index_at},
-  {(bigint) hash___HashCollection___store},
-  {(bigint) hash___HashCollection___remove_index},
-  {(bigint) hash___HashCollection___raz},
-  {(bigint) hash___HashCollection___enlarge},
-  {(bigint) hash___HashCollection___init},
-  {(bigint) 5 /* 53: HashMap < CoupleMap: superclass init_table position */},
-  {(bigint) hash___HashMap___couple_at},
-  {(bigint) 8 /* 55: HashMap < HashMap: superclass init_table position */},
-  {(bigint) hash___HashMap___init},
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: HashMap < Collection: superclass init_table position */},
-  {(bigint) hash___HashMap___iterator},
-  {(bigint) hash___HashMap___is_empty},
-  {(bigint) hash___HashCollection___length},
-  {(bigint) hash___HashMap___has},
-  {(bigint) hash___HashMap___has_only},
-  {(bigint) hash___HashMap___count},
-  {(bigint) hash___HashMap___first},
-  {(bigint) 2 /* 68: HashMap < RemovableCollection: superclass init_table position */},
-  {(bigint) hash___HashMap___clear},
-  {(bigint) hash___HashMap___remove},
-  {(bigint) abstract_collection___RemovableCollection___remove_all},
-  {(bigint) 3 /* 72: HashMap < MapRead: superclass init_table position */},
-  {(bigint) abstract_collection___CoupleMap_____bra},
-  {(bigint) abstract_collection___CoupleMap___has_key},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Map___map_join},
-  {(bigint) 4 /* 79: HashMap < Map: superclass init_table position */},
-  {(bigint) hash___HashMap_____braeq},
-  {(bigint) hash___HashMap___remove_at},
-  {(bigint) abstract_collection___Map___recover_with},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute HashMap::_array */
-/* 2: Attribute HashMap::_capacity */
-/* 3: Attribute HashMap::_length */
-/* 4: Attribute HashMap::_first_item */
-/* 5: Attribute HashMap::_last_item */
-/* 6: Attribute HashMap::_last_accessed_index */
-/* 7: Attribute HashMap::_last_accessed_key */
-val_t NEW_HashMap(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_HashMap;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_hash___HashCollection____array(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashCollection____capacity(obj) =  TAG_Int(0);
-  ATTR_hash___HashCollection____length(obj) =  TAG_Int(0);
-  ATTR_hash___HashCollection____first_item(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashCollection____last_item(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashCollection____last_accessed_index(obj) = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-  ATTR_hash___HashCollection____last_accessed_key(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_HashMap(val_t self, char *from) {
-}
-val_t NEW_HashMap_hash___HashMap___init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_HashMap();
-  hash___HashMap___init(self, init_table);
-  CHECKNEW_HashMap(self, "hash::HashMap::init for HashMap");
-  return self;
-}
-const classtable_elt_t VFT_HashMapNode[58] = {
-  {(bigint) 3319 /* 0: Identity */},
-  {(bigint) 3 /* 1: HashMapNode < Object: superclass typecheck marker */},
-  {(bigint) 147 /* 2: HashMapNode < HashNode: superclass typecheck marker */},
-  {(bigint) 159 /* 3: HashMapNode < Couple: superclass typecheck marker */},
-  {(bigint) 3319 /* 4: HashMapNode < HashMapNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: HashMapNode < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: HashMapNode < HashNode: superclass init_table position */},
-  {(bigint) hash___HashMapNode___key},
-  {(bigint) hash___HashNode___next_item},
-  {(bigint) hash___HashNode___next_item__eq},
-  {(bigint) hash___HashNode___prev_item},
-  {(bigint) hash___HashNode___prev_item__eq},
-  {(bigint) hash___HashNode___init},
-  {(bigint) 1 /* 50: HashMapNode < Couple: superclass init_table position */},
-  {(bigint) abstract_collection___Couple___first},
-  {(bigint) abstract_collection___Couple___first__eq},
-  {(bigint) abstract_collection___Couple___second},
-  {(bigint) abstract_collection___Couple___second__eq},
-  {(bigint) abstract_collection___Couple___init},
-  {(bigint) 3 /* 56: HashMapNode < HashMapNode: superclass init_table position */},
-  {(bigint) hash___HashMapNode___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute HashMapNode::_next_item */
-/* 2: Attribute HashMapNode::_prev_item */
-/* 3: Attribute HashMapNode::_first */
-/* 4: Attribute HashMapNode::_second */
-val_t NEW_HashMapNode(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_HashMapNode;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_hash___HashNode____next_item(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashNode____prev_item(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_HashMapNode(val_t self, char *from) {
-}
-val_t NEW_HashMapNode_hash___HashMapNode___init(val_t p0, val_t p1) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_HashMapNode();
-  hash___HashMapNode___init(self, p0, p1, init_table);
-  CHECKNEW_HashMapNode(self, "hash::HashMapNode::init for HashMapNode");
-  return self;
-}
-const classtable_elt_t VFT_HashMapIterator[52] = {
-  {(bigint) 3955 /* 0: Identity */},
-  {(bigint) 3 /* 1: HashMapIterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 2: HashMapIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 3243 /* 3: HashMapIterator < MapIterator: superclass typecheck marker */},
-  {(bigint) 3955 /* 4: HashMapIterator < HashMapIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: HashMapIterator < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) array___Iterator___to_a},
-  {(bigint) 1 /* 44: HashMapIterator < Iterator: superclass init_table position */},
-  {(bigint) hash___HashMapIterator___item},
-  {(bigint) hash___HashMapIterator___next},
-  {(bigint) hash___HashMapIterator___is_ok},
-  {(bigint) 2 /* 48: HashMapIterator < MapIterator: superclass init_table position */},
-  {(bigint) hash___HashMapIterator___key},
-  {(bigint) 3 /* 50: HashMapIterator < HashMapIterator: superclass init_table position */},
-  {(bigint) hash___HashMapIterator___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute HashMapIterator::_map */
-/* 2: Attribute HashMapIterator::_node */
-val_t NEW_HashMapIterator(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_HashMapIterator;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_HashMapIterator(val_t self, char *from) {
-}
-val_t NEW_HashMapIterator_hash___HashMapIterator___init(val_t p0) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_HashMapIterator();
-  hash___HashMapIterator___init(self, p0, init_table);
-  CHECKNEW_HashMapIterator(self, "hash::HashMapIterator::init for HashMapIterator");
-  return self;
-}
-const classtable_elt_t VFT_HashSet[78] = {
-  {(bigint) 4407 /* 0: Identity */},
-  {(bigint) 3 /* 1: HashSet < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 2: HashSet < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 3323 /* 3: HashSet < HashCollection: superclass typecheck marker */},
-  {(bigint) 175 /* 4: HashSet < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: HashSet < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 4027 /* 6: HashSet < Set: superclass typecheck marker */},
-  {(bigint) 3779 /* 7: HashSet < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 4407 /* 8: HashSet < HashSet: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: HashSet < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 5 /* 43: HashSet < ArrayCapable: superclass init_table position */},
-  {(bigint) array___ArrayCapable___calloc_array},
-  {(bigint) 6 /* 45: HashSet < HashCollection: superclass init_table position */},
-  {(bigint) hash___HashCollection___first_item},
-  {(bigint) hash___HashCollection___index_at},
-  {(bigint) hash___HashCollection___store},
-  {(bigint) hash___HashCollection___remove_index},
-  {(bigint) hash___HashCollection___raz},
-  {(bigint) hash___HashCollection___enlarge},
-  {(bigint) hash___HashCollection___init},
-  {(bigint) 4 /* 53: HashSet < Set: superclass init_table position */},
-  {(bigint) 7 /* 54: HashSet < HashSet: superclass init_table position */},
-  {(bigint) hash___HashSet___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: HashSet < Collection: superclass init_table position */},
-  {(bigint) hash___HashSet___iterator},
-  {(bigint) hash___HashSet___is_empty},
-  {(bigint) hash___HashCollection___length},
-  {(bigint) hash___HashSet___has},
-  {(bigint) abstract_collection___Set___has_only},
-  {(bigint) abstract_collection___Set___count},
-  {(bigint) hash___HashSet___first},
-  {(bigint) 2 /* 68: HashSet < RemovableCollection: superclass init_table position */},
-  {(bigint) hash___HashSet___clear},
-  {(bigint) hash___HashSet___remove},
-  {(bigint) abstract_collection___Set___remove_all},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 75: HashSet < SimpleCollection: superclass init_table position */},
-  {(bigint) hash___HashSet___add},
-  {(bigint) abstract_collection___SimpleCollection___add_all},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute HashSet::_array */
-/* 2: Attribute HashSet::_capacity */
-/* 3: Attribute HashSet::_length */
-/* 4: Attribute HashSet::_first_item */
-/* 5: Attribute HashSet::_last_item */
-/* 6: Attribute HashSet::_last_accessed_index */
-/* 7: Attribute HashSet::_last_accessed_key */
-val_t NEW_HashSet(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_HashSet;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_hash___HashCollection____array(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashCollection____capacity(obj) =  TAG_Int(0);
-  ATTR_hash___HashCollection____length(obj) =  TAG_Int(0);
-  ATTR_hash___HashCollection____first_item(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashCollection____last_item(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashCollection____last_accessed_index(obj) = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-  ATTR_hash___HashCollection____last_accessed_key(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_HashSet(val_t self, char *from) {
-}
-val_t NEW_HashSet_hash___HashSet___init() {
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_HashSet();
-  hash___HashSet___init(self, init_table);
-  CHECKNEW_HashSet(self, "hash::HashSet::init for HashSet");
-  return self;
-}
-const classtable_elt_t VFT_HashSetNode[53] = {
-  {(bigint) 3311 /* 0: Identity */},
-  {(bigint) 3 /* 1: HashSetNode < Object: superclass typecheck marker */},
-  {(bigint) 147 /* 2: HashSetNode < HashNode: superclass typecheck marker */},
-  {(bigint) 3311 /* 3: HashSetNode < HashSetNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: HashSetNode < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: HashSetNode < HashNode: superclass init_table position */},
-  {(bigint) hash___HashSetNode___key},
-  {(bigint) hash___HashNode___next_item},
-  {(bigint) hash___HashNode___next_item__eq},
-  {(bigint) hash___HashNode___prev_item},
-  {(bigint) hash___HashNode___prev_item__eq},
-  {(bigint) hash___HashNode___init},
-  {(bigint) 2 /* 50: HashSetNode < HashSetNode: superclass init_table position */},
-  {(bigint) hash___HashSetNode___key__eq},
-  {(bigint) hash___HashSetNode___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute HashSetNode::_next_item */
-/* 2: Attribute HashSetNode::_prev_item */
-/* 3: Attribute HashSetNode::_key */
-val_t NEW_HashSetNode(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_HashSetNode;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_hash___HashNode____next_item(obj) =  NIT_NULL /*null*/;
-  ATTR_hash___HashNode____prev_item(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_HashSetNode(val_t self, char *from) {
-}
-val_t NEW_HashSetNode_hash___HashSetNode___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_HashSetNode();
-  hash___HashSetNode___init(self, p0, init_table);
-  CHECKNEW_HashSetNode(self, "hash::HashSetNode::init for HashSetNode");
-  return self;
-}
-const classtable_elt_t VFT_HashSetIterator[50] = {
-  {(bigint) 3315 /* 0: Identity */},
-  {(bigint) 3 /* 1: HashSetIterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 2: HashSetIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 3315 /* 3: HashSetIterator < HashSetIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: HashSetIterator < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) array___Iterator___to_a},
-  {(bigint) 1 /* 44: HashSetIterator < Iterator: superclass init_table position */},
-  {(bigint) hash___HashSetIterator___item},
-  {(bigint) hash___HashSetIterator___next},
-  {(bigint) hash___HashSetIterator___is_ok},
-  {(bigint) 2 /* 48: HashSetIterator < HashSetIterator: superclass init_table position */},
-  {(bigint) hash___HashSetIterator___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute HashSetIterator::_set */
-/* 2: Attribute HashSetIterator::_node */
-val_t NEW_HashSetIterator(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_HashSetIterator;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_HashSetIterator(val_t self, char *from) {
-}
-val_t NEW_HashSetIterator_hash___HashSetIterator___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_HashSetIterator();
-  hash___HashSetIterator___init(self, p0, init_table);
-  CHECKNEW_HashSetIterator(self, "hash::HashSetIterator::init for HashSetIterator");
-  return self;
-}
-const classtable_elt_t VFT_Symbol[46] = {
-  {(bigint) 23 /* 0: Identity */},
-  {(bigint) 3 /* 1: Symbol < Object: superclass typecheck marker */},
-  {(bigint) 23 /* 2: Symbol < Symbol: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) symbol___Symbol___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Symbol < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) environ___Symbol___environ},
-  {(bigint) 1 /* 44: Symbol < Symbol: superclass init_table position */},
-  {(bigint) symbol___Symbol___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Symbol::_string */
-val_t NEW_Symbol(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_Symbol;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Symbol(val_t self, char *from) {
-}
-val_t NEW_Symbol_symbol___Symbol___init(val_t p0) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Symbol();
-  symbol___Symbol___init(self, p0, init_table);
-  CHECKNEW_Symbol(self, "symbol::Symbol::init for Symbol");
-  return self;
-}
-const classtable_elt_t VFT_AbstractSorter[50] = {
-  {(bigint) 191 /* 0: Identity */},
-  {(bigint) 3 /* 1: AbstractSorter < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 2: AbstractSorter < AbstractSorter: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AbstractSorter < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: AbstractSorter < AbstractSorter: superclass init_table position */},
-  {(bigint) sorter___AbstractSorter___compare},
-  {(bigint) sorter___AbstractSorter___sort},
-  {(bigint) sorter___AbstractSorter___sub_sort},
-  {(bigint) sorter___AbstractSorter___quick_sort},
-  {(bigint) sorter___AbstractSorter___bubble_sort},
-  {(bigint) sorter___AbstractSorter___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_AbstractSorter(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_AbstractSorter;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AbstractSorter(val_t self, char *from) {
-}
-val_t NEW_AbstractSorter_sorter___AbstractSorter___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_AbstractSorter();
-  sorter___AbstractSorter___init(self, init_table);
-  CHECKNEW_AbstractSorter(self, "sorter::AbstractSorter::init for AbstractSorter");
-  return self;
-}
-const classtable_elt_t VFT_ComparableSorter[52] = {
-  {(bigint) 3363 /* 0: Identity */},
-  {(bigint) 3 /* 1: ComparableSorter < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 2: ComparableSorter < AbstractSorter: superclass typecheck marker */},
-  {(bigint) 3363 /* 3: ComparableSorter < ComparableSorter: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ComparableSorter < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ComparableSorter < AbstractSorter: superclass init_table position */},
-  {(bigint) sorter___ComparableSorter___compare},
-  {(bigint) sorter___AbstractSorter___sort},
-  {(bigint) sorter___AbstractSorter___sub_sort},
-  {(bigint) sorter___AbstractSorter___quick_sort},
-  {(bigint) sorter___AbstractSorter___bubble_sort},
-  {(bigint) sorter___AbstractSorter___init},
-  {(bigint) 2 /* 50: ComparableSorter < ComparableSorter: superclass init_table position */},
-  {(bigint) sorter___ComparableSorter___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ComparableSorter(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ComparableSorter;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ComparableSorter(val_t self, char *from) {
-}
-val_t NEW_ComparableSorter_sorter___ComparableSorter___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ComparableSorter();
-  sorter___ComparableSorter___init(self, init_table);
-  CHECKNEW_ComparableSorter(self, "sorter::ComparableSorter::init for ComparableSorter");
-  return self;
-}
-const classtable_elt_t VFT_IOS[57] = {
-  {(bigint) 143 /* 0: Identity */},
-  {(bigint) 3 /* 1: IOS < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 143 /* 3: IOS < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: IOS < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: IOS < IOS: superclass init_table position */},
-  {(bigint) stream___IOS___close},
-  {(bigint) stream___IOS___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_IOS(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_IOS;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_IOS(val_t self, char *from) {
-}
-val_t NEW_IOS_stream___IOS___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_IOS();
-  stream___IOS___init(self, init_table);
-  CHECKNEW_IOS(self, "stream::IOS::init for IOS");
-  return self;
-}
-const classtable_elt_t VFT_IStream[67] = {
-  {(bigint) 3307 /* 0: Identity */},
-  {(bigint) 3 /* 1: IStream < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 143 /* 3: IStream < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3307 /* 5: IStream < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: IStream < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: IStream < IOS: superclass init_table position */},
-  {(bigint) stream___IOS___close},
-  {(bigint) stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 60: IStream < IStream: superclass init_table position */},
-  {(bigint) stream___IStream___read_char},
-  {(bigint) stream___IStream___read},
-  {(bigint) stream___IStream___read_line},
-  {(bigint) stream___IStream___read_all},
-  {(bigint) stream___IStream___append_line_to},
-  {(bigint) stream___IStream___eof},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_IStream(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_IStream;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_IStream(val_t self, char *from) {
-}
-val_t NEW_IStream_stream___IOS___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_IStream();
-  stream___IOS___init(self, init_table);
-  CHECKNEW_IStream(self, "stream::IOS::init for IStream");
-  return self;
-}
-const classtable_elt_t VFT_OStream[60] = {
-  {(bigint) 3223 /* 0: Identity */},
-  {(bigint) 3 /* 1: OStream < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 143 /* 3: OStream < IOS: superclass typecheck marker */},
-  {(bigint) 3223 /* 4: OStream < OStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OStream < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: OStream < IOS: superclass init_table position */},
-  {(bigint) stream___IOS___close},
-  {(bigint) stream___IOS___init},
-  {(bigint) 2 /* 57: OStream < OStream: superclass init_table position */},
-  {(bigint) stream___OStream___write},
-  {(bigint) stream___OStream___is_writable},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_OStream(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_OStream;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_OStream(val_t self, char *from) {
-}
-val_t NEW_OStream_stream___IOS___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_OStream();
-  stream___IOS___init(self, init_table);
-  CHECKNEW_OStream(self, "stream::IOS::init for OStream");
-  return self;
-}
-const classtable_elt_t VFT_BufferedIStream[71] = {
-  {(bigint) 3991 /* 0: Identity */},
-  {(bigint) 3 /* 1: BufferedIStream < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 143 /* 3: BufferedIStream < IOS: superclass typecheck marker */},
-  {(bigint) 3991 /* 4: BufferedIStream < BufferedIStream: superclass typecheck marker */},
-  {(bigint) 3307 /* 5: BufferedIStream < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: BufferedIStream < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: BufferedIStream < IOS: superclass init_table position */},
-  {(bigint) stream___IOS___close},
-  {(bigint) stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 60: BufferedIStream < IStream: superclass init_table position */},
-  {(bigint) stream___BufferedIStream___read_char},
-  {(bigint) stream___BufferedIStream___read},
-  {(bigint) stream___IStream___read_line},
-  {(bigint) stream___BufferedIStream___read_all},
-  {(bigint) stream___BufferedIStream___append_line_to},
-  {(bigint) stream___BufferedIStream___eof},
-  {(bigint) 3 /* 67: BufferedIStream < BufferedIStream: superclass init_table position */},
-  {(bigint) stream___BufferedIStream___fill_buffer},
-  {(bigint) stream___BufferedIStream___end_reached},
-  {(bigint) stream___BufferedIStream___prepare_buffer},
-};
-/* 0: Pointer to the classtable */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 3: Attribute BufferedIStream::_buffer */
-/* 4: Attribute BufferedIStream::_buffer_pos */
-val_t NEW_BufferedIStream(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_BufferedIStream;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_stream___BufferedIStream____buffer(obj) =  NIT_NULL /*null*/;
-  ATTR_stream___BufferedIStream____buffer_pos(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_BufferedIStream(val_t self, char *from) {
-}
-val_t NEW_BufferedIStream_stream___IOS___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_BufferedIStream();
-  stream___IOS___init(self, init_table);
-  CHECKNEW_BufferedIStream(self, "stream::IOS::init for BufferedIStream");
-  return self;
-}
-const classtable_elt_t VFT_IOStream[74] = {
-  {(bigint) 3951 /* 0: Identity */},
-  {(bigint) 3 /* 1: IOStream < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 143 /* 3: IOStream < IOS: superclass typecheck marker */},
-  {(bigint) 3223 /* 4: IOStream < OStream: superclass typecheck marker */},
-  {(bigint) 3307 /* 5: IOStream < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3951 /* 8: IOStream < IOStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: IOStream < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: IOStream < IOS: superclass init_table position */},
-  {(bigint) stream___IOS___close},
-  {(bigint) stream___IOS___init},
-  {(bigint) 3 /* 57: IOStream < OStream: superclass init_table position */},
-  {(bigint) stream___OStream___write},
-  {(bigint) stream___OStream___is_writable},
-  {(bigint) 2 /* 60: IOStream < IStream: superclass init_table position */},
-  {(bigint) stream___IStream___read_char},
-  {(bigint) stream___IStream___read},
-  {(bigint) stream___IStream___read_line},
-  {(bigint) stream___IStream___read_all},
-  {(bigint) stream___IStream___append_line_to},
-  {(bigint) stream___IStream___eof},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 73: IOStream < IOStream: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_IOStream(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_IOStream;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_IOStream(val_t self, char *from) {
-}
-val_t NEW_IOStream_stream___IOS___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_IOStream();
-  stream___IOS___init(self, init_table);
-  CHECKNEW_IOStream(self, "stream::IOS::init for IOStream");
-  return self;
-}
-const classtable_elt_t VFT_FDStream[57] = {
-  {(bigint) 3339 /* 0: Identity */},
-  {(bigint) 3 /* 1: FDStream < Object: superclass typecheck marker */},
-  {(bigint) 3339 /* 2: FDStream < FDStream: superclass typecheck marker */},
-  {(bigint) 143 /* 3: FDStream < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: FDStream < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: FDStream < FDStream: superclass init_table position */},
-  {(bigint) stream___FDStream___native_close},
-  {(bigint) stream___FDStream___native_read_char},
-  {(bigint) stream___FDStream___native_read},
-  {(bigint) stream___FDStream___native_write},
-  {(bigint) stream___FDStream___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: FDStream < IOS: superclass init_table position */},
-  {(bigint) stream___FDStream___close},
-  {(bigint) stream___IOS___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute FDStream::_fd */
-val_t NEW_FDStream(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_FDStream;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_FDStream(val_t self, char *from) {
-}
-val_t NEW_FDStream_stream___FDStream___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_FDStream();
-  stream___FDStream___init(self, p0, init_table);
-  CHECKNEW_FDStream(self, "stream::FDStream::init for FDStream");
-  return self;
-}
-const classtable_elt_t VFT_FDIStream[67] = {
-  {(bigint) 3963 /* 0: Identity */},
-  {(bigint) 3 /* 1: FDIStream < Object: superclass typecheck marker */},
-  {(bigint) 3339 /* 2: FDIStream < FDStream: superclass typecheck marker */},
-  {(bigint) 143 /* 3: FDIStream < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3307 /* 5: FDIStream < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3963 /* 7: FDIStream < FDIStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: FDIStream < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: FDIStream < FDStream: superclass init_table position */},
-  {(bigint) stream___FDStream___native_close},
-  {(bigint) stream___FDStream___native_read_char},
-  {(bigint) stream___FDStream___native_read},
-  {(bigint) stream___FDStream___native_write},
-  {(bigint) stream___FDStream___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 51: FDIStream < FDIStream: superclass init_table position */},
-  {(bigint) stream___FDIStream___init},
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: FDIStream < IOS: superclass init_table position */},
-  {(bigint) stream___FDStream___close},
-  {(bigint) stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 60: FDIStream < IStream: superclass init_table position */},
-  {(bigint) stream___FDIStream___read_char},
-  {(bigint) stream___IStream___read},
-  {(bigint) stream___IStream___read_line},
-  {(bigint) stream___IStream___read_all},
-  {(bigint) stream___IStream___append_line_to},
-  {(bigint) stream___FDIStream___eof},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute FDIStream::_fd */
-/* Instance Hole :( */
-/* 3: Attribute FDIStream::_eof */
-val_t NEW_FDIStream(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_FDIStream;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_stream___FDIStream____eof(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_FDIStream(val_t self, char *from) {
-}
-val_t NEW_FDIStream_stream___FDIStream___init(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_FDIStream();
-  stream___FDIStream___init(self, p0, init_table);
-  CHECKNEW_FDIStream(self, "stream::FDIStream::init for FDIStream");
-  return self;
-}
-const classtable_elt_t VFT_FDOStream[60] = {
-  {(bigint) 3959 /* 0: Identity */},
-  {(bigint) 3 /* 1: FDOStream < Object: superclass typecheck marker */},
-  {(bigint) 3339 /* 2: FDOStream < FDStream: superclass typecheck marker */},
-  {(bigint) 143 /* 3: FDOStream < IOS: superclass typecheck marker */},
-  {(bigint) 3223 /* 4: FDOStream < OStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3959 /* 6: FDOStream < FDOStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: FDOStream < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: FDOStream < FDStream: superclass init_table position */},
-  {(bigint) stream___FDStream___native_close},
-  {(bigint) stream___FDStream___native_read_char},
-  {(bigint) stream___FDStream___native_read},
-  {(bigint) stream___FDStream___native_write},
-  {(bigint) stream___FDStream___init},
-  {(bigint) 4 /* 49: FDOStream < FDOStream: superclass init_table position */},
-  {(bigint) stream___FDOStream___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: FDOStream < IOS: superclass init_table position */},
-  {(bigint) stream___FDStream___close},
-  {(bigint) stream___IOS___init},
-  {(bigint) 3 /* 57: FDOStream < OStream: superclass init_table position */},
-  {(bigint) stream___FDOStream___write},
-  {(bigint) stream___FDOStream___is_writable},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute FDOStream::_fd */
-/* 2: Attribute FDOStream::_is_writable */
-val_t NEW_FDOStream(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_FDOStream;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_FDOStream(val_t self, char *from) {
-}
-val_t NEW_FDOStream_stream___FDOStream___init(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_FDOStream();
-  stream___FDOStream___init(self, p0, init_table);
-  CHECKNEW_FDOStream(self, "stream::FDOStream::init for FDOStream");
-  return self;
-}
-const classtable_elt_t VFT_FDIOStream[74] = {
-  {(bigint) 4067 /* 0: Identity */},
-  {(bigint) 3 /* 1: FDIOStream < Object: superclass typecheck marker */},
-  {(bigint) 3339 /* 2: FDIOStream < FDStream: superclass typecheck marker */},
-  {(bigint) 143 /* 3: FDIOStream < IOS: superclass typecheck marker */},
-  {(bigint) 3223 /* 4: FDIOStream < OStream: superclass typecheck marker */},
-  {(bigint) 3307 /* 5: FDIOStream < IStream: superclass typecheck marker */},
-  {(bigint) 3959 /* 6: FDIOStream < FDOStream: superclass typecheck marker */},
-  {(bigint) 3963 /* 7: FDIOStream < FDIStream: superclass typecheck marker */},
-  {(bigint) 3951 /* 8: FDIOStream < IOStream: superclass typecheck marker */},
-  {(bigint) 4067 /* 9: FDIOStream < FDIOStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: FDIOStream < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: FDIOStream < FDStream: superclass init_table position */},
-  {(bigint) stream___FDStream___native_close},
-  {(bigint) stream___FDStream___native_read_char},
-  {(bigint) stream___FDStream___native_read},
-  {(bigint) stream___FDStream___native_write},
-  {(bigint) stream___FDStream___init},
-  {(bigint) 6 /* 49: FDIOStream < FDOStream: superclass init_table position */},
-  {(bigint) stream___FDOStream___init},
-  {(bigint) 4 /* 51: FDIOStream < FDIStream: superclass init_table position */},
-  {(bigint) stream___FDIStream___init},
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: FDIOStream < IOS: superclass init_table position */},
-  {(bigint) stream___FDStream___close},
-  {(bigint) stream___IOS___init},
-  {(bigint) 5 /* 57: FDIOStream < OStream: superclass init_table position */},
-  {(bigint) stream___FDOStream___write},
-  {(bigint) stream___FDOStream___is_writable},
-  {(bigint) 3 /* 60: FDIOStream < IStream: superclass init_table position */},
-  {(bigint) stream___FDIStream___read_char},
-  {(bigint) stream___IStream___read},
-  {(bigint) stream___IStream___read_line},
-  {(bigint) stream___IStream___read_all},
-  {(bigint) stream___IStream___append_line_to},
-  {(bigint) stream___FDIStream___eof},
-  {(bigint) 8 /* 67: FDIOStream < FDIOStream: superclass init_table position */},
-  {(bigint) stream___FDIOStream___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 7 /* 73: FDIOStream < IOStream: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute FDIOStream::_fd */
-/* 2: Attribute FDIOStream::_is_writable */
-/* 3: Attribute FDIOStream::_eof */
-val_t NEW_FDIOStream(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_FDIOStream;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_stream___FDIStream____eof(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_FDIOStream(val_t self, char *from) {
-}
-val_t NEW_FDIOStream_stream___FDIOStream___init(val_t p0) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_FDIOStream();
-  stream___FDIOStream___init(self, p0, init_table);
-  CHECKNEW_FDIOStream(self, "stream::FDIOStream::init for FDIOStream");
-  return self;
-}
-const classtable_elt_t VFT_Pattern[49] = {
-  {(bigint) 51 /* 0: Identity */},
-  {(bigint) 3 /* 1: Pattern < Object: superclass typecheck marker */},
-  {(bigint) 51 /* 2: Pattern < Pattern: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Pattern < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: Pattern < Pattern: superclass init_table position */},
-  {(bigint) string_search___Pattern___search_index_in},
-  {(bigint) string_search___Pattern___search_in},
-  {(bigint) string_search___Pattern___search_all_in},
-  {(bigint) string_search___Pattern___split_in},
-  {(bigint) string_search___Pattern___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_Pattern(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_Pattern;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Pattern(val_t self, char *from) {
-}
-val_t NEW_Pattern_string_search___Pattern___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Pattern();
-  string_search___Pattern___init(self, init_table);
-  CHECKNEW_Pattern(self, "string_search::Pattern::init for Pattern");
-  return self;
-}
-const classtable_elt_t VFT_BM_Pattern[55] = {
-  {(bigint) 3379 /* 0: Identity */},
-  {(bigint) 3 /* 1: BM_Pattern < Object: superclass typecheck marker */},
-  {(bigint) 51 /* 2: BM_Pattern < Pattern: superclass typecheck marker */},
-  {(bigint) 3379 /* 3: BM_Pattern < BM_Pattern: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string_search___BM_Pattern___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: BM_Pattern < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: BM_Pattern < Pattern: superclass init_table position */},
-  {(bigint) string_search___BM_Pattern___search_index_in},
-  {(bigint) string_search___BM_Pattern___search_in},
-  {(bigint) string_search___Pattern___search_all_in},
-  {(bigint) string_search___Pattern___split_in},
-  {(bigint) string_search___Pattern___init},
-  {(bigint) 2 /* 49: BM_Pattern < BM_Pattern: superclass init_table position */},
-  {(bigint) string_search___BM_Pattern___init},
-  {(bigint) string_search___BM_Pattern___bc},
-  {(bigint) string_search___BM_Pattern___compute_bc},
-  {(bigint) string_search___BM_Pattern___suffixes},
-  {(bigint) string_search___BM_Pattern___compute_gs},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute BM_Pattern::_motif */
-/* 2: Attribute BM_Pattern::_length */
-/* 3: Attribute BM_Pattern::_gs */
-/* 4: Attribute BM_Pattern::_bc_table */
-val_t NEW_BM_Pattern(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_BM_Pattern;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_BM_Pattern(val_t self, char *from) {
-}
-val_t NEW_BM_Pattern_string_search___BM_Pattern___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_BM_Pattern();
-  string_search___BM_Pattern___init(self, p0, init_table);
-  CHECKNEW_BM_Pattern(self, "string_search::BM_Pattern::init for BM_Pattern");
-  return self;
-}
-const classtable_elt_t VFT_Match[49] = {
-  {(bigint) 87 /* 0: Identity */},
-  {(bigint) 3 /* 1: Match < Object: superclass typecheck marker */},
-  {(bigint) 87 /* 2: Match < Match: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string_search___Match___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Match < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: Match < Match: superclass init_table position */},
-  {(bigint) string_search___Match___string},
-  {(bigint) string_search___Match___from},
-  {(bigint) string_search___Match___length},
-  {(bigint) string_search___Match___after},
-  {(bigint) string_search___Match___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Match::_string */
-/* 2: Attribute Match::_from */
-/* 3: Attribute Match::_length */
-val_t NEW_Match(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_Match;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Match(val_t self, char *from) {
-}
-val_t NEW_Match_string_search___Match___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Match();
-  string_search___Match___init(self, p0, p1, p2, init_table);
-  CHECKNEW_Match(self, "string_search::Match::init for Match");
-  return self;
-}
-const classtable_elt_t VFT_FStream[57] = {
-  {(bigint) 3335 /* 0: Identity */},
-  {(bigint) 3 /* 1: FStream < Object: superclass typecheck marker */},
-  {(bigint) 79 /* 2: FStream < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 143 /* 3: FStream < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3335 /* 6: FStream < FStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: FStream < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: FStream < NativeFileCapable: superclass init_table position */},
-  {(bigint) file___NativeFileCapable___io_open_read},
-  {(bigint) file___NativeFileCapable___io_open_write},
-  {(bigint) file___NativeFileCapable___native_stdin},
-  {(bigint) file___NativeFileCapable___native_stdout},
-  {(bigint) file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 49: FStream < FStream: superclass init_table position */},
-  {(bigint) file___FStream___path},
-  {(bigint) file___FStream___file_stat},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: FStream < IOS: superclass init_table position */},
-  {(bigint) stream___IOS___close},
-  {(bigint) stream___IOS___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute FStream::_path */
-/* 2: Attribute FStream::_file */
-val_t NEW_FStream(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_FStream;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_file___FStream____path(obj) =  NIT_NULL /*null*/;
-  ATTR_file___FStream____file(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_FStream(val_t self, char *from) {
-}
-val_t NEW_FStream_stream___IOS___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_FStream();
-  stream___IOS___init(self, init_table);
-  CHECKNEW_FStream(self, "stream::IOS::init for FStream");
-  return self;
-}
-const classtable_elt_t VFT_IFStream[76] = {
-  {(bigint) 4063 /* 0: Identity */},
-  {(bigint) 3 /* 1: IFStream < Object: superclass typecheck marker */},
-  {(bigint) 79 /* 2: IFStream < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 143 /* 3: IFStream < IOS: superclass typecheck marker */},
-  {(bigint) 3991 /* 4: IFStream < BufferedIStream: superclass typecheck marker */},
-  {(bigint) 3307 /* 5: IFStream < IStream: superclass typecheck marker */},
-  {(bigint) 3335 /* 6: IFStream < FStream: superclass typecheck marker */},
-  {(bigint) 4063 /* 7: IFStream < IFStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: IFStream < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: IFStream < NativeFileCapable: superclass init_table position */},
-  {(bigint) file___NativeFileCapable___io_open_read},
-  {(bigint) file___NativeFileCapable___io_open_write},
-  {(bigint) file___NativeFileCapable___native_stdin},
-  {(bigint) file___NativeFileCapable___native_stdout},
-  {(bigint) file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 49: IFStream < FStream: superclass init_table position */},
-  {(bigint) file___FStream___path},
-  {(bigint) file___FStream___file_stat},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: IFStream < IOS: superclass init_table position */},
-  {(bigint) file___IFStream___close},
-  {(bigint) stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 60: IFStream < IStream: superclass init_table position */},
-  {(bigint) stream___BufferedIStream___read_char},
-  {(bigint) stream___BufferedIStream___read},
-  {(bigint) stream___IStream___read_line},
-  {(bigint) stream___BufferedIStream___read_all},
-  {(bigint) stream___BufferedIStream___append_line_to},
-  {(bigint) stream___BufferedIStream___eof},
-  {(bigint) 5 /* 67: IFStream < BufferedIStream: superclass init_table position */},
-  {(bigint) file___IFStream___fill_buffer},
-  {(bigint) file___IFStream___end_reached},
-  {(bigint) stream___BufferedIStream___prepare_buffer},
-  {(bigint) 6 /* 71: IFStream < IFStream: superclass init_table position */},
-  {(bigint) file___IFStream___reopen},
-  {(bigint) file___IFStream___open},
-  {(bigint) file___IFStream___init},
-  {(bigint) file___IFStream___without_file},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute IFStream::_path */
-/* 2: Attribute IFStream::_file */
-/* 3: Attribute IFStream::_buffer */
-/* 4: Attribute IFStream::_buffer_pos */
-/* 5: Attribute IFStream::_end_reached */
-val_t NEW_IFStream(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_IFStream;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_file___FStream____path(obj) =  NIT_NULL /*null*/;
-  ATTR_file___FStream____file(obj) =  NIT_NULL /*null*/;
-  ATTR_stream___BufferedIStream____buffer(obj) =  NIT_NULL /*null*/;
-  ATTR_stream___BufferedIStream____buffer_pos(obj) =  TAG_Int(0);
-  ATTR_file___IFStream____end_reached(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_IFStream(val_t self, char *from) {
-}
-val_t NEW_IFStream_file___IFStream___open(val_t p0) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_IFStream();
-  file___IFStream___open(self, p0, init_table);
-  CHECKNEW_IFStream(self, "file::IFStream::open for IFStream");
-  return self;
-}
-val_t NEW_IFStream_file___IFStream___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_IFStream();
-  file___IFStream___init(self, init_table);
-  CHECKNEW_IFStream(self, "file::IFStream::init for IFStream");
-  return self;
-}
-val_t NEW_IFStream_file___IFStream___without_file() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_IFStream();
-  file___IFStream___without_file(self, init_table);
-  CHECKNEW_IFStream(self, "file::IFStream::without_file for IFStream");
-  return self;
-}
-const classtable_elt_t VFT_OFStream[65] = {
-  {(bigint) 3891 /* 0: Identity */},
-  {(bigint) 3 /* 1: OFStream < Object: superclass typecheck marker */},
-  {(bigint) 79 /* 2: OFStream < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 143 /* 3: OFStream < IOS: superclass typecheck marker */},
-  {(bigint) 3223 /* 4: OFStream < OStream: superclass typecheck marker */},
-  {(bigint) 3891 /* 5: OFStream < OFStream: superclass typecheck marker */},
-  {(bigint) 3335 /* 6: OFStream < FStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OFStream < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: OFStream < NativeFileCapable: superclass init_table position */},
-  {(bigint) file___NativeFileCapable___io_open_read},
-  {(bigint) file___NativeFileCapable___io_open_write},
-  {(bigint) file___NativeFileCapable___native_stdin},
-  {(bigint) file___NativeFileCapable___native_stdout},
-  {(bigint) file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 49: OFStream < FStream: superclass init_table position */},
-  {(bigint) file___FStream___path},
-  {(bigint) file___FStream___file_stat},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: OFStream < IOS: superclass init_table position */},
-  {(bigint) file___OFStream___close},
-  {(bigint) stream___IOS___init},
-  {(bigint) 4 /* 57: OFStream < OStream: superclass init_table position */},
-  {(bigint) file___OFStream___write},
-  {(bigint) file___OFStream___is_writable},
-  {(bigint) 5 /* 60: OFStream < OFStream: superclass init_table position */},
-  {(bigint) file___OFStream___write_native},
-  {(bigint) file___OFStream___open},
-  {(bigint) file___OFStream___init},
-  {(bigint) file___OFStream___without_file},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute OFStream::_path */
-/* 2: Attribute OFStream::_file */
-/* 3: Attribute OFStream::_writable */
-val_t NEW_OFStream(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_OFStream;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_file___FStream____path(obj) =  NIT_NULL /*null*/;
-  ATTR_file___FStream____file(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_OFStream(val_t self, char *from) {
-}
-val_t NEW_OFStream_file___OFStream___open(val_t p0) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_OFStream();
-  file___OFStream___open(self, p0, init_table);
-  CHECKNEW_OFStream(self, "file::OFStream::open for OFStream");
-  return self;
-}
-val_t NEW_OFStream_file___OFStream___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_OFStream();
-  file___OFStream___init(self, init_table);
-  CHECKNEW_OFStream(self, "file::OFStream::init for OFStream");
-  return self;
-}
-val_t NEW_OFStream_file___OFStream___without_file() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_OFStream();
-  file___OFStream___without_file(self, init_table);
-  CHECKNEW_OFStream(self, "file::OFStream::without_file for OFStream");
-  return self;
-}
-const classtable_elt_t VFT_Stdin[78] = {
-  {(bigint) 4387 /* 0: Identity */},
-  {(bigint) 3 /* 1: Stdin < Object: superclass typecheck marker */},
-  {(bigint) 79 /* 2: Stdin < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 143 /* 3: Stdin < IOS: superclass typecheck marker */},
-  {(bigint) 3991 /* 4: Stdin < BufferedIStream: superclass typecheck marker */},
-  {(bigint) 3307 /* 5: Stdin < IStream: superclass typecheck marker */},
-  {(bigint) 3335 /* 6: Stdin < FStream: superclass typecheck marker */},
-  {(bigint) 4063 /* 7: Stdin < IFStream: superclass typecheck marker */},
-  {(bigint) 4387 /* 8: Stdin < Stdin: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Stdin < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: Stdin < NativeFileCapable: superclass init_table position */},
-  {(bigint) file___NativeFileCapable___io_open_read},
-  {(bigint) file___NativeFileCapable___io_open_write},
-  {(bigint) file___NativeFileCapable___native_stdin},
-  {(bigint) file___NativeFileCapable___native_stdout},
-  {(bigint) file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 49: Stdin < FStream: superclass init_table position */},
-  {(bigint) file___FStream___path},
-  {(bigint) file___FStream___file_stat},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: Stdin < IOS: superclass init_table position */},
-  {(bigint) file___IFStream___close},
-  {(bigint) stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 60: Stdin < IStream: superclass init_table position */},
-  {(bigint) stream___BufferedIStream___read_char},
-  {(bigint) stream___BufferedIStream___read},
-  {(bigint) stream___IStream___read_line},
-  {(bigint) stream___BufferedIStream___read_all},
-  {(bigint) stream___BufferedIStream___append_line_to},
-  {(bigint) stream___BufferedIStream___eof},
-  {(bigint) 5 /* 67: Stdin < BufferedIStream: superclass init_table position */},
-  {(bigint) file___IFStream___fill_buffer},
-  {(bigint) file___IFStream___end_reached},
-  {(bigint) stream___BufferedIStream___prepare_buffer},
-  {(bigint) 6 /* 71: Stdin < IFStream: superclass init_table position */},
-  {(bigint) file___IFStream___reopen},
-  {(bigint) file___IFStream___open},
-  {(bigint) file___IFStream___init},
-  {(bigint) file___IFStream___without_file},
-  {(bigint) 7 /* 76: Stdin < Stdin: superclass init_table position */},
-  {(bigint) file___Stdin___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Stdin::_path */
-/* 2: Attribute Stdin::_file */
-/* 3: Attribute Stdin::_buffer */
-/* 4: Attribute Stdin::_buffer_pos */
-/* 5: Attribute Stdin::_end_reached */
-val_t NEW_Stdin(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_Stdin;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_file___FStream____path(obj) =  NIT_NULL /*null*/;
-  ATTR_file___FStream____file(obj) =  NIT_NULL /*null*/;
-  ATTR_stream___BufferedIStream____buffer(obj) =  NIT_NULL /*null*/;
-  ATTR_stream___BufferedIStream____buffer_pos(obj) =  TAG_Int(0);
-  ATTR_file___IFStream____end_reached(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Stdin(val_t self, char *from) {
-}
-val_t NEW_Stdin_file___Stdin___init() {
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_Stdin();
-  file___Stdin___init(self, init_table);
-  CHECKNEW_Stdin(self, "file::Stdin::init for Stdin");
-  return self;
-}
-const classtable_elt_t VFT_Stdout[67] = {
-  {(bigint) 4019 /* 0: Identity */},
-  {(bigint) 3 /* 1: Stdout < Object: superclass typecheck marker */},
-  {(bigint) 79 /* 2: Stdout < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 143 /* 3: Stdout < IOS: superclass typecheck marker */},
-  {(bigint) 3223 /* 4: Stdout < OStream: superclass typecheck marker */},
-  {(bigint) 3891 /* 5: Stdout < OFStream: superclass typecheck marker */},
-  {(bigint) 3335 /* 6: Stdout < FStream: superclass typecheck marker */},
-  {(bigint) 4019 /* 7: Stdout < Stdout: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Stdout < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: Stdout < NativeFileCapable: superclass init_table position */},
-  {(bigint) file___NativeFileCapable___io_open_read},
-  {(bigint) file___NativeFileCapable___io_open_write},
-  {(bigint) file___NativeFileCapable___native_stdin},
-  {(bigint) file___NativeFileCapable___native_stdout},
-  {(bigint) file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 49: Stdout < FStream: superclass init_table position */},
-  {(bigint) file___FStream___path},
-  {(bigint) file___FStream___file_stat},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: Stdout < IOS: superclass init_table position */},
-  {(bigint) file___OFStream___close},
-  {(bigint) stream___IOS___init},
-  {(bigint) 4 /* 57: Stdout < OStream: superclass init_table position */},
-  {(bigint) file___OFStream___write},
-  {(bigint) file___OFStream___is_writable},
-  {(bigint) 5 /* 60: Stdout < OFStream: superclass init_table position */},
-  {(bigint) file___OFStream___write_native},
-  {(bigint) file___OFStream___open},
-  {(bigint) file___OFStream___init},
-  {(bigint) file___OFStream___without_file},
-  {(bigint) 6 /* 65: Stdout < Stdout: superclass init_table position */},
-  {(bigint) file___Stdout___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Stdout::_path */
-/* 2: Attribute Stdout::_file */
-/* 3: Attribute Stdout::_writable */
-val_t NEW_Stdout(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_Stdout;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_file___FStream____path(obj) =  NIT_NULL /*null*/;
-  ATTR_file___FStream____file(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Stdout(val_t self, char *from) {
-}
-val_t NEW_Stdout_file___Stdout___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_Stdout();
-  file___Stdout___init(self, init_table);
-  CHECKNEW_Stdout(self, "file::Stdout::init for Stdout");
-  return self;
-}
-const classtable_elt_t VFT_Stderr[67] = {
-  {(bigint) 4023 /* 0: Identity */},
-  {(bigint) 3 /* 1: Stderr < Object: superclass typecheck marker */},
-  {(bigint) 79 /* 2: Stderr < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 143 /* 3: Stderr < IOS: superclass typecheck marker */},
-  {(bigint) 3223 /* 4: Stderr < OStream: superclass typecheck marker */},
-  {(bigint) 3891 /* 5: Stderr < OFStream: superclass typecheck marker */},
-  {(bigint) 3335 /* 6: Stderr < FStream: superclass typecheck marker */},
-  {(bigint) 4023 /* 7: Stderr < Stderr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Stderr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 2 /* 43: Stderr < NativeFileCapable: superclass init_table position */},
-  {(bigint) file___NativeFileCapable___io_open_read},
-  {(bigint) file___NativeFileCapable___io_open_write},
-  {(bigint) file___NativeFileCapable___native_stdin},
-  {(bigint) file___NativeFileCapable___native_stdout},
-  {(bigint) file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 49: Stderr < FStream: superclass init_table position */},
-  {(bigint) file___FStream___path},
-  {(bigint) file___FStream___file_stat},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: Stderr < IOS: superclass init_table position */},
-  {(bigint) file___OFStream___close},
-  {(bigint) stream___IOS___init},
-  {(bigint) 4 /* 57: Stderr < OStream: superclass init_table position */},
-  {(bigint) file___OFStream___write},
-  {(bigint) file___OFStream___is_writable},
-  {(bigint) 5 /* 60: Stderr < OFStream: superclass init_table position */},
-  {(bigint) file___OFStream___write_native},
-  {(bigint) file___OFStream___open},
-  {(bigint) file___OFStream___init},
-  {(bigint) file___OFStream___without_file},
-  {(bigint) 6 /* 65: Stderr < Stderr: superclass init_table position */},
-  {(bigint) file___Stderr___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Stderr::_path */
-/* 2: Attribute Stderr::_file */
-/* 3: Attribute Stderr::_writable */
-val_t NEW_Stderr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_Stderr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_file___FStream____path(obj) =  NIT_NULL /*null*/;
-  ATTR_file___FStream____file(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Stderr(val_t self, char *from) {
-}
-val_t NEW_Stderr_file___Stderr___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_Stderr();
-  file___Stderr___init(self, init_table);
-  CHECKNEW_Stderr(self, "file::Stderr::init for Stderr");
-  return self;
-}
-const classtable_elt_t VFT_FileStat[50] = {
-  {(bigint) -29 /* 0: Identity */},
-  {(bigint) 3 /* 1: FileStat < Object: superclass typecheck marker */},
-  {(bigint) -1 /* 2: FileStat < Pointer: superclass typecheck marker */},
-  {(bigint) -29 /* 3: FileStat < FileStat: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: FileStat < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: FileStat < Pointer: superclass init_table position */},
-  {(bigint) 2 /* 44: FileStat < FileStat: superclass init_table position */},
-  {(bigint) file___FileStat___mode},
-  {(bigint) file___FileStat___atime},
-  {(bigint) file___FileStat___ctime},
-  {(bigint) file___FileStat___mtime},
-  {(bigint) file___FileStat___size},
-};
-/* 0: Pointer to the classtable */
-val_t BOX_FileStat(void * val) {
-  struct TBOX_FileStat *box = (struct TBOX_FileStat*)alloc(sizeof(struct TBOX_FileStat));
-  box->vft = VFT_FileStat;
-  box->val = val;
-  return OBJ2VAL(box);
-}
-const classtable_elt_t VFT_NativeFile[49] = {
-  {(bigint) -25 /* 0: Identity */},
-  {(bigint) 3 /* 1: NativeFile < Object: superclass typecheck marker */},
-  {(bigint) -1 /* 2: NativeFile < Pointer: superclass typecheck marker */},
-  {(bigint) -25 /* 3: NativeFile < NativeFile: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: NativeFile < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: NativeFile < Pointer: superclass init_table position */},
-  {(bigint) 2 /* 44: NativeFile < NativeFile: superclass init_table position */},
-  {(bigint) file___NativeFile___io_read},
-  {(bigint) file___NativeFile___io_write},
-  {(bigint) file___NativeFile___io_close},
-  {(bigint) file___NativeFile___file_stat},
-};
-/* 0: Pointer to the classtable */
-val_t BOX_NativeFile(void * val) {
-  struct TBOX_NativeFile *box = (struct TBOX_NativeFile*)alloc(sizeof(struct TBOX_NativeFile));
-  box->vft = VFT_NativeFile;
-  box->val = val;
-  return OBJ2VAL(box);
-}
-const classtable_elt_t VFT_NativeFileCapable[49] = {
-  {(bigint) 79 /* 0: Identity */},
-  {(bigint) 3 /* 1: NativeFileCapable < Object: superclass typecheck marker */},
-  {(bigint) 79 /* 2: NativeFileCapable < NativeFileCapable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: NativeFileCapable < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: NativeFileCapable < NativeFileCapable: superclass init_table position */},
-  {(bigint) file___NativeFileCapable___io_open_read},
-  {(bigint) file___NativeFileCapable___io_open_write},
-  {(bigint) file___NativeFileCapable___native_stdin},
-  {(bigint) file___NativeFileCapable___native_stdout},
-  {(bigint) file___NativeFileCapable___native_stderr},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_NativeFileCapable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_NativeFileCapable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_NativeFileCapable(val_t self, char *from) {
-}
-const classtable_elt_t VFT_Process[54] = {
-  {(bigint) 43 /* 0: Identity */},
-  {(bigint) 3 /* 1: Process < Object: superclass typecheck marker */},
-  {(bigint) 43 /* 2: Process < Process: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Process < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: Process < Process: superclass init_table position */},
-  {(bigint) exec___Process___id},
-  {(bigint) exec___Process___is_finished},
-  {(bigint) exec___Process___wait},
-  {(bigint) exec___Process___status},
-  {(bigint) exec___Process___kill},
-  {(bigint) exec___Process___term},
-  {(bigint) exec___Process___init},
-  {(bigint) exec___Process___init_},
-  {(bigint) exec___Process___execute},
-  {(bigint) exec___Process___basic_exec_execute},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Process::_data */
-val_t NEW_Process(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_Process;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Process(val_t self, char *from) {
-}
-val_t NEW_Process_exec___Process___init(val_t p0, val_t p1) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Process();
-  exec___Process___init(self, p0, p1, init_table);
-  CHECKNEW_Process(self, "exec::Process::init for Process");
-  return self;
-}
-val_t NEW_Process_exec___Process___init_(val_t p0) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Process();
-  exec___Process___init_(self, p0, init_table);
-  CHECKNEW_Process(self, "exec::Process::init_ for Process");
-  return self;
-}
-val_t NEW_Process_exec___Process___execute(val_t p0, val_t p1, val_t p2) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Process();
-  exec___Process___execute(self, p0, p1, p2, init_table);
-  CHECKNEW_Process(self, "exec::Process::execute for Process");
-  return self;
-}
-const classtable_elt_t VFT_IProcess[73] = {
-  {(bigint) 3947 /* 0: Identity */},
-  {(bigint) 3 /* 1: IProcess < Object: superclass typecheck marker */},
-  {(bigint) 43 /* 2: IProcess < Process: superclass typecheck marker */},
-  {(bigint) 143 /* 3: IProcess < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3307 /* 5: IProcess < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3947 /* 7: IProcess < IProcess: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: IProcess < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: IProcess < Process: superclass init_table position */},
-  {(bigint) exec___Process___id},
-  {(bigint) exec___Process___is_finished},
-  {(bigint) exec___Process___wait},
-  {(bigint) exec___Process___status},
-  {(bigint) exec___Process___kill},
-  {(bigint) exec___Process___term},
-  {(bigint) exec___Process___init},
-  {(bigint) exec___Process___init_},
-  {(bigint) exec___Process___execute},
-  {(bigint) exec___Process___basic_exec_execute},
-  {(bigint) 2 /* 54: IProcess < IOS: superclass init_table position */},
-  {(bigint) exec___IProcess___close},
-  {(bigint) stream___IOS___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 3 /* 60: IProcess < IStream: superclass init_table position */},
-  {(bigint) exec___IProcess___read_char},
-  {(bigint) stream___IStream___read},
-  {(bigint) stream___IStream___read_line},
-  {(bigint) stream___IStream___read_all},
-  {(bigint) stream___IStream___append_line_to},
-  {(bigint) exec___IProcess___eof},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 70: IProcess < IProcess: superclass init_table position */},
-  {(bigint) exec___IProcess___init},
-  {(bigint) exec___IProcess___init_},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute IProcess::_data */
-/* Instance Hole :( */
-/* 3: Attribute IProcess::_in */
-val_t NEW_IProcess(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_IProcess;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_IProcess(val_t self, char *from) {
-}
-val_t NEW_IProcess_exec___IProcess___init(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_IProcess();
-  exec___IProcess___init(self, p0, p1, init_table);
-  CHECKNEW_IProcess(self, "exec::IProcess::init for IProcess");
-  return self;
-}
-val_t NEW_IProcess_exec___IProcess___init_(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_IProcess();
-  exec___IProcess___init_(self, p0, init_table);
-  CHECKNEW_IProcess(self, "exec::IProcess::init_ for IProcess");
-  return self;
-}
-const classtable_elt_t VFT_OProcess[70] = {
-  {(bigint) 3887 /* 0: Identity */},
-  {(bigint) 3 /* 1: OProcess < Object: superclass typecheck marker */},
-  {(bigint) 43 /* 2: OProcess < Process: superclass typecheck marker */},
-  {(bigint) 143 /* 3: OProcess < IOS: superclass typecheck marker */},
-  {(bigint) 3223 /* 4: OProcess < OStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3887 /* 6: OProcess < OProcess: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OProcess < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: OProcess < Process: superclass init_table position */},
-  {(bigint) exec___Process___id},
-  {(bigint) exec___Process___is_finished},
-  {(bigint) exec___Process___wait},
-  {(bigint) exec___Process___status},
-  {(bigint) exec___Process___kill},
-  {(bigint) exec___Process___term},
-  {(bigint) exec___Process___init},
-  {(bigint) exec___Process___init_},
-  {(bigint) exec___Process___execute},
-  {(bigint) exec___Process___basic_exec_execute},
-  {(bigint) 2 /* 54: OProcess < IOS: superclass init_table position */},
-  {(bigint) exec___OProcess___close},
-  {(bigint) stream___IOS___init},
-  {(bigint) 3 /* 57: OProcess < OStream: superclass init_table position */},
-  {(bigint) exec___OProcess___write},
-  {(bigint) exec___OProcess___is_writable},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 67: OProcess < OProcess: superclass init_table position */},
-  {(bigint) exec___OProcess___init},
-  {(bigint) exec___OProcess___init_},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute OProcess::_data */
-/* 2: Attribute OProcess::_out */
-val_t NEW_OProcess(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_OProcess;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_OProcess(val_t self, char *from) {
-}
-val_t NEW_OProcess_exec___OProcess___init(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_OProcess();
-  exec___OProcess___init(self, p0, p1, init_table);
-  CHECKNEW_OProcess(self, "exec::OProcess::init for OProcess");
-  return self;
-}
-val_t NEW_OProcess_exec___OProcess___init_(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_OProcess();
-  exec___OProcess___init_(self, p0, init_table);
-  CHECKNEW_OProcess(self, "exec::OProcess::init_ for OProcess");
-  return self;
-}
-const classtable_elt_t VFT_IOProcess[77] = {
-  {(bigint) 4059 /* 0: Identity */},
-  {(bigint) 3 /* 1: IOProcess < Object: superclass typecheck marker */},
-  {(bigint) 43 /* 2: IOProcess < Process: superclass typecheck marker */},
-  {(bigint) 143 /* 3: IOProcess < IOS: superclass typecheck marker */},
-  {(bigint) 3223 /* 4: IOProcess < OStream: superclass typecheck marker */},
-  {(bigint) 3307 /* 5: IOProcess < IStream: superclass typecheck marker */},
-  {(bigint) 3887 /* 6: IOProcess < OProcess: superclass typecheck marker */},
-  {(bigint) 3947 /* 7: IOProcess < IProcess: superclass typecheck marker */},
-  {(bigint) 3951 /* 8: IOProcess < IOStream: superclass typecheck marker */},
-  {(bigint) 4059 /* 9: IOProcess < IOProcess: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: IOProcess < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: IOProcess < Process: superclass init_table position */},
-  {(bigint) exec___Process___id},
-  {(bigint) exec___Process___is_finished},
-  {(bigint) exec___Process___wait},
-  {(bigint) exec___Process___status},
-  {(bigint) exec___Process___kill},
-  {(bigint) exec___Process___term},
-  {(bigint) exec___Process___init},
-  {(bigint) exec___Process___init_},
-  {(bigint) exec___Process___execute},
-  {(bigint) exec___Process___basic_exec_execute},
-  {(bigint) 2 /* 54: IOProcess < IOS: superclass init_table position */},
-  {(bigint) exec___IOProcess___close},
-  {(bigint) stream___IOS___init},
-  {(bigint) 5 /* 57: IOProcess < OStream: superclass init_table position */},
-  {(bigint) exec___OProcess___write},
-  {(bigint) exec___OProcess___is_writable},
-  {(bigint) 3 /* 60: IOProcess < IStream: superclass init_table position */},
-  {(bigint) exec___IProcess___read_char},
-  {(bigint) stream___IStream___read},
-  {(bigint) stream___IStream___read_line},
-  {(bigint) stream___IStream___read_all},
-  {(bigint) stream___IStream___append_line_to},
-  {(bigint) exec___IProcess___eof},
-  {(bigint) 6 /* 67: IOProcess < OProcess: superclass init_table position */},
-  {(bigint) exec___OProcess___init},
-  {(bigint) exec___OProcess___init_},
-  {(bigint) 4 /* 70: IOProcess < IProcess: superclass init_table position */},
-  {(bigint) exec___IProcess___init},
-  {(bigint) exec___IProcess___init_},
-  {(bigint) 7 /* 73: IOProcess < IOStream: superclass init_table position */},
-  {(bigint) 8 /* 74: IOProcess < IOProcess: superclass init_table position */},
-  {(bigint) exec___IOProcess___init},
-  {(bigint) exec___IOProcess___init_},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute IOProcess::_data */
-/* 2: Attribute IOProcess::_out */
-/* 3: Attribute IOProcess::_in */
-val_t NEW_IOProcess(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_IOProcess;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_IOProcess(val_t self, char *from) {
-}
-val_t NEW_IOProcess_exec___IOProcess___init(val_t p0, val_t p1) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_IOProcess();
-  exec___IOProcess___init(self, p0, p1, init_table);
-  CHECKNEW_IOProcess(self, "exec::IOProcess::init for IOProcess");
-  return self;
-}
-val_t NEW_IOProcess_exec___IOProcess___init_(val_t p0) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_IOProcess();
-  exec___IOProcess___init_(self, p0, init_table);
-  CHECKNEW_IOProcess(self, "exec::IOProcess::init_ for IOProcess");
-  return self;
-}
-const classtable_elt_t VFT_NativeProcess[53] = {
-  {(bigint) -21 /* 0: Identity */},
-  {(bigint) 3 /* 1: NativeProcess < Object: superclass typecheck marker */},
-  {(bigint) -1 /* 2: NativeProcess < Pointer: superclass typecheck marker */},
-  {(bigint) -21 /* 3: NativeProcess < NativeProcess: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: NativeProcess < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: NativeProcess < Pointer: superclass init_table position */},
-  {(bigint) 2 /* 44: NativeProcess < NativeProcess: superclass init_table position */},
-  {(bigint) exec___NativeProcess___id},
-  {(bigint) exec___NativeProcess___is_finished},
-  {(bigint) exec___NativeProcess___status},
-  {(bigint) exec___NativeProcess___wait},
-  {(bigint) exec___NativeProcess___kill},
-  {(bigint) exec___NativeProcess___in_fd},
-  {(bigint) exec___NativeProcess___out_fd},
-  {(bigint) exec___NativeProcess___err_fd},
-};
-/* 0: Pointer to the classtable */
-val_t BOX_NativeProcess(void * val) {
-  struct TBOX_NativeProcess *box = (struct TBOX_NativeProcess*)alloc(sizeof(struct TBOX_NativeProcess));
-  box->vft = VFT_NativeProcess;
-  box->val = val;
-  return OBJ2VAL(box);
-}
-const classtable_elt_t VFT_List[102] = {
-  {(bigint) 4403 /* 0: Identity */},
-  {(bigint) 3 /* 1: List < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: List < Collection: superclass typecheck marker */},
-  {(bigint) 231 /* 5: List < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3239 /* 6: List < MapRead: superclass typecheck marker */},
-  {(bigint) 3779 /* 7: List < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3899 /* 8: List < Map: superclass typecheck marker */},
-  {(bigint) 3943 /* 9: List < IndexedCollectionRead: superclass typecheck marker */},
-  {(bigint) 4055 /* 10: List < IndexedCollection: superclass typecheck marker */},
-  {(bigint) 4403 /* 11: List < List: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: List < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: List < Collection: superclass init_table position */},
-  {(bigint) list___List___iterator},
-  {(bigint) list___List___is_empty},
-  {(bigint) list___List___length},
-  {(bigint) list___List___has},
-  {(bigint) list___List___has_only},
-  {(bigint) list___List___count},
-  {(bigint) list___List___first},
-  {(bigint) 4 /* 68: List < RemovableCollection: superclass init_table position */},
-  {(bigint) list___List___clear},
-  {(bigint) list___List___remove},
-  {(bigint) abstract_collection___RemovableCollection___remove_all},
-  {(bigint) 2 /* 72: List < MapRead: superclass init_table position */},
-  {(bigint) list___List_____bra},
-  {(bigint) list___List___has_key},
-  {(bigint) 6 /* 75: List < SimpleCollection: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedCollection___add},
-  {(bigint) abstract_collection___SimpleCollection___add_all},
-  {(bigint) string___Map___map_join},
-  {(bigint) 5 /* 79: List < Map: superclass init_table position */},
-  {(bigint) list___List_____braeq},
-  {(bigint) list___List___remove_at},
-  {(bigint) abstract_collection___Map___recover_with},
-  {(bigint) 3 /* 83: List < IndexedCollectionRead: superclass init_table position */},
-  {(bigint) list___List___last},
-  {(bigint) abstract_collection___IndexedCollectionRead___index_of},
-  {(bigint) 7 /* 86: List < IndexedCollection: superclass init_table position */},
-  {(bigint) list___List___first__eq},
-  {(bigint) list___List___last__eq},
-  {(bigint) list___List___push},
-  {(bigint) abstract_collection___IndexedCollection___append},
-  {(bigint) list___List___pop},
-  {(bigint) list___List___unshift},
-  {(bigint) list___List___shift},
-  {(bigint) 8 /* 94: List < List: superclass init_table position */},
-  {(bigint) list___List___link},
-  {(bigint) list___List___init},
-  {(bigint) list___List___from},
-  {(bigint) list___List___get_node},
-  {(bigint) list___List___search_node_after},
-  {(bigint) list___List___remove_node},
-  {(bigint) list___List___insert_before},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute List::_head */
-/* 2: Attribute List::_tail */
-val_t NEW_List(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_List;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_List(val_t self, char *from) {
-}
-val_t NEW_List_list___List___init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_List();
-  list___List___init(self, init_table);
-  CHECKNEW_List(self, "list::List::init for List");
-  return self;
-}
-val_t NEW_List_list___List___from(val_t p0) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_List();
-  list___List___from(self, p0, init_table);
-  CHECKNEW_List(self, "list::List::from for List");
-  return self;
-}
-const classtable_elt_t VFT_ListIterator[54] = {
-  {(bigint) 4051 /* 0: Identity */},
-  {(bigint) 3 /* 1: ListIterator < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 2: ListIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 3243 /* 3: ListIterator < MapIterator: superclass typecheck marker */},
-  {(bigint) 3939 /* 4: ListIterator < IndexedIterator: superclass typecheck marker */},
-  {(bigint) 4051 /* 5: ListIterator < ListIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ListIterator < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) array___Iterator___to_a},
-  {(bigint) 1 /* 44: ListIterator < Iterator: superclass init_table position */},
-  {(bigint) list___ListIterator___item},
-  {(bigint) list___ListIterator___next},
-  {(bigint) list___ListIterator___is_ok},
-  {(bigint) 2 /* 48: ListIterator < MapIterator: superclass init_table position */},
-  {(bigint) abstract_collection___IndexedIterator___key},
-  {(bigint) 3 /* 50: ListIterator < IndexedIterator: superclass init_table position */},
-  {(bigint) list___ListIterator___index},
-  {(bigint) 4 /* 52: ListIterator < ListIterator: superclass init_table position */},
-  {(bigint) list___ListIterator___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ListIterator::_node */
-/* 2: Attribute ListIterator::_index */
-val_t NEW_ListIterator(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_ListIterator;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ListIterator(val_t self, char *from) {
-}
-val_t NEW_ListIterator_list___ListIterator___init(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ListIterator();
-  list___ListIterator___init(self, p0, init_table);
-  CHECKNEW_ListIterator(self, "list::ListIterator::init for ListIterator");
-  return self;
-}
-const classtable_elt_t VFT_ListNode[78] = {
-  {(bigint) 3935 /* 0: Identity */},
-  {(bigint) 3 /* 1: ListNode < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: ListNode < Collection: superclass typecheck marker */},
-  {(bigint) 3355 /* 5: ListNode < Container: superclass typecheck marker */},
-  {(bigint) 3935 /* 6: ListNode < ListNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ListNode < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: ListNode < Collection: superclass init_table position */},
-  {(bigint) abstract_collection___Container___iterator},
-  {(bigint) abstract_collection___Container___is_empty},
-  {(bigint) abstract_collection___Container___length},
-  {(bigint) abstract_collection___Container___has},
-  {(bigint) abstract_collection___Container___has_only},
-  {(bigint) abstract_collection___Container___count},
-  {(bigint) abstract_collection___Container___first},
-  {(bigint) 2 /* 68: ListNode < Container: superclass init_table position */},
-  {(bigint) abstract_collection___Container___init},
-  {(bigint) abstract_collection___Container___item},
-  {(bigint) abstract_collection___Container___item__eq},
-  {(bigint) 3 /* 72: ListNode < ListNode: superclass init_table position */},
-  {(bigint) list___ListNode___init},
-  {(bigint) list___ListNode___next},
-  {(bigint) list___ListNode___next__eq},
-  {(bigint) list___ListNode___prev},
-  {(bigint) list___ListNode___prev__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ListNode::_item */
-/* 2: Attribute ListNode::_next */
-/* 3: Attribute ListNode::_prev */
-val_t NEW_ListNode(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_ListNode;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ListNode(val_t self, char *from) {
-}
-val_t NEW_ListNode_list___ListNode___init(val_t p0) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_ListNode();
-  list___ListNode___init(self, p0, init_table);
-  CHECKNEW_ListNode(self, "list::ListNode::init for ListNode");
-  return self;
-}
-const classtable_elt_t VFT_Range[73] = {
-  {(bigint) 3187 /* 0: Identity */},
-  {(bigint) 3 /* 1: Range < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: Range < Collection: superclass typecheck marker */},
-  {(bigint) 3187 /* 5: Range < Range: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Range < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: Range < Collection: superclass init_table position */},
-  {(bigint) range___Range___iterator},
-  {(bigint) range___Range___is_empty},
-  {(bigint) range___Range___length},
-  {(bigint) range___Range___has},
-  {(bigint) range___Range___has_only},
-  {(bigint) range___Range___count},
-  {(bigint) range___Range___first},
-  {(bigint) 2 /* 68: Range < Range: superclass init_table position */},
-  {(bigint) range___Range___last},
-  {(bigint) range___Range___after},
-  {(bigint) range___Range___init},
-  {(bigint) range___Range___without_last},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Range::_first */
-/* 2: Attribute Range::_last */
-/* 3: Attribute Range::_after */
-val_t NEW_Range(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_Range;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Range(val_t self, char *from) {
-}
-val_t NEW_Range_range___Range___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_Range();
-  range___Range___init(self, p0, p1, init_table);
-  CHECKNEW_Range(self, "range::Range::init for Range");
-  return self;
-}
-val_t NEW_Range_range___Range___without_last(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_Range();
-  range___Range___without_last(self, p0, p1, init_table);
-  CHECKNEW_Range(self, "range::Range::without_last for Range");
-  return self;
-}
-const classtable_elt_t VFT_IteratorRange[50] = {
-  {(bigint) 3303 /* 0: Identity */},
-  {(bigint) 3 /* 1: IteratorRange < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 2: IteratorRange < Iterator: superclass typecheck marker */},
-  {(bigint) 3303 /* 3: IteratorRange < IteratorRange: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: IteratorRange < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) array___Iterator___to_a},
-  {(bigint) 1 /* 44: IteratorRange < Iterator: superclass init_table position */},
-  {(bigint) range___IteratorRange___item},
-  {(bigint) range___IteratorRange___next},
-  {(bigint) range___IteratorRange___is_ok},
-  {(bigint) 2 /* 48: IteratorRange < IteratorRange: superclass init_table position */},
-  {(bigint) range___IteratorRange___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute IteratorRange::_range */
-/* 2: Attribute IteratorRange::_item */
-val_t NEW_IteratorRange(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_IteratorRange;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_IteratorRange(val_t self, char *from) {
-}
-val_t NEW_IteratorRange_range___IteratorRange___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_IteratorRange();
-  range___IteratorRange___init(self, p0, init_table);
-  CHECKNEW_IteratorRange(self, "range::IteratorRange::init for IteratorRange");
-  return self;
-}
-const classtable_elt_t VFT_PNode[64] = {
-  {(bigint) 63 /* 0: Identity */},
-  {(bigint) 3 /* 1: PNode < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PNode < PNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PNode < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___PNode___locate},
-  {(bigint) parser_prod___PNode___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PNode < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PNode::_parent */
-val_t NEW_PNode(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_PNode;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PNode(val_t self, char *from) {
-}
-val_t NEW_PNode_parser_nodes___PNode___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_PNode();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PNode(self, "parser_nodes::PNode::init for PNode");
-  return self;
-}
-const classtable_elt_t VFT_Token[72] = {
-  {(bigint) 207 /* 0: Identity */},
-  {(bigint) 3 /* 1: Token < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: Token < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: Token < Token: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Token < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: Token < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___Token___parser_index},
-  {(bigint) 2 /* 71: Token < Token: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Token::_parent */
-/* 2: Attribute Token::_symbol */
-/* 3: Attribute Token::_text */
-/* 4: Attribute Token::_filename */
-/* 5: Attribute Token::_line */
-/* 6: Attribute Token::_pos */
-val_t NEW_Token(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_Token;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Token(val_t self, char *from) {
-}
-val_t NEW_Token_parser_nodes___PNode___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_Token();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_Token(self, "parser_nodes::PNode::init for Token");
-  return self;
-}
-const classtable_elt_t VFT_Prod[70] = {
-  {(bigint) 3191 /* 0: Identity */},
-  {(bigint) 3 /* 1: Prod < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: Prod < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: Prod < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Prod < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: Prod < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: Prod < Prod: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Prod::_parent */
-/* 2: Attribute Prod::_first_token */
-/* 3: Attribute Prod::_last_token */
-val_t NEW_Prod(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_Prod;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Prod(val_t self, char *from) {
-}
-val_t NEW_Prod_parser_nodes___PNode___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_Prod();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_Prod(self, "parser_nodes::PNode::init for Prod");
-  return self;
-}
-const classtable_elt_t VFT_TEol[74] = {
-  {(bigint) 3719 /* 0: Identity */},
-  {(bigint) 3 /* 1: TEol < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TEol < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TEol < Token: superclass typecheck marker */},
-  {(bigint) 3719 /* 4: TEol < TEol: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TEol < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TEol < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TEol___parser_index},
-  {(bigint) 2 /* 71: TEol < Token: superclass init_table position */},
-  {(bigint) lexer___TEol___init_tk},
-  {(bigint) 3 /* 73: TEol < TEol: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TEol::_parent */
-/* 2: Attribute TEol::_symbol */
-/* 3: Attribute TEol::_text */
-/* 4: Attribute TEol::_filename */
-/* 5: Attribute TEol::_line */
-/* 6: Attribute TEol::_pos */
-val_t NEW_TEol(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TEol;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TEol(val_t self, char *from) {
-}
-val_t NEW_TEol_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TEol();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TEol(self, "parser_nodes::PNode::init for TEol");
-  return self;
-}
-val_t NEW_TEol_lexer___TEol___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TEol();
-  lexer___TEol___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TEol(self, "lexer::TEol::init_tk for TEol");
-  return self;
-}
-const classtable_elt_t VFT_TComment[74] = {
-  {(bigint) 3743 /* 0: Identity */},
-  {(bigint) 3 /* 1: TComment < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TComment < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TComment < Token: superclass typecheck marker */},
-  {(bigint) 3743 /* 4: TComment < TComment: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TComment < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TComment < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TComment___parser_index},
-  {(bigint) 2 /* 71: TComment < Token: superclass init_table position */},
-  {(bigint) lexer___TComment___init_tk},
-  {(bigint) 3 /* 73: TComment < TComment: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TComment::_parent */
-/* 2: Attribute TComment::_symbol */
-/* 3: Attribute TComment::_text */
-/* 4: Attribute TComment::_filename */
-/* 5: Attribute TComment::_line */
-/* 6: Attribute TComment::_pos */
-val_t NEW_TComment(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TComment;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TComment(val_t self, char *from) {
-}
-val_t NEW_TComment_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TComment();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TComment(self, "parser_nodes::PNode::init for TComment");
-  return self;
-}
-val_t NEW_TComment_lexer___TComment___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TComment();
-  lexer___TComment___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TComment(self, "lexer::TComment::init_tk for TComment");
-  return self;
-}
-const classtable_elt_t VFT_TKwpackage[74] = {
-  {(bigint) 3567 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwpackage < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwpackage < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwpackage < Token: superclass typecheck marker */},
-  {(bigint) 3567 /* 4: TKwpackage < TKwpackage: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwpackage < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwpackage < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwpackage___parser_index},
-  {(bigint) 2 /* 71: TKwpackage < Token: superclass init_table position */},
-  {(bigint) lexer___TKwpackage___init_tk},
-  {(bigint) 3 /* 73: TKwpackage < TKwpackage: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwpackage::_parent */
-/* 2: Attribute TKwpackage::_symbol */
-/* 3: Attribute TKwpackage::_text */
-/* 4: Attribute TKwpackage::_filename */
-/* 5: Attribute TKwpackage::_line */
-/* 6: Attribute TKwpackage::_pos */
-val_t NEW_TKwpackage(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwpackage;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwpackage(val_t self, char *from) {
-}
-val_t NEW_TKwpackage_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwpackage();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwpackage(self, "parser_nodes::PNode::init for TKwpackage");
-  return self;
-}
-val_t NEW_TKwpackage_lexer___TKwpackage___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwpackage();
-  lexer___TKwpackage___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwpackage(self, "lexer::TKwpackage::init_tk for TKwpackage");
-  return self;
-}
-const classtable_elt_t VFT_TKwimport[74] = {
-  {(bigint) 3631 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwimport < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwimport < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwimport < Token: superclass typecheck marker */},
-  {(bigint) 3631 /* 4: TKwimport < TKwimport: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwimport < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwimport < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwimport___parser_index},
-  {(bigint) 2 /* 71: TKwimport < Token: superclass init_table position */},
-  {(bigint) lexer___TKwimport___init_tk},
-  {(bigint) 3 /* 73: TKwimport < TKwimport: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwimport::_parent */
-/* 2: Attribute TKwimport::_symbol */
-/* 3: Attribute TKwimport::_text */
-/* 4: Attribute TKwimport::_filename */
-/* 5: Attribute TKwimport::_line */
-/* 6: Attribute TKwimport::_pos */
-val_t NEW_TKwimport(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwimport;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwimport(val_t self, char *from) {
-}
-val_t NEW_TKwimport_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwimport();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwimport(self, "parser_nodes::PNode::init for TKwimport");
-  return self;
-}
-val_t NEW_TKwimport_lexer___TKwimport___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwimport();
-  lexer___TKwimport___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwimport(self, "lexer::TKwimport::init_tk for TKwimport");
-  return self;
-}
-const classtable_elt_t VFT_TKwclass[74] = {
-  {(bigint) 3667 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwclass < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwclass < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwclass < Token: superclass typecheck marker */},
-  {(bigint) 3667 /* 4: TKwclass < TKwclass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwclass < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwclass < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwclass___parser_index},
-  {(bigint) 2 /* 71: TKwclass < Token: superclass init_table position */},
-  {(bigint) lexer___TKwclass___init_tk},
-  {(bigint) 3 /* 73: TKwclass < TKwclass: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwclass::_parent */
-/* 2: Attribute TKwclass::_symbol */
-/* 3: Attribute TKwclass::_text */
-/* 4: Attribute TKwclass::_filename */
-/* 5: Attribute TKwclass::_line */
-/* 6: Attribute TKwclass::_pos */
-val_t NEW_TKwclass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwclass;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwclass(val_t self, char *from) {
-}
-val_t NEW_TKwclass_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwclass();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwclass(self, "parser_nodes::PNode::init for TKwclass");
-  return self;
-}
-val_t NEW_TKwclass_lexer___TKwclass___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwclass();
-  lexer___TKwclass___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwclass(self, "lexer::TKwclass::init_tk for TKwclass");
-  return self;
-}
-const classtable_elt_t VFT_TKwabstract[74] = {
-  {(bigint) 3691 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwabstract < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwabstract < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwabstract < Token: superclass typecheck marker */},
-  {(bigint) 3691 /* 4: TKwabstract < TKwabstract: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwabstract < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwabstract < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwabstract___parser_index},
-  {(bigint) 2 /* 71: TKwabstract < Token: superclass init_table position */},
-  {(bigint) lexer___TKwabstract___init_tk},
-  {(bigint) 3 /* 73: TKwabstract < TKwabstract: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwabstract::_parent */
-/* 2: Attribute TKwabstract::_symbol */
-/* 3: Attribute TKwabstract::_text */
-/* 4: Attribute TKwabstract::_filename */
-/* 5: Attribute TKwabstract::_line */
-/* 6: Attribute TKwabstract::_pos */
-val_t NEW_TKwabstract(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwabstract;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwabstract(val_t self, char *from) {
-}
-val_t NEW_TKwabstract_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwabstract();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwabstract(self, "parser_nodes::PNode::init for TKwabstract");
-  return self;
-}
-val_t NEW_TKwabstract_lexer___TKwabstract___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwabstract();
-  lexer___TKwabstract___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwabstract(self, "lexer::TKwabstract::init_tk for TKwabstract");
-  return self;
-}
-const classtable_elt_t VFT_TKwinterface[74] = {
-  {(bigint) 3619 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwinterface < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwinterface < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwinterface < Token: superclass typecheck marker */},
-  {(bigint) 3619 /* 4: TKwinterface < TKwinterface: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwinterface < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwinterface < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwinterface___parser_index},
-  {(bigint) 2 /* 71: TKwinterface < Token: superclass init_table position */},
-  {(bigint) lexer___TKwinterface___init_tk},
-  {(bigint) 3 /* 73: TKwinterface < TKwinterface: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwinterface::_parent */
-/* 2: Attribute TKwinterface::_symbol */
-/* 3: Attribute TKwinterface::_text */
-/* 4: Attribute TKwinterface::_filename */
-/* 5: Attribute TKwinterface::_line */
-/* 6: Attribute TKwinterface::_pos */
-val_t NEW_TKwinterface(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwinterface;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwinterface(val_t self, char *from) {
-}
-val_t NEW_TKwinterface_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwinterface();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwinterface(self, "parser_nodes::PNode::init for TKwinterface");
-  return self;
-}
-val_t NEW_TKwinterface_lexer___TKwinterface___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwinterface();
-  lexer___TKwinterface___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwinterface(self, "lexer::TKwinterface::init_tk for TKwinterface");
-  return self;
-}
-const classtable_elt_t VFT_TKwuniversal[74] = {
-  {(bigint) 3519 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwuniversal < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwuniversal < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwuniversal < Token: superclass typecheck marker */},
-  {(bigint) 3519 /* 4: TKwuniversal < TKwuniversal: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwuniversal < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwuniversal < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwuniversal___parser_index},
-  {(bigint) 2 /* 71: TKwuniversal < Token: superclass init_table position */},
-  {(bigint) lexer___TKwuniversal___init_tk},
-  {(bigint) 3 /* 73: TKwuniversal < TKwuniversal: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwuniversal::_parent */
-/* 2: Attribute TKwuniversal::_symbol */
-/* 3: Attribute TKwuniversal::_text */
-/* 4: Attribute TKwuniversal::_filename */
-/* 5: Attribute TKwuniversal::_line */
-/* 6: Attribute TKwuniversal::_pos */
-val_t NEW_TKwuniversal(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwuniversal;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwuniversal(val_t self, char *from) {
-}
-val_t NEW_TKwuniversal_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwuniversal();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwuniversal(self, "parser_nodes::PNode::init for TKwuniversal");
-  return self;
-}
-val_t NEW_TKwuniversal_lexer___TKwuniversal___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwuniversal();
-  lexer___TKwuniversal___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwuniversal(self, "lexer::TKwuniversal::init_tk for TKwuniversal");
-  return self;
-}
-const classtable_elt_t VFT_TKwspecial[74] = {
-  {(bigint) 3539 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwspecial < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwspecial < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwspecial < Token: superclass typecheck marker */},
-  {(bigint) 3539 /* 4: TKwspecial < TKwspecial: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwspecial < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwspecial < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwspecial___parser_index},
-  {(bigint) 2 /* 71: TKwspecial < Token: superclass init_table position */},
-  {(bigint) lexer___TKwspecial___init_tk},
-  {(bigint) 3 /* 73: TKwspecial < TKwspecial: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwspecial::_parent */
-/* 2: Attribute TKwspecial::_symbol */
-/* 3: Attribute TKwspecial::_text */
-/* 4: Attribute TKwspecial::_filename */
-/* 5: Attribute TKwspecial::_line */
-/* 6: Attribute TKwspecial::_pos */
-val_t NEW_TKwspecial(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwspecial;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwspecial(val_t self, char *from) {
-}
-val_t NEW_TKwspecial_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwspecial();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwspecial(self, "parser_nodes::PNode::init for TKwspecial");
-  return self;
-}
-val_t NEW_TKwspecial_lexer___TKwspecial___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwspecial();
-  lexer___TKwspecial___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwspecial(self, "lexer::TKwspecial::init_tk for TKwspecial");
-  return self;
-}
-const classtable_elt_t VFT_TKwend[74] = {
-  {(bigint) 3651 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwend < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwend < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwend < Token: superclass typecheck marker */},
-  {(bigint) 3651 /* 4: TKwend < TKwend: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwend < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwend < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwend___parser_index},
-  {(bigint) 2 /* 71: TKwend < Token: superclass init_table position */},
-  {(bigint) lexer___TKwend___init_tk},
-  {(bigint) 3 /* 73: TKwend < TKwend: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwend::_parent */
-/* 2: Attribute TKwend::_symbol */
-/* 3: Attribute TKwend::_text */
-/* 4: Attribute TKwend::_filename */
-/* 5: Attribute TKwend::_line */
-/* 6: Attribute TKwend::_pos */
-val_t NEW_TKwend(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwend;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwend(val_t self, char *from) {
-}
-val_t NEW_TKwend_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwend();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwend(self, "parser_nodes::PNode::init for TKwend");
-  return self;
-}
-val_t NEW_TKwend_lexer___TKwend___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwend();
-  lexer___TKwend___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwend(self, "lexer::TKwend::init_tk for TKwend");
-  return self;
-}
-const classtable_elt_t VFT_TKwmeth[74] = {
-  {(bigint) 3595 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwmeth < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwmeth < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwmeth < Token: superclass typecheck marker */},
-  {(bigint) 3595 /* 4: TKwmeth < TKwmeth: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwmeth < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwmeth < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwmeth___parser_index},
-  {(bigint) 2 /* 71: TKwmeth < Token: superclass init_table position */},
-  {(bigint) lexer___TKwmeth___init_tk},
-  {(bigint) 3 /* 73: TKwmeth < TKwmeth: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwmeth::_parent */
-/* 2: Attribute TKwmeth::_symbol */
-/* 3: Attribute TKwmeth::_text */
-/* 4: Attribute TKwmeth::_filename */
-/* 5: Attribute TKwmeth::_line */
-/* 6: Attribute TKwmeth::_pos */
-val_t NEW_TKwmeth(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwmeth;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwmeth(val_t self, char *from) {
-}
-val_t NEW_TKwmeth_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwmeth();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwmeth(self, "parser_nodes::PNode::init for TKwmeth");
-  return self;
-}
-val_t NEW_TKwmeth_lexer___TKwmeth___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwmeth();
-  lexer___TKwmeth___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TKwmeth(self, "lexer::TKwmeth::init_tk for TKwmeth");
-  return self;
-}
-const classtable_elt_t VFT_TKwtype[74] = {
-  {(bigint) 3523 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwtype < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwtype < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwtype < Token: superclass typecheck marker */},
-  {(bigint) 3523 /* 4: TKwtype < TKwtype: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwtype < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwtype < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwtype___parser_index},
-  {(bigint) 2 /* 71: TKwtype < Token: superclass init_table position */},
-  {(bigint) lexer___TKwtype___init_tk},
-  {(bigint) 3 /* 73: TKwtype < TKwtype: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwtype::_parent */
-/* 2: Attribute TKwtype::_symbol */
-/* 3: Attribute TKwtype::_text */
-/* 4: Attribute TKwtype::_filename */
-/* 5: Attribute TKwtype::_line */
-/* 6: Attribute TKwtype::_pos */
-val_t NEW_TKwtype(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwtype;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwtype(val_t self, char *from) {
-}
-val_t NEW_TKwtype_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwtype();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwtype(self, "parser_nodes::PNode::init for TKwtype");
-  return self;
-}
-val_t NEW_TKwtype_lexer___TKwtype___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwtype();
-  lexer___TKwtype___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwtype(self, "lexer::TKwtype::init_tk for TKwtype");
-  return self;
-}
-const classtable_elt_t VFT_TKwattr[74] = {
-  {(bigint) 3675 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwattr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwattr < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwattr < Token: superclass typecheck marker */},
-  {(bigint) 3675 /* 4: TKwattr < TKwattr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwattr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwattr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwattr___parser_index},
-  {(bigint) 2 /* 71: TKwattr < Token: superclass init_table position */},
-  {(bigint) lexer___TKwattr___init_tk},
-  {(bigint) 3 /* 73: TKwattr < TKwattr: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwattr::_parent */
-/* 2: Attribute TKwattr::_symbol */
-/* 3: Attribute TKwattr::_text */
-/* 4: Attribute TKwattr::_filename */
-/* 5: Attribute TKwattr::_line */
-/* 6: Attribute TKwattr::_pos */
-val_t NEW_TKwattr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwattr;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwattr(val_t self, char *from) {
-}
-val_t NEW_TKwattr_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwattr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwattr(self, "parser_nodes::PNode::init for TKwattr");
-  return self;
-}
-val_t NEW_TKwattr_lexer___TKwattr___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwattr();
-  lexer___TKwattr___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwattr(self, "lexer::TKwattr::init_tk for TKwattr");
-  return self;
-}
-const classtable_elt_t VFT_TKwinit[74] = {
-  {(bigint) 3623 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwinit < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwinit < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwinit < Token: superclass typecheck marker */},
-  {(bigint) 3623 /* 4: TKwinit < TKwinit: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwinit < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwinit < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwinit___parser_index},
-  {(bigint) 2 /* 71: TKwinit < Token: superclass init_table position */},
-  {(bigint) lexer___TKwinit___init_tk},
-  {(bigint) 3 /* 73: TKwinit < TKwinit: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwinit::_parent */
-/* 2: Attribute TKwinit::_symbol */
-/* 3: Attribute TKwinit::_text */
-/* 4: Attribute TKwinit::_filename */
-/* 5: Attribute TKwinit::_line */
-/* 6: Attribute TKwinit::_pos */
-val_t NEW_TKwinit(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwinit;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwinit(val_t self, char *from) {
-}
-val_t NEW_TKwinit_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwinit();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwinit(self, "parser_nodes::PNode::init for TKwinit");
-  return self;
-}
-val_t NEW_TKwinit_lexer___TKwinit___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwinit();
-  lexer___TKwinit___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwinit(self, "lexer::TKwinit::init_tk for TKwinit");
-  return self;
-}
-const classtable_elt_t VFT_TKwredef[74] = {
-  {(bigint) 3551 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwredef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwredef < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwredef < Token: superclass typecheck marker */},
-  {(bigint) 3551 /* 4: TKwredef < TKwredef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwredef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwredef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwredef___parser_index},
-  {(bigint) 2 /* 71: TKwredef < Token: superclass init_table position */},
-  {(bigint) lexer___TKwredef___init_tk},
-  {(bigint) 3 /* 73: TKwredef < TKwredef: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwredef::_parent */
-/* 2: Attribute TKwredef::_symbol */
-/* 3: Attribute TKwredef::_text */
-/* 4: Attribute TKwredef::_filename */
-/* 5: Attribute TKwredef::_line */
-/* 6: Attribute TKwredef::_pos */
-val_t NEW_TKwredef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwredef;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwredef(val_t self, char *from) {
-}
-val_t NEW_TKwredef_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwredef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwredef(self, "parser_nodes::PNode::init for TKwredef");
-  return self;
-}
-val_t NEW_TKwredef_lexer___TKwredef___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwredef();
-  lexer___TKwredef___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwredef(self, "lexer::TKwredef::init_tk for TKwredef");
-  return self;
-}
-const classtable_elt_t VFT_TKwis[74] = {
-  {(bigint) 3607 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwis < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwis < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwis < Token: superclass typecheck marker */},
-  {(bigint) 3607 /* 4: TKwis < TKwis: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwis < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwis < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwis___parser_index},
-  {(bigint) 2 /* 71: TKwis < Token: superclass init_table position */},
-  {(bigint) lexer___TKwis___init_tk},
-  {(bigint) 3 /* 73: TKwis < TKwis: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwis::_parent */
-/* 2: Attribute TKwis::_symbol */
-/* 3: Attribute TKwis::_text */
-/* 4: Attribute TKwis::_filename */
-/* 5: Attribute TKwis::_line */
-/* 6: Attribute TKwis::_pos */
-val_t NEW_TKwis(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwis;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwis(val_t self, char *from) {
-}
-val_t NEW_TKwis_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwis();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwis(self, "parser_nodes::PNode::init for TKwis");
-  return self;
-}
-val_t NEW_TKwis_lexer___TKwis___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwis();
-  lexer___TKwis___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwis(self, "lexer::TKwis::init_tk for TKwis");
-  return self;
-}
-const classtable_elt_t VFT_TKwdo[74] = {
-  {(bigint) 3659 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwdo < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwdo < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwdo < Token: superclass typecheck marker */},
-  {(bigint) 3659 /* 4: TKwdo < TKwdo: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwdo < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwdo < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwdo___parser_index},
-  {(bigint) 2 /* 71: TKwdo < Token: superclass init_table position */},
-  {(bigint) lexer___TKwdo___init_tk},
-  {(bigint) 3 /* 73: TKwdo < TKwdo: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwdo::_parent */
-/* 2: Attribute TKwdo::_symbol */
-/* 3: Attribute TKwdo::_text */
-/* 4: Attribute TKwdo::_filename */
-/* 5: Attribute TKwdo::_line */
-/* 6: Attribute TKwdo::_pos */
-val_t NEW_TKwdo(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwdo;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwdo(val_t self, char *from) {
-}
-val_t NEW_TKwdo_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwdo();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwdo(self, "parser_nodes::PNode::init for TKwdo");
-  return self;
-}
-val_t NEW_TKwdo_lexer___TKwdo___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwdo();
-  lexer___TKwdo___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwdo(self, "lexer::TKwdo::init_tk for TKwdo");
-  return self;
-}
-const classtable_elt_t VFT_TKwreadable[74] = {
-  {(bigint) 3555 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwreadable < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwreadable < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwreadable < Token: superclass typecheck marker */},
-  {(bigint) 3555 /* 4: TKwreadable < TKwreadable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwreadable < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwreadable < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwreadable___parser_index},
-  {(bigint) 2 /* 71: TKwreadable < Token: superclass init_table position */},
-  {(bigint) lexer___TKwreadable___init_tk},
-  {(bigint) 3 /* 73: TKwreadable < TKwreadable: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwreadable::_parent */
-/* 2: Attribute TKwreadable::_symbol */
-/* 3: Attribute TKwreadable::_text */
-/* 4: Attribute TKwreadable::_filename */
-/* 5: Attribute TKwreadable::_line */
-/* 6: Attribute TKwreadable::_pos */
-val_t NEW_TKwreadable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwreadable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwreadable(val_t self, char *from) {
-}
-val_t NEW_TKwreadable_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwreadable();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwreadable(self, "parser_nodes::PNode::init for TKwreadable");
-  return self;
-}
-val_t NEW_TKwreadable_lexer___TKwreadable___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwreadable();
-  lexer___TKwreadable___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwreadable(self, "lexer::TKwreadable::init_tk for TKwreadable");
-  return self;
-}
-const classtable_elt_t VFT_TKwwritable[74] = {
-  {(bigint) 3503 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwwritable < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwwritable < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwwritable < Token: superclass typecheck marker */},
-  {(bigint) 3503 /* 4: TKwwritable < TKwwritable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwwritable < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwwritable < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwwritable___parser_index},
-  {(bigint) 2 /* 71: TKwwritable < Token: superclass init_table position */},
-  {(bigint) lexer___TKwwritable___init_tk},
-  {(bigint) 3 /* 73: TKwwritable < TKwwritable: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwwritable::_parent */
-/* 2: Attribute TKwwritable::_symbol */
-/* 3: Attribute TKwwritable::_text */
-/* 4: Attribute TKwwritable::_filename */
-/* 5: Attribute TKwwritable::_line */
-/* 6: Attribute TKwwritable::_pos */
-val_t NEW_TKwwritable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwwritable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwwritable(val_t self, char *from) {
-}
-val_t NEW_TKwwritable_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwwritable();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwwritable(self, "parser_nodes::PNode::init for TKwwritable");
-  return self;
-}
-val_t NEW_TKwwritable_lexer___TKwwritable___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwwritable();
-  lexer___TKwwritable___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwwritable(self, "lexer::TKwwritable::init_tk for TKwwritable");
-  return self;
-}
-const classtable_elt_t VFT_TKwvar[74] = {
-  {(bigint) 3515 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwvar < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwvar < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwvar < Token: superclass typecheck marker */},
-  {(bigint) 3515 /* 4: TKwvar < TKwvar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwvar < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwvar < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwvar___parser_index},
-  {(bigint) 2 /* 71: TKwvar < Token: superclass init_table position */},
-  {(bigint) lexer___TKwvar___init_tk},
-  {(bigint) 3 /* 73: TKwvar < TKwvar: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwvar::_parent */
-/* 2: Attribute TKwvar::_symbol */
-/* 3: Attribute TKwvar::_text */
-/* 4: Attribute TKwvar::_filename */
-/* 5: Attribute TKwvar::_line */
-/* 6: Attribute TKwvar::_pos */
-val_t NEW_TKwvar(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwvar;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwvar(val_t self, char *from) {
-}
-val_t NEW_TKwvar_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwvar();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwvar(self, "parser_nodes::PNode::init for TKwvar");
-  return self;
-}
-val_t NEW_TKwvar_lexer___TKwvar___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwvar();
-  lexer___TKwvar___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwvar(self, "lexer::TKwvar::init_tk for TKwvar");
-  return self;
-}
-const classtable_elt_t VFT_TKwintern[74] = {
-  {(bigint) 3615 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwintern < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwintern < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwintern < Token: superclass typecheck marker */},
-  {(bigint) 3615 /* 4: TKwintern < TKwintern: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwintern < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwintern < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwintern___parser_index},
-  {(bigint) 2 /* 71: TKwintern < Token: superclass init_table position */},
-  {(bigint) lexer___TKwintern___init_tk},
-  {(bigint) 3 /* 73: TKwintern < TKwintern: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwintern::_parent */
-/* 2: Attribute TKwintern::_symbol */
-/* 3: Attribute TKwintern::_text */
-/* 4: Attribute TKwintern::_filename */
-/* 5: Attribute TKwintern::_line */
-/* 6: Attribute TKwintern::_pos */
-val_t NEW_TKwintern(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwintern;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwintern(val_t self, char *from) {
-}
-val_t NEW_TKwintern_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwintern();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwintern(self, "parser_nodes::PNode::init for TKwintern");
-  return self;
-}
-val_t NEW_TKwintern_lexer___TKwintern___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwintern();
-  lexer___TKwintern___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwintern(self, "lexer::TKwintern::init_tk for TKwintern");
-  return self;
-}
-const classtable_elt_t VFT_TKwextern[74] = {
-  {(bigint) 3647 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwextern < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwextern < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwextern < Token: superclass typecheck marker */},
-  {(bigint) 3647 /* 4: TKwextern < TKwextern: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwextern < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwextern < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwextern___parser_index},
-  {(bigint) 2 /* 71: TKwextern < Token: superclass init_table position */},
-  {(bigint) lexer___TKwextern___init_tk},
-  {(bigint) 3 /* 73: TKwextern < TKwextern: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwextern::_parent */
-/* 2: Attribute TKwextern::_symbol */
-/* 3: Attribute TKwextern::_text */
-/* 4: Attribute TKwextern::_filename */
-/* 5: Attribute TKwextern::_line */
-/* 6: Attribute TKwextern::_pos */
-val_t NEW_TKwextern(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwextern;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwextern(val_t self, char *from) {
-}
-val_t NEW_TKwextern_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwextern();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwextern(self, "parser_nodes::PNode::init for TKwextern");
-  return self;
-}
-val_t NEW_TKwextern_lexer___TKwextern___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwextern();
-  lexer___TKwextern___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwextern(self, "lexer::TKwextern::init_tk for TKwextern");
-  return self;
-}
-const classtable_elt_t VFT_TKwprotected[74] = {
-  {(bigint) 3559 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwprotected < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwprotected < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwprotected < Token: superclass typecheck marker */},
-  {(bigint) 3559 /* 4: TKwprotected < TKwprotected: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwprotected < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwprotected < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwprotected___parser_index},
-  {(bigint) 2 /* 71: TKwprotected < Token: superclass init_table position */},
-  {(bigint) lexer___TKwprotected___init_tk},
-  {(bigint) 3 /* 73: TKwprotected < TKwprotected: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwprotected::_parent */
-/* 2: Attribute TKwprotected::_symbol */
-/* 3: Attribute TKwprotected::_text */
-/* 4: Attribute TKwprotected::_filename */
-/* 5: Attribute TKwprotected::_line */
-/* 6: Attribute TKwprotected::_pos */
-val_t NEW_TKwprotected(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwprotected;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwprotected(val_t self, char *from) {
-}
-val_t NEW_TKwprotected_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwprotected();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwprotected(self, "parser_nodes::PNode::init for TKwprotected");
-  return self;
-}
-val_t NEW_TKwprotected_lexer___TKwprotected___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwprotected();
-  lexer___TKwprotected___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwprotected(self, "lexer::TKwprotected::init_tk for TKwprotected");
-  return self;
-}
-const classtable_elt_t VFT_TKwprivate[74] = {
-  {(bigint) 3563 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwprivate < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwprivate < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwprivate < Token: superclass typecheck marker */},
-  {(bigint) 3563 /* 4: TKwprivate < TKwprivate: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwprivate < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwprivate < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwprivate___parser_index},
-  {(bigint) 2 /* 71: TKwprivate < Token: superclass init_table position */},
-  {(bigint) lexer___TKwprivate___init_tk},
-  {(bigint) 3 /* 73: TKwprivate < TKwprivate: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwprivate::_parent */
-/* 2: Attribute TKwprivate::_symbol */
-/* 3: Attribute TKwprivate::_text */
-/* 4: Attribute TKwprivate::_filename */
-/* 5: Attribute TKwprivate::_line */
-/* 6: Attribute TKwprivate::_pos */
-val_t NEW_TKwprivate(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwprivate;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwprivate(val_t self, char *from) {
-}
-val_t NEW_TKwprivate_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwprivate();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwprivate(self, "parser_nodes::PNode::init for TKwprivate");
-  return self;
-}
-val_t NEW_TKwprivate_lexer___TKwprivate___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwprivate();
-  lexer___TKwprivate___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwprivate(self, "lexer::TKwprivate::init_tk for TKwprivate");
-  return self;
-}
-const classtable_elt_t VFT_TKwintrude[74] = {
-  {(bigint) 3611 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwintrude < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwintrude < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwintrude < Token: superclass typecheck marker */},
-  {(bigint) 3611 /* 4: TKwintrude < TKwintrude: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwintrude < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwintrude < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwintrude___parser_index},
-  {(bigint) 2 /* 71: TKwintrude < Token: superclass init_table position */},
-  {(bigint) lexer___TKwintrude___init_tk},
-  {(bigint) 3 /* 73: TKwintrude < TKwintrude: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwintrude::_parent */
-/* 2: Attribute TKwintrude::_symbol */
-/* 3: Attribute TKwintrude::_text */
-/* 4: Attribute TKwintrude::_filename */
-/* 5: Attribute TKwintrude::_line */
-/* 6: Attribute TKwintrude::_pos */
-val_t NEW_TKwintrude(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwintrude;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwintrude(val_t self, char *from) {
-}
-val_t NEW_TKwintrude_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwintrude();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwintrude(self, "parser_nodes::PNode::init for TKwintrude");
-  return self;
-}
-val_t NEW_TKwintrude_lexer___TKwintrude___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwintrude();
-  lexer___TKwintrude___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwintrude(self, "lexer::TKwintrude::init_tk for TKwintrude");
-  return self;
-}
-const classtable_elt_t VFT_TKwif[74] = {
-  {(bigint) 3635 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwif < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwif < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwif < Token: superclass typecheck marker */},
-  {(bigint) 3635 /* 4: TKwif < TKwif: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwif < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwif < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwif___parser_index},
-  {(bigint) 2 /* 71: TKwif < Token: superclass init_table position */},
-  {(bigint) lexer___TKwif___init_tk},
-  {(bigint) 3 /* 73: TKwif < TKwif: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwif::_parent */
-/* 2: Attribute TKwif::_symbol */
-/* 3: Attribute TKwif::_text */
-/* 4: Attribute TKwif::_filename */
-/* 5: Attribute TKwif::_line */
-/* 6: Attribute TKwif::_pos */
-val_t NEW_TKwif(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwif;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwif(val_t self, char *from) {
-}
-val_t NEW_TKwif_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwif();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwif(self, "parser_nodes::PNode::init for TKwif");
-  return self;
-}
-val_t NEW_TKwif_lexer___TKwif___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwif();
-  lexer___TKwif___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwif(self, "lexer::TKwif::init_tk for TKwif");
-  return self;
-}
-const classtable_elt_t VFT_TKwthen[74] = {
-  {(bigint) 3531 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwthen < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwthen < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwthen < Token: superclass typecheck marker */},
-  {(bigint) 3531 /* 4: TKwthen < TKwthen: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwthen < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwthen < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwthen___parser_index},
-  {(bigint) 2 /* 71: TKwthen < Token: superclass init_table position */},
-  {(bigint) lexer___TKwthen___init_tk},
-  {(bigint) 3 /* 73: TKwthen < TKwthen: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwthen::_parent */
-/* 2: Attribute TKwthen::_symbol */
-/* 3: Attribute TKwthen::_text */
-/* 4: Attribute TKwthen::_filename */
-/* 5: Attribute TKwthen::_line */
-/* 6: Attribute TKwthen::_pos */
-val_t NEW_TKwthen(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwthen;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwthen(val_t self, char *from) {
-}
-val_t NEW_TKwthen_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwthen();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwthen(self, "parser_nodes::PNode::init for TKwthen");
-  return self;
-}
-val_t NEW_TKwthen_lexer___TKwthen___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwthen();
-  lexer___TKwthen___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwthen(self, "lexer::TKwthen::init_tk for TKwthen");
-  return self;
-}
-const classtable_elt_t VFT_TKwelse[74] = {
-  {(bigint) 3655 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwelse < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwelse < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwelse < Token: superclass typecheck marker */},
-  {(bigint) 3655 /* 4: TKwelse < TKwelse: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwelse < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwelse < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwelse___parser_index},
-  {(bigint) 2 /* 71: TKwelse < Token: superclass init_table position */},
-  {(bigint) lexer___TKwelse___init_tk},
-  {(bigint) 3 /* 73: TKwelse < TKwelse: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwelse::_parent */
-/* 2: Attribute TKwelse::_symbol */
-/* 3: Attribute TKwelse::_text */
-/* 4: Attribute TKwelse::_filename */
-/* 5: Attribute TKwelse::_line */
-/* 6: Attribute TKwelse::_pos */
-val_t NEW_TKwelse(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwelse;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwelse(val_t self, char *from) {
-}
-val_t NEW_TKwelse_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwelse();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwelse(self, "parser_nodes::PNode::init for TKwelse");
-  return self;
-}
-val_t NEW_TKwelse_lexer___TKwelse___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwelse();
-  lexer___TKwelse___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwelse(self, "lexer::TKwelse::init_tk for TKwelse");
-  return self;
-}
-const classtable_elt_t VFT_TKwwhile[74] = {
-  {(bigint) 3511 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwwhile < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwwhile < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwwhile < Token: superclass typecheck marker */},
-  {(bigint) 3511 /* 4: TKwwhile < TKwwhile: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwwhile < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwwhile < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwwhile___parser_index},
-  {(bigint) 2 /* 71: TKwwhile < Token: superclass init_table position */},
-  {(bigint) lexer___TKwwhile___init_tk},
-  {(bigint) 3 /* 73: TKwwhile < TKwwhile: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwwhile::_parent */
-/* 2: Attribute TKwwhile::_symbol */
-/* 3: Attribute TKwwhile::_text */
-/* 4: Attribute TKwwhile::_filename */
-/* 5: Attribute TKwwhile::_line */
-/* 6: Attribute TKwwhile::_pos */
-val_t NEW_TKwwhile(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwwhile;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwwhile(val_t self, char *from) {
-}
-val_t NEW_TKwwhile_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwwhile();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwwhile(self, "parser_nodes::PNode::init for TKwwhile");
-  return self;
-}
-val_t NEW_TKwwhile_lexer___TKwwhile___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwwhile();
-  lexer___TKwwhile___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwwhile(self, "lexer::TKwwhile::init_tk for TKwwhile");
-  return self;
-}
-const classtable_elt_t VFT_TKwfor[74] = {
-  {(bigint) 3639 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwfor < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwfor < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwfor < Token: superclass typecheck marker */},
-  {(bigint) 3639 /* 4: TKwfor < TKwfor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwfor < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwfor < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwfor___parser_index},
-  {(bigint) 2 /* 71: TKwfor < Token: superclass init_table position */},
-  {(bigint) lexer___TKwfor___init_tk},
-  {(bigint) 3 /* 73: TKwfor < TKwfor: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwfor::_parent */
-/* 2: Attribute TKwfor::_symbol */
-/* 3: Attribute TKwfor::_text */
-/* 4: Attribute TKwfor::_filename */
-/* 5: Attribute TKwfor::_line */
-/* 6: Attribute TKwfor::_pos */
-val_t NEW_TKwfor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwfor;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwfor(val_t self, char *from) {
-}
-val_t NEW_TKwfor_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwfor();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwfor(self, "parser_nodes::PNode::init for TKwfor");
-  return self;
-}
-val_t NEW_TKwfor_lexer___TKwfor___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwfor();
-  lexer___TKwfor___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwfor(self, "lexer::TKwfor::init_tk for TKwfor");
-  return self;
-}
-const classtable_elt_t VFT_TKwin[74] = {
-  {(bigint) 3627 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwin < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwin < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwin < Token: superclass typecheck marker */},
-  {(bigint) 3627 /* 4: TKwin < TKwin: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwin < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwin < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwin___parser_index},
-  {(bigint) 2 /* 71: TKwin < Token: superclass init_table position */},
-  {(bigint) lexer___TKwin___init_tk},
-  {(bigint) 3 /* 73: TKwin < TKwin: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwin::_parent */
-/* 2: Attribute TKwin::_symbol */
-/* 3: Attribute TKwin::_text */
-/* 4: Attribute TKwin::_filename */
-/* 5: Attribute TKwin::_line */
-/* 6: Attribute TKwin::_pos */
-val_t NEW_TKwin(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwin;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwin(val_t self, char *from) {
-}
-val_t NEW_TKwin_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwin();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwin(self, "parser_nodes::PNode::init for TKwin");
-  return self;
-}
-val_t NEW_TKwin_lexer___TKwin___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwin();
-  lexer___TKwin___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwin(self, "lexer::TKwin::init_tk for TKwin");
-  return self;
-}
-const classtable_elt_t VFT_TKwand[74] = {
-  {(bigint) 3687 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwand < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwand < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwand < Token: superclass typecheck marker */},
-  {(bigint) 3687 /* 4: TKwand < TKwand: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwand < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwand < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwand___parser_index},
-  {(bigint) 2 /* 71: TKwand < Token: superclass init_table position */},
-  {(bigint) lexer___TKwand___init_tk},
-  {(bigint) 3 /* 73: TKwand < TKwand: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwand::_parent */
-/* 2: Attribute TKwand::_symbol */
-/* 3: Attribute TKwand::_text */
-/* 4: Attribute TKwand::_filename */
-/* 5: Attribute TKwand::_line */
-/* 6: Attribute TKwand::_pos */
-val_t NEW_TKwand(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwand;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwand(val_t self, char *from) {
-}
-val_t NEW_TKwand_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwand();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwand(self, "parser_nodes::PNode::init for TKwand");
-  return self;
-}
-val_t NEW_TKwand_lexer___TKwand___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwand();
-  lexer___TKwand___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwand(self, "lexer::TKwand::init_tk for TKwand");
-  return self;
-}
-const classtable_elt_t VFT_TKwor[74] = {
-  {(bigint) 3571 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwor < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwor < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwor < Token: superclass typecheck marker */},
-  {(bigint) 3571 /* 4: TKwor < TKwor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwor < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwor < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwor___parser_index},
-  {(bigint) 2 /* 71: TKwor < Token: superclass init_table position */},
-  {(bigint) lexer___TKwor___init_tk},
-  {(bigint) 3 /* 73: TKwor < TKwor: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwor::_parent */
-/* 2: Attribute TKwor::_symbol */
-/* 3: Attribute TKwor::_text */
-/* 4: Attribute TKwor::_filename */
-/* 5: Attribute TKwor::_line */
-/* 6: Attribute TKwor::_pos */
-val_t NEW_TKwor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwor;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwor(val_t self, char *from) {
-}
-val_t NEW_TKwor_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwor();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwor(self, "parser_nodes::PNode::init for TKwor");
-  return self;
-}
-val_t NEW_TKwor_lexer___TKwor___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwor();
-  lexer___TKwor___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwor(self, "lexer::TKwor::init_tk for TKwor");
-  return self;
-}
-const classtable_elt_t VFT_TKwnot[74] = {
-  {(bigint) 3587 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwnot < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwnot < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwnot < Token: superclass typecheck marker */},
-  {(bigint) 3587 /* 4: TKwnot < TKwnot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwnot < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwnot < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwnot___parser_index},
-  {(bigint) 2 /* 71: TKwnot < Token: superclass init_table position */},
-  {(bigint) lexer___TKwnot___init_tk},
-  {(bigint) 3 /* 73: TKwnot < TKwnot: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwnot::_parent */
-/* 2: Attribute TKwnot::_symbol */
-/* 3: Attribute TKwnot::_text */
-/* 4: Attribute TKwnot::_filename */
-/* 5: Attribute TKwnot::_line */
-/* 6: Attribute TKwnot::_pos */
-val_t NEW_TKwnot(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwnot;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwnot(val_t self, char *from) {
-}
-val_t NEW_TKwnot_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwnot();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwnot(self, "parser_nodes::PNode::init for TKwnot");
-  return self;
-}
-val_t NEW_TKwnot_lexer___TKwnot___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwnot();
-  lexer___TKwnot___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwnot(self, "lexer::TKwnot::init_tk for TKwnot");
-  return self;
-}
-const classtable_elt_t VFT_TKwreturn[74] = {
-  {(bigint) 3547 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwreturn < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwreturn < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwreturn < Token: superclass typecheck marker */},
-  {(bigint) 3547 /* 4: TKwreturn < TKwreturn: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwreturn < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwreturn < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwreturn___parser_index},
-  {(bigint) 2 /* 71: TKwreturn < Token: superclass init_table position */},
-  {(bigint) lexer___TKwreturn___init_tk},
-  {(bigint) 3 /* 73: TKwreturn < TKwreturn: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwreturn::_parent */
-/* 2: Attribute TKwreturn::_symbol */
-/* 3: Attribute TKwreturn::_text */
-/* 4: Attribute TKwreturn::_filename */
-/* 5: Attribute TKwreturn::_line */
-/* 6: Attribute TKwreturn::_pos */
-val_t NEW_TKwreturn(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwreturn;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwreturn(val_t self, char *from) {
-}
-val_t NEW_TKwreturn_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwreturn();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwreturn(self, "parser_nodes::PNode::init for TKwreturn");
-  return self;
-}
-val_t NEW_TKwreturn_lexer___TKwreturn___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwreturn();
-  lexer___TKwreturn___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwreturn(self, "lexer::TKwreturn::init_tk for TKwreturn");
-  return self;
-}
-const classtable_elt_t VFT_TKwcontinue[74] = {
-  {(bigint) 3663 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwcontinue < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwcontinue < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwcontinue < Token: superclass typecheck marker */},
-  {(bigint) 3663 /* 4: TKwcontinue < TKwcontinue: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwcontinue < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwcontinue < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwcontinue___parser_index},
-  {(bigint) 2 /* 71: TKwcontinue < Token: superclass init_table position */},
-  {(bigint) lexer___TKwcontinue___init_tk},
-  {(bigint) 3 /* 73: TKwcontinue < TKwcontinue: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwcontinue::_parent */
-/* 2: Attribute TKwcontinue::_symbol */
-/* 3: Attribute TKwcontinue::_text */
-/* 4: Attribute TKwcontinue::_filename */
-/* 5: Attribute TKwcontinue::_line */
-/* 6: Attribute TKwcontinue::_pos */
-val_t NEW_TKwcontinue(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwcontinue;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwcontinue(val_t self, char *from) {
-}
-val_t NEW_TKwcontinue_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwcontinue();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwcontinue(self, "parser_nodes::PNode::init for TKwcontinue");
-  return self;
-}
-val_t NEW_TKwcontinue_lexer___TKwcontinue___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwcontinue();
-  lexer___TKwcontinue___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwcontinue(self, "lexer::TKwcontinue::init_tk for TKwcontinue");
-  return self;
-}
-const classtable_elt_t VFT_TKwbreak[74] = {
-  {(bigint) 3671 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwbreak < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwbreak < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwbreak < Token: superclass typecheck marker */},
-  {(bigint) 3671 /* 4: TKwbreak < TKwbreak: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwbreak < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwbreak < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwbreak___parser_index},
-  {(bigint) 2 /* 71: TKwbreak < Token: superclass init_table position */},
-  {(bigint) lexer___TKwbreak___init_tk},
-  {(bigint) 3 /* 73: TKwbreak < TKwbreak: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwbreak::_parent */
-/* 2: Attribute TKwbreak::_symbol */
-/* 3: Attribute TKwbreak::_text */
-/* 4: Attribute TKwbreak::_filename */
-/* 5: Attribute TKwbreak::_line */
-/* 6: Attribute TKwbreak::_pos */
-val_t NEW_TKwbreak(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwbreak;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwbreak(val_t self, char *from) {
-}
-val_t NEW_TKwbreak_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwbreak();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwbreak(self, "parser_nodes::PNode::init for TKwbreak");
-  return self;
-}
-val_t NEW_TKwbreak_lexer___TKwbreak___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwbreak();
-  lexer___TKwbreak___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwbreak(self, "lexer::TKwbreak::init_tk for TKwbreak");
-  return self;
-}
-const classtable_elt_t VFT_TKwabort[74] = {
-  {(bigint) 3695 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwabort < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwabort < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwabort < Token: superclass typecheck marker */},
-  {(bigint) 3695 /* 4: TKwabort < TKwabort: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwabort < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwabort < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwabort___parser_index},
-  {(bigint) 2 /* 71: TKwabort < Token: superclass init_table position */},
-  {(bigint) lexer___TKwabort___init_tk},
-  {(bigint) 3 /* 73: TKwabort < TKwabort: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwabort::_parent */
-/* 2: Attribute TKwabort::_symbol */
-/* 3: Attribute TKwabort::_text */
-/* 4: Attribute TKwabort::_filename */
-/* 5: Attribute TKwabort::_line */
-/* 6: Attribute TKwabort::_pos */
-val_t NEW_TKwabort(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwabort;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwabort(val_t self, char *from) {
-}
-val_t NEW_TKwabort_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwabort();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwabort(self, "parser_nodes::PNode::init for TKwabort");
-  return self;
-}
-val_t NEW_TKwabort_lexer___TKwabort___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwabort();
-  lexer___TKwabort___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwabort(self, "lexer::TKwabort::init_tk for TKwabort");
-  return self;
-}
-const classtable_elt_t VFT_TKwassert[74] = {
-  {(bigint) 3679 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwassert < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwassert < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwassert < Token: superclass typecheck marker */},
-  {(bigint) 3679 /* 4: TKwassert < TKwassert: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwassert < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwassert < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwassert___parser_index},
-  {(bigint) 2 /* 71: TKwassert < Token: superclass init_table position */},
-  {(bigint) lexer___TKwassert___init_tk},
-  {(bigint) 3 /* 73: TKwassert < TKwassert: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwassert::_parent */
-/* 2: Attribute TKwassert::_symbol */
-/* 3: Attribute TKwassert::_text */
-/* 4: Attribute TKwassert::_filename */
-/* 5: Attribute TKwassert::_line */
-/* 6: Attribute TKwassert::_pos */
-val_t NEW_TKwassert(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwassert;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwassert(val_t self, char *from) {
-}
-val_t NEW_TKwassert_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwassert();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwassert(self, "parser_nodes::PNode::init for TKwassert");
-  return self;
-}
-val_t NEW_TKwassert_lexer___TKwassert___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwassert();
-  lexer___TKwassert___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwassert(self, "lexer::TKwassert::init_tk for TKwassert");
-  return self;
-}
-const classtable_elt_t VFT_TKwnew[74] = {
-  {(bigint) 3591 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwnew < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwnew < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwnew < Token: superclass typecheck marker */},
-  {(bigint) 3591 /* 4: TKwnew < TKwnew: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwnew < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwnew < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwnew___parser_index},
-  {(bigint) 2 /* 71: TKwnew < Token: superclass init_table position */},
-  {(bigint) lexer___TKwnew___init_tk},
-  {(bigint) 3 /* 73: TKwnew < TKwnew: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwnew::_parent */
-/* 2: Attribute TKwnew::_symbol */
-/* 3: Attribute TKwnew::_text */
-/* 4: Attribute TKwnew::_filename */
-/* 5: Attribute TKwnew::_line */
-/* 6: Attribute TKwnew::_pos */
-val_t NEW_TKwnew(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwnew;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwnew(val_t self, char *from) {
-}
-val_t NEW_TKwnew_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwnew();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwnew(self, "parser_nodes::PNode::init for TKwnew");
-  return self;
-}
-val_t NEW_TKwnew_lexer___TKwnew___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwnew();
-  lexer___TKwnew___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwnew(self, "lexer::TKwnew::init_tk for TKwnew");
-  return self;
-}
-const classtable_elt_t VFT_TKwisa[74] = {
-  {(bigint) 3603 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwisa < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwisa < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwisa < Token: superclass typecheck marker */},
-  {(bigint) 3603 /* 4: TKwisa < TKwisa: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwisa < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwisa < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwisa___parser_index},
-  {(bigint) 2 /* 71: TKwisa < Token: superclass init_table position */},
-  {(bigint) lexer___TKwisa___init_tk},
-  {(bigint) 3 /* 73: TKwisa < TKwisa: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwisa::_parent */
-/* 2: Attribute TKwisa::_symbol */
-/* 3: Attribute TKwisa::_text */
-/* 4: Attribute TKwisa::_filename */
-/* 5: Attribute TKwisa::_line */
-/* 6: Attribute TKwisa::_pos */
-val_t NEW_TKwisa(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwisa;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwisa(val_t self, char *from) {
-}
-val_t NEW_TKwisa_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwisa();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwisa(self, "parser_nodes::PNode::init for TKwisa");
-  return self;
-}
-val_t NEW_TKwisa_lexer___TKwisa___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwisa();
-  lexer___TKwisa___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwisa(self, "lexer::TKwisa::init_tk for TKwisa");
-  return self;
-}
-const classtable_elt_t VFT_TKwonce[74] = {
-  {(bigint) 3575 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwonce < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwonce < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwonce < Token: superclass typecheck marker */},
-  {(bigint) 3575 /* 4: TKwonce < TKwonce: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwonce < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwonce < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwonce___parser_index},
-  {(bigint) 2 /* 71: TKwonce < Token: superclass init_table position */},
-  {(bigint) lexer___TKwonce___init_tk},
-  {(bigint) 3 /* 73: TKwonce < TKwonce: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwonce::_parent */
-/* 2: Attribute TKwonce::_symbol */
-/* 3: Attribute TKwonce::_text */
-/* 4: Attribute TKwonce::_filename */
-/* 5: Attribute TKwonce::_line */
-/* 6: Attribute TKwonce::_pos */
-val_t NEW_TKwonce(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwonce;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwonce(val_t self, char *from) {
-}
-val_t NEW_TKwonce_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwonce();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwonce(self, "parser_nodes::PNode::init for TKwonce");
-  return self;
-}
-val_t NEW_TKwonce_lexer___TKwonce___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwonce();
-  lexer___TKwonce___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwonce(self, "lexer::TKwonce::init_tk for TKwonce");
-  return self;
-}
-const classtable_elt_t VFT_TKwsuper[74] = {
-  {(bigint) 3535 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwsuper < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwsuper < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwsuper < Token: superclass typecheck marker */},
-  {(bigint) 3535 /* 4: TKwsuper < TKwsuper: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwsuper < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwsuper < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwsuper___parser_index},
-  {(bigint) 2 /* 71: TKwsuper < Token: superclass init_table position */},
-  {(bigint) lexer___TKwsuper___init_tk},
-  {(bigint) 3 /* 73: TKwsuper < TKwsuper: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwsuper::_parent */
-/* 2: Attribute TKwsuper::_symbol */
-/* 3: Attribute TKwsuper::_text */
-/* 4: Attribute TKwsuper::_filename */
-/* 5: Attribute TKwsuper::_line */
-/* 6: Attribute TKwsuper::_pos */
-val_t NEW_TKwsuper(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwsuper;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwsuper(val_t self, char *from) {
-}
-val_t NEW_TKwsuper_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwsuper();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwsuper(self, "parser_nodes::PNode::init for TKwsuper");
-  return self;
-}
-val_t NEW_TKwsuper_lexer___TKwsuper___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwsuper();
-  lexer___TKwsuper___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwsuper(self, "lexer::TKwsuper::init_tk for TKwsuper");
-  return self;
-}
-const classtable_elt_t VFT_TKwself[74] = {
-  {(bigint) 3543 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwself < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwself < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwself < Token: superclass typecheck marker */},
-  {(bigint) 3543 /* 4: TKwself < TKwself: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwself < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwself < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwself___parser_index},
-  {(bigint) 2 /* 71: TKwself < Token: superclass init_table position */},
-  {(bigint) lexer___TKwself___init_tk},
-  {(bigint) 3 /* 73: TKwself < TKwself: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwself::_parent */
-/* 2: Attribute TKwself::_symbol */
-/* 3: Attribute TKwself::_text */
-/* 4: Attribute TKwself::_filename */
-/* 5: Attribute TKwself::_line */
-/* 6: Attribute TKwself::_pos */
-val_t NEW_TKwself(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwself;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwself(val_t self, char *from) {
-}
-val_t NEW_TKwself_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwself();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwself(self, "parser_nodes::PNode::init for TKwself");
-  return self;
-}
-val_t NEW_TKwself_lexer___TKwself___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwself();
-  lexer___TKwself___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwself(self, "lexer::TKwself::init_tk for TKwself");
-  return self;
-}
-const classtable_elt_t VFT_TKwtrue[74] = {
-  {(bigint) 3527 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwtrue < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwtrue < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwtrue < Token: superclass typecheck marker */},
-  {(bigint) 3527 /* 4: TKwtrue < TKwtrue: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwtrue < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwtrue < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwtrue___parser_index},
-  {(bigint) 2 /* 71: TKwtrue < Token: superclass init_table position */},
-  {(bigint) lexer___TKwtrue___init_tk},
-  {(bigint) 3 /* 73: TKwtrue < TKwtrue: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwtrue::_parent */
-/* 2: Attribute TKwtrue::_symbol */
-/* 3: Attribute TKwtrue::_text */
-/* 4: Attribute TKwtrue::_filename */
-/* 5: Attribute TKwtrue::_line */
-/* 6: Attribute TKwtrue::_pos */
-val_t NEW_TKwtrue(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwtrue;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwtrue(val_t self, char *from) {
-}
-val_t NEW_TKwtrue_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwtrue();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwtrue(self, "parser_nodes::PNode::init for TKwtrue");
-  return self;
-}
-val_t NEW_TKwtrue_lexer___TKwtrue___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwtrue();
-  lexer___TKwtrue___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwtrue(self, "lexer::TKwtrue::init_tk for TKwtrue");
-  return self;
-}
-const classtable_elt_t VFT_TKwfalse[74] = {
-  {(bigint) 3643 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwfalse < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwfalse < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwfalse < Token: superclass typecheck marker */},
-  {(bigint) 3643 /* 4: TKwfalse < TKwfalse: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwfalse < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwfalse < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwfalse___parser_index},
-  {(bigint) 2 /* 71: TKwfalse < Token: superclass init_table position */},
-  {(bigint) lexer___TKwfalse___init_tk},
-  {(bigint) 3 /* 73: TKwfalse < TKwfalse: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwfalse::_parent */
-/* 2: Attribute TKwfalse::_symbol */
-/* 3: Attribute TKwfalse::_text */
-/* 4: Attribute TKwfalse::_filename */
-/* 5: Attribute TKwfalse::_line */
-/* 6: Attribute TKwfalse::_pos */
-val_t NEW_TKwfalse(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwfalse;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwfalse(val_t self, char *from) {
-}
-val_t NEW_TKwfalse_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwfalse();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwfalse(self, "parser_nodes::PNode::init for TKwfalse");
-  return self;
-}
-val_t NEW_TKwfalse_lexer___TKwfalse___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwfalse();
-  lexer___TKwfalse___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwfalse(self, "lexer::TKwfalse::init_tk for TKwfalse");
-  return self;
-}
-const classtable_elt_t VFT_TKwnull[74] = {
-  {(bigint) 3583 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwnull < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwnull < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwnull < Token: superclass typecheck marker */},
-  {(bigint) 3583 /* 4: TKwnull < TKwnull: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwnull < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwnull < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwnull___parser_index},
-  {(bigint) 2 /* 71: TKwnull < Token: superclass init_table position */},
-  {(bigint) lexer___TKwnull___init_tk},
-  {(bigint) 3 /* 73: TKwnull < TKwnull: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwnull::_parent */
-/* 2: Attribute TKwnull::_symbol */
-/* 3: Attribute TKwnull::_text */
-/* 4: Attribute TKwnull::_filename */
-/* 5: Attribute TKwnull::_line */
-/* 6: Attribute TKwnull::_pos */
-val_t NEW_TKwnull(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwnull;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwnull(val_t self, char *from) {
-}
-val_t NEW_TKwnull_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwnull();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwnull(self, "parser_nodes::PNode::init for TKwnull");
-  return self;
-}
-val_t NEW_TKwnull_lexer___TKwnull___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwnull();
-  lexer___TKwnull___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwnull(self, "lexer::TKwnull::init_tk for TKwnull");
-  return self;
-}
-const classtable_elt_t VFT_TKwas[74] = {
-  {(bigint) 3683 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwas < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwas < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwas < Token: superclass typecheck marker */},
-  {(bigint) 3683 /* 4: TKwas < TKwas: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwas < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwas < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwas___parser_index},
-  {(bigint) 2 /* 71: TKwas < Token: superclass init_table position */},
-  {(bigint) lexer___TKwas___init_tk},
-  {(bigint) 3 /* 73: TKwas < TKwas: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwas::_parent */
-/* 2: Attribute TKwas::_symbol */
-/* 3: Attribute TKwas::_text */
-/* 4: Attribute TKwas::_filename */
-/* 5: Attribute TKwas::_line */
-/* 6: Attribute TKwas::_pos */
-val_t NEW_TKwas(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwas;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwas(val_t self, char *from) {
-}
-val_t NEW_TKwas_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwas();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwas(self, "parser_nodes::PNode::init for TKwas");
-  return self;
-}
-val_t NEW_TKwas_lexer___TKwas___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwas();
-  lexer___TKwas___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwas(self, "lexer::TKwas::init_tk for TKwas");
-  return self;
-}
-const classtable_elt_t VFT_TKwwith[74] = {
-  {(bigint) 3507 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwwith < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwwith < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwwith < Token: superclass typecheck marker */},
-  {(bigint) 3507 /* 4: TKwwith < TKwwith: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwwith < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwwith < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwwith___parser_index},
-  {(bigint) 2 /* 71: TKwwith < Token: superclass init_table position */},
-  {(bigint) lexer___TKwwith___init_tk},
-  {(bigint) 3 /* 73: TKwwith < TKwwith: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwwith::_parent */
-/* 2: Attribute TKwwith::_symbol */
-/* 3: Attribute TKwwith::_text */
-/* 4: Attribute TKwwith::_filename */
-/* 5: Attribute TKwwith::_line */
-/* 6: Attribute TKwwith::_pos */
-val_t NEW_TKwwith(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwwith;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwwith(val_t self, char *from) {
-}
-val_t NEW_TKwwith_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwwith();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwwith(self, "parser_nodes::PNode::init for TKwwith");
-  return self;
-}
-val_t NEW_TKwwith_lexer___TKwwith___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwwith();
-  lexer___TKwwith___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwwith(self, "lexer::TKwwith::init_tk for TKwwith");
-  return self;
-}
-const classtable_elt_t VFT_TKwnullable[74] = {
-  {(bigint) 3579 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwnullable < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwnullable < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwnullable < Token: superclass typecheck marker */},
-  {(bigint) 3579 /* 4: TKwnullable < TKwnullable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwnullable < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwnullable < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwnullable___parser_index},
-  {(bigint) 2 /* 71: TKwnullable < Token: superclass init_table position */},
-  {(bigint) lexer___TKwnullable___init_tk},
-  {(bigint) 3 /* 73: TKwnullable < TKwnullable: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwnullable::_parent */
-/* 2: Attribute TKwnullable::_symbol */
-/* 3: Attribute TKwnullable::_text */
-/* 4: Attribute TKwnullable::_filename */
-/* 5: Attribute TKwnullable::_line */
-/* 6: Attribute TKwnullable::_pos */
-val_t NEW_TKwnullable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwnullable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwnullable(val_t self, char *from) {
-}
-val_t NEW_TKwnullable_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwnullable();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwnullable(self, "parser_nodes::PNode::init for TKwnullable");
-  return self;
-}
-val_t NEW_TKwnullable_lexer___TKwnullable___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwnullable();
-  lexer___TKwnullable___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwnullable(self, "lexer::TKwnullable::init_tk for TKwnullable");
-  return self;
-}
-const classtable_elt_t VFT_TKwisset[74] = {
-  {(bigint) 3599 /* 0: Identity */},
-  {(bigint) 3 /* 1: TKwisset < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TKwisset < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TKwisset < Token: superclass typecheck marker */},
-  {(bigint) 3599 /* 4: TKwisset < TKwisset: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TKwisset < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TKwisset < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TKwisset___parser_index},
-  {(bigint) 2 /* 71: TKwisset < Token: superclass init_table position */},
-  {(bigint) lexer___TKwisset___init_tk},
-  {(bigint) 3 /* 73: TKwisset < TKwisset: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TKwisset::_parent */
-/* 2: Attribute TKwisset::_symbol */
-/* 3: Attribute TKwisset::_text */
-/* 4: Attribute TKwisset::_filename */
-/* 5: Attribute TKwisset::_line */
-/* 6: Attribute TKwisset::_pos */
-val_t NEW_TKwisset(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TKwisset;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TKwisset(val_t self, char *from) {
-}
-val_t NEW_TKwisset_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwisset();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TKwisset(self, "parser_nodes::PNode::init for TKwisset");
-  return self;
-}
-val_t NEW_TKwisset_lexer___TKwisset___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TKwisset();
-  lexer___TKwisset___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TKwisset(self, "lexer::TKwisset::init_tk for TKwisset");
-  return self;
-}
-const classtable_elt_t VFT_TOpar[74] = {
-  {(bigint) 3467 /* 0: Identity */},
-  {(bigint) 3 /* 1: TOpar < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TOpar < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TOpar < Token: superclass typecheck marker */},
-  {(bigint) 3467 /* 4: TOpar < TOpar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TOpar < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TOpar < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TOpar___parser_index},
-  {(bigint) 2 /* 71: TOpar < Token: superclass init_table position */},
-  {(bigint) lexer___TOpar___init_tk},
-  {(bigint) 3 /* 73: TOpar < TOpar: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TOpar::_parent */
-/* 2: Attribute TOpar::_symbol */
-/* 3: Attribute TOpar::_text */
-/* 4: Attribute TOpar::_filename */
-/* 5: Attribute TOpar::_line */
-/* 6: Attribute TOpar::_pos */
-val_t NEW_TOpar(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TOpar;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TOpar(val_t self, char *from) {
-}
-val_t NEW_TOpar_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TOpar();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TOpar(self, "parser_nodes::PNode::init for TOpar");
-  return self;
-}
-val_t NEW_TOpar_lexer___TOpar___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TOpar();
-  lexer___TOpar___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TOpar(self, "lexer::TOpar::init_tk for TOpar");
-  return self;
-}
-const classtable_elt_t VFT_TCpar[74] = {
-  {(bigint) 3739 /* 0: Identity */},
-  {(bigint) 3 /* 1: TCpar < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TCpar < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TCpar < Token: superclass typecheck marker */},
-  {(bigint) 3739 /* 4: TCpar < TCpar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TCpar < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TCpar < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TCpar___parser_index},
-  {(bigint) 2 /* 71: TCpar < Token: superclass init_table position */},
-  {(bigint) lexer___TCpar___init_tk},
-  {(bigint) 3 /* 73: TCpar < TCpar: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TCpar::_parent */
-/* 2: Attribute TCpar::_symbol */
-/* 3: Attribute TCpar::_text */
-/* 4: Attribute TCpar::_filename */
-/* 5: Attribute TCpar::_line */
-/* 6: Attribute TCpar::_pos */
-val_t NEW_TCpar(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TCpar;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TCpar(val_t self, char *from) {
-}
-val_t NEW_TCpar_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TCpar();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TCpar(self, "parser_nodes::PNode::init for TCpar");
-  return self;
-}
-val_t NEW_TCpar_lexer___TCpar___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TCpar();
-  lexer___TCpar___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TCpar(self, "lexer::TCpar::init_tk for TCpar");
-  return self;
-}
-const classtable_elt_t VFT_TObra[74] = {
-  {(bigint) 3471 /* 0: Identity */},
-  {(bigint) 3 /* 1: TObra < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TObra < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TObra < Token: superclass typecheck marker */},
-  {(bigint) 3471 /* 4: TObra < TObra: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TObra < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TObra < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TObra___parser_index},
-  {(bigint) 2 /* 71: TObra < Token: superclass init_table position */},
-  {(bigint) lexer___TObra___init_tk},
-  {(bigint) 3 /* 73: TObra < TObra: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TObra::_parent */
-/* 2: Attribute TObra::_symbol */
-/* 3: Attribute TObra::_text */
-/* 4: Attribute TObra::_filename */
-/* 5: Attribute TObra::_line */
-/* 6: Attribute TObra::_pos */
-val_t NEW_TObra(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TObra;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TObra(val_t self, char *from) {
-}
-val_t NEW_TObra_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TObra();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TObra(self, "parser_nodes::PNode::init for TObra");
-  return self;
-}
-val_t NEW_TObra_lexer___TObra___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TObra();
-  lexer___TObra___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TObra(self, "lexer::TObra::init_tk for TObra");
-  return self;
-}
-const classtable_elt_t VFT_TCbra[74] = {
-  {(bigint) 3763 /* 0: Identity */},
-  {(bigint) 3 /* 1: TCbra < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TCbra < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TCbra < Token: superclass typecheck marker */},
-  {(bigint) 3763 /* 4: TCbra < TCbra: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TCbra < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TCbra < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TCbra___parser_index},
-  {(bigint) 2 /* 71: TCbra < Token: superclass init_table position */},
-  {(bigint) lexer___TCbra___init_tk},
-  {(bigint) 3 /* 73: TCbra < TCbra: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TCbra::_parent */
-/* 2: Attribute TCbra::_symbol */
-/* 3: Attribute TCbra::_text */
-/* 4: Attribute TCbra::_filename */
-/* 5: Attribute TCbra::_line */
-/* 6: Attribute TCbra::_pos */
-val_t NEW_TCbra(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TCbra;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TCbra(val_t self, char *from) {
-}
-val_t NEW_TCbra_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TCbra();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TCbra(self, "parser_nodes::PNode::init for TCbra");
-  return self;
-}
-val_t NEW_TCbra_lexer___TCbra___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TCbra();
-  lexer___TCbra___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TCbra(self, "lexer::TCbra::init_tk for TCbra");
-  return self;
-}
-const classtable_elt_t VFT_TComma[74] = {
-  {(bigint) 3747 /* 0: Identity */},
-  {(bigint) 3 /* 1: TComma < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TComma < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TComma < Token: superclass typecheck marker */},
-  {(bigint) 3747 /* 4: TComma < TComma: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TComma < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TComma < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TComma___parser_index},
-  {(bigint) 2 /* 71: TComma < Token: superclass init_table position */},
-  {(bigint) lexer___TComma___init_tk},
-  {(bigint) 3 /* 73: TComma < TComma: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TComma::_parent */
-/* 2: Attribute TComma::_symbol */
-/* 3: Attribute TComma::_text */
-/* 4: Attribute TComma::_filename */
-/* 5: Attribute TComma::_line */
-/* 6: Attribute TComma::_pos */
-val_t NEW_TComma(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TComma;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TComma(val_t self, char *from) {
-}
-val_t NEW_TComma_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TComma();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TComma(self, "parser_nodes::PNode::init for TComma");
-  return self;
-}
-val_t NEW_TComma_lexer___TComma___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TComma();
-  lexer___TComma___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TComma(self, "lexer::TComma::init_tk for TComma");
-  return self;
-}
-const classtable_elt_t VFT_TColumn[74] = {
-  {(bigint) 3751 /* 0: Identity */},
-  {(bigint) 3 /* 1: TColumn < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TColumn < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TColumn < Token: superclass typecheck marker */},
-  {(bigint) 3751 /* 4: TColumn < TColumn: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TColumn < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TColumn < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TColumn___parser_index},
-  {(bigint) 2 /* 71: TColumn < Token: superclass init_table position */},
-  {(bigint) lexer___TColumn___init_tk},
-  {(bigint) 3 /* 73: TColumn < TColumn: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TColumn::_parent */
-/* 2: Attribute TColumn::_symbol */
-/* 3: Attribute TColumn::_text */
-/* 4: Attribute TColumn::_filename */
-/* 5: Attribute TColumn::_line */
-/* 6: Attribute TColumn::_pos */
-val_t NEW_TColumn(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TColumn;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TColumn(val_t self, char *from) {
-}
-val_t NEW_TColumn_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TColumn();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TColumn(self, "parser_nodes::PNode::init for TColumn");
-  return self;
-}
-val_t NEW_TColumn_lexer___TColumn___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TColumn();
-  lexer___TColumn___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TColumn(self, "lexer::TColumn::init_tk for TColumn");
-  return self;
-}
-const classtable_elt_t VFT_TQuad[74] = {
-  {(bigint) 3451 /* 0: Identity */},
-  {(bigint) 3 /* 1: TQuad < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TQuad < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TQuad < Token: superclass typecheck marker */},
-  {(bigint) 3451 /* 4: TQuad < TQuad: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TQuad < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TQuad < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TQuad___parser_index},
-  {(bigint) 2 /* 71: TQuad < Token: superclass init_table position */},
-  {(bigint) lexer___TQuad___init_tk},
-  {(bigint) 3 /* 73: TQuad < TQuad: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TQuad::_parent */
-/* 2: Attribute TQuad::_symbol */
-/* 3: Attribute TQuad::_text */
-/* 4: Attribute TQuad::_filename */
-/* 5: Attribute TQuad::_line */
-/* 6: Attribute TQuad::_pos */
-val_t NEW_TQuad(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TQuad;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TQuad(val_t self, char *from) {
-}
-val_t NEW_TQuad_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TQuad();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TQuad(self, "parser_nodes::PNode::init for TQuad");
-  return self;
-}
-val_t NEW_TQuad_lexer___TQuad___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TQuad();
-  lexer___TQuad___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TQuad(self, "lexer::TQuad::init_tk for TQuad");
-  return self;
-}
-const classtable_elt_t VFT_TAssign[74] = {
-  {(bigint) 3771 /* 0: Identity */},
-  {(bigint) 3 /* 1: TAssign < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TAssign < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TAssign < Token: superclass typecheck marker */},
-  {(bigint) 3771 /* 4: TAssign < TAssign: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TAssign < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TAssign < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TAssign___parser_index},
-  {(bigint) 2 /* 71: TAssign < Token: superclass init_table position */},
-  {(bigint) lexer___TAssign___init_tk},
-  {(bigint) 3 /* 73: TAssign < TAssign: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TAssign::_parent */
-/* 2: Attribute TAssign::_symbol */
-/* 3: Attribute TAssign::_text */
-/* 4: Attribute TAssign::_filename */
-/* 5: Attribute TAssign::_line */
-/* 6: Attribute TAssign::_pos */
-val_t NEW_TAssign(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TAssign;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TAssign(val_t self, char *from) {
-}
-val_t NEW_TAssign_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TAssign();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TAssign(self, "parser_nodes::PNode::init for TAssign");
-  return self;
-}
-val_t NEW_TAssign_lexer___TAssign___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TAssign();
-  lexer___TAssign___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TAssign(self, "lexer::TAssign::init_tk for TAssign");
-  return self;
-}
-const classtable_elt_t VFT_TPluseq[74] = {
-  {(bigint) 3455 /* 0: Identity */},
-  {(bigint) 3 /* 1: TPluseq < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TPluseq < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TPluseq < Token: superclass typecheck marker */},
-  {(bigint) 3455 /* 4: TPluseq < TPluseq: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TPluseq < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TPluseq < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TPluseq___parser_index},
-  {(bigint) 2 /* 71: TPluseq < Token: superclass init_table position */},
-  {(bigint) lexer___TPluseq___init_tk},
-  {(bigint) 3 /* 73: TPluseq < TPluseq: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TPluseq::_parent */
-/* 2: Attribute TPluseq::_symbol */
-/* 3: Attribute TPluseq::_text */
-/* 4: Attribute TPluseq::_filename */
-/* 5: Attribute TPluseq::_line */
-/* 6: Attribute TPluseq::_pos */
-val_t NEW_TPluseq(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TPluseq;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TPluseq(val_t self, char *from) {
-}
-val_t NEW_TPluseq_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TPluseq();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TPluseq(self, "parser_nodes::PNode::init for TPluseq");
-  return self;
-}
-val_t NEW_TPluseq_lexer___TPluseq___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TPluseq();
-  lexer___TPluseq___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TPluseq(self, "lexer::TPluseq::init_tk for TPluseq");
-  return self;
-}
-const classtable_elt_t VFT_TMinuseq[74] = {
-  {(bigint) 3483 /* 0: Identity */},
-  {(bigint) 3 /* 1: TMinuseq < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TMinuseq < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TMinuseq < Token: superclass typecheck marker */},
-  {(bigint) 3483 /* 4: TMinuseq < TMinuseq: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TMinuseq < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TMinuseq < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TMinuseq___parser_index},
-  {(bigint) 2 /* 71: TMinuseq < Token: superclass init_table position */},
-  {(bigint) lexer___TMinuseq___init_tk},
-  {(bigint) 3 /* 73: TMinuseq < TMinuseq: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TMinuseq::_parent */
-/* 2: Attribute TMinuseq::_symbol */
-/* 3: Attribute TMinuseq::_text */
-/* 4: Attribute TMinuseq::_filename */
-/* 5: Attribute TMinuseq::_line */
-/* 6: Attribute TMinuseq::_pos */
-val_t NEW_TMinuseq(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TMinuseq;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TMinuseq(val_t self, char *from) {
-}
-val_t NEW_TMinuseq_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TMinuseq();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TMinuseq(self, "parser_nodes::PNode::init for TMinuseq");
-  return self;
-}
-val_t NEW_TMinuseq_lexer___TMinuseq___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TMinuseq();
-  lexer___TMinuseq___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TMinuseq(self, "lexer::TMinuseq::init_tk for TMinuseq");
-  return self;
-}
-const classtable_elt_t VFT_TDotdotdot[74] = {
-  {(bigint) 3727 /* 0: Identity */},
-  {(bigint) 3 /* 1: TDotdotdot < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TDotdotdot < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TDotdotdot < Token: superclass typecheck marker */},
-  {(bigint) 3727 /* 4: TDotdotdot < TDotdotdot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TDotdotdot < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TDotdotdot < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TDotdotdot___parser_index},
-  {(bigint) 2 /* 71: TDotdotdot < Token: superclass init_table position */},
-  {(bigint) lexer___TDotdotdot___init_tk},
-  {(bigint) 3 /* 73: TDotdotdot < TDotdotdot: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TDotdotdot::_parent */
-/* 2: Attribute TDotdotdot::_symbol */
-/* 3: Attribute TDotdotdot::_text */
-/* 4: Attribute TDotdotdot::_filename */
-/* 5: Attribute TDotdotdot::_line */
-/* 6: Attribute TDotdotdot::_pos */
-val_t NEW_TDotdotdot(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TDotdotdot;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TDotdotdot(val_t self, char *from) {
-}
-val_t NEW_TDotdotdot_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TDotdotdot();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TDotdotdot(self, "parser_nodes::PNode::init for TDotdotdot");
-  return self;
-}
-val_t NEW_TDotdotdot_lexer___TDotdotdot___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TDotdotdot();
-  lexer___TDotdotdot___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TDotdotdot(self, "lexer::TDotdotdot::init_tk for TDotdotdot");
-  return self;
-}
-const classtable_elt_t VFT_TDotdot[74] = {
-  {(bigint) 3731 /* 0: Identity */},
-  {(bigint) 3 /* 1: TDotdot < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TDotdot < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TDotdot < Token: superclass typecheck marker */},
-  {(bigint) 3731 /* 4: TDotdot < TDotdot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TDotdot < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TDotdot < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TDotdot___parser_index},
-  {(bigint) 2 /* 71: TDotdot < Token: superclass init_table position */},
-  {(bigint) lexer___TDotdot___init_tk},
-  {(bigint) 3 /* 73: TDotdot < TDotdot: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TDotdot::_parent */
-/* 2: Attribute TDotdot::_symbol */
-/* 3: Attribute TDotdot::_text */
-/* 4: Attribute TDotdot::_filename */
-/* 5: Attribute TDotdot::_line */
-/* 6: Attribute TDotdot::_pos */
-val_t NEW_TDotdot(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TDotdot;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TDotdot(val_t self, char *from) {
-}
-val_t NEW_TDotdot_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TDotdot();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TDotdot(self, "parser_nodes::PNode::init for TDotdot");
-  return self;
-}
-val_t NEW_TDotdot_lexer___TDotdot___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TDotdot();
-  lexer___TDotdot___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TDotdot(self, "lexer::TDotdot::init_tk for TDotdot");
-  return self;
-}
-const classtable_elt_t VFT_TDot[74] = {
-  {(bigint) 3735 /* 0: Identity */},
-  {(bigint) 3 /* 1: TDot < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TDot < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TDot < Token: superclass typecheck marker */},
-  {(bigint) 3735 /* 4: TDot < TDot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TDot < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TDot < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TDot___parser_index},
-  {(bigint) 2 /* 71: TDot < Token: superclass init_table position */},
-  {(bigint) lexer___TDot___init_tk},
-  {(bigint) 3 /* 73: TDot < TDot: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TDot::_parent */
-/* 2: Attribute TDot::_symbol */
-/* 3: Attribute TDot::_text */
-/* 4: Attribute TDot::_filename */
-/* 5: Attribute TDot::_line */
-/* 6: Attribute TDot::_pos */
-val_t NEW_TDot(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TDot;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TDot(val_t self, char *from) {
-}
-val_t NEW_TDot_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TDot();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TDot(self, "parser_nodes::PNode::init for TDot");
-  return self;
-}
-val_t NEW_TDot_lexer___TDot___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TDot();
-  lexer___TDot___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TDot(self, "lexer::TDot::init_tk for TDot");
-  return self;
-}
-const classtable_elt_t VFT_TPlus[74] = {
-  {(bigint) 3459 /* 0: Identity */},
-  {(bigint) 3 /* 1: TPlus < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TPlus < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TPlus < Token: superclass typecheck marker */},
-  {(bigint) 3459 /* 4: TPlus < TPlus: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TPlus < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TPlus < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TPlus___parser_index},
-  {(bigint) 2 /* 71: TPlus < Token: superclass init_table position */},
-  {(bigint) lexer___TPlus___init_tk},
-  {(bigint) 3 /* 73: TPlus < TPlus: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TPlus::_parent */
-/* 2: Attribute TPlus::_symbol */
-/* 3: Attribute TPlus::_text */
-/* 4: Attribute TPlus::_filename */
-/* 5: Attribute TPlus::_line */
-/* 6: Attribute TPlus::_pos */
-val_t NEW_TPlus(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TPlus;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TPlus(val_t self, char *from) {
-}
-val_t NEW_TPlus_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TPlus();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TPlus(self, "parser_nodes::PNode::init for TPlus");
-  return self;
-}
-val_t NEW_TPlus_lexer___TPlus___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TPlus();
-  lexer___TPlus___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TPlus(self, "lexer::TPlus::init_tk for TPlus");
-  return self;
-}
-const classtable_elt_t VFT_TMinus[74] = {
-  {(bigint) 3487 /* 0: Identity */},
-  {(bigint) 3 /* 1: TMinus < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TMinus < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TMinus < Token: superclass typecheck marker */},
-  {(bigint) 3487 /* 4: TMinus < TMinus: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TMinus < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TMinus < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TMinus___parser_index},
-  {(bigint) 2 /* 71: TMinus < Token: superclass init_table position */},
-  {(bigint) lexer___TMinus___init_tk},
-  {(bigint) 3 /* 73: TMinus < TMinus: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TMinus::_parent */
-/* 2: Attribute TMinus::_symbol */
-/* 3: Attribute TMinus::_text */
-/* 4: Attribute TMinus::_filename */
-/* 5: Attribute TMinus::_line */
-/* 6: Attribute TMinus::_pos */
-val_t NEW_TMinus(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TMinus;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TMinus(val_t self, char *from) {
-}
-val_t NEW_TMinus_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TMinus();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TMinus(self, "parser_nodes::PNode::init for TMinus");
-  return self;
-}
-val_t NEW_TMinus_lexer___TMinus___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TMinus();
-  lexer___TMinus___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TMinus(self, "lexer::TMinus::init_tk for TMinus");
-  return self;
-}
-const classtable_elt_t VFT_TStar[74] = {
-  {(bigint) 3443 /* 0: Identity */},
-  {(bigint) 3 /* 1: TStar < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TStar < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TStar < Token: superclass typecheck marker */},
-  {(bigint) 3443 /* 4: TStar < TStar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TStar < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TStar < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TStar___parser_index},
-  {(bigint) 2 /* 71: TStar < Token: superclass init_table position */},
-  {(bigint) lexer___TStar___init_tk},
-  {(bigint) 3 /* 73: TStar < TStar: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TStar::_parent */
-/* 2: Attribute TStar::_symbol */
-/* 3: Attribute TStar::_text */
-/* 4: Attribute TStar::_filename */
-/* 5: Attribute TStar::_line */
-/* 6: Attribute TStar::_pos */
-val_t NEW_TStar(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TStar;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TStar(val_t self, char *from) {
-}
-val_t NEW_TStar_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TStar();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TStar(self, "parser_nodes::PNode::init for TStar");
-  return self;
-}
-val_t NEW_TStar_lexer___TStar___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TStar();
-  lexer___TStar___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TStar(self, "lexer::TStar::init_tk for TStar");
-  return self;
-}
-const classtable_elt_t VFT_TSlash[74] = {
-  {(bigint) 3447 /* 0: Identity */},
-  {(bigint) 3 /* 1: TSlash < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TSlash < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TSlash < Token: superclass typecheck marker */},
-  {(bigint) 3447 /* 4: TSlash < TSlash: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TSlash < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TSlash < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TSlash___parser_index},
-  {(bigint) 2 /* 71: TSlash < Token: superclass init_table position */},
-  {(bigint) lexer___TSlash___init_tk},
-  {(bigint) 3 /* 73: TSlash < TSlash: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TSlash::_parent */
-/* 2: Attribute TSlash::_symbol */
-/* 3: Attribute TSlash::_text */
-/* 4: Attribute TSlash::_filename */
-/* 5: Attribute TSlash::_line */
-/* 6: Attribute TSlash::_pos */
-val_t NEW_TSlash(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TSlash;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TSlash(val_t self, char *from) {
-}
-val_t NEW_TSlash_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TSlash();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TSlash(self, "parser_nodes::PNode::init for TSlash");
-  return self;
-}
-val_t NEW_TSlash_lexer___TSlash___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TSlash();
-  lexer___TSlash___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TSlash(self, "lexer::TSlash::init_tk for TSlash");
-  return self;
-}
-const classtable_elt_t VFT_TPercent[74] = {
-  {(bigint) 3463 /* 0: Identity */},
-  {(bigint) 3 /* 1: TPercent < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TPercent < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TPercent < Token: superclass typecheck marker */},
-  {(bigint) 3463 /* 4: TPercent < TPercent: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TPercent < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TPercent < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TPercent___parser_index},
-  {(bigint) 2 /* 71: TPercent < Token: superclass init_table position */},
-  {(bigint) lexer___TPercent___init_tk},
-  {(bigint) 3 /* 73: TPercent < TPercent: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TPercent::_parent */
-/* 2: Attribute TPercent::_symbol */
-/* 3: Attribute TPercent::_text */
-/* 4: Attribute TPercent::_filename */
-/* 5: Attribute TPercent::_line */
-/* 6: Attribute TPercent::_pos */
-val_t NEW_TPercent(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TPercent;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TPercent(val_t self, char *from) {
-}
-val_t NEW_TPercent_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TPercent();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TPercent(self, "parser_nodes::PNode::init for TPercent");
-  return self;
-}
-val_t NEW_TPercent_lexer___TPercent___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TPercent();
-  lexer___TPercent___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TPercent(self, "lexer::TPercent::init_tk for TPercent");
-  return self;
-}
-const classtable_elt_t VFT_TEq[74] = {
-  {(bigint) 3715 /* 0: Identity */},
-  {(bigint) 3 /* 1: TEq < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TEq < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TEq < Token: superclass typecheck marker */},
-  {(bigint) 3715 /* 4: TEq < TEq: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TEq < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TEq < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TEq___parser_index},
-  {(bigint) 2 /* 71: TEq < Token: superclass init_table position */},
-  {(bigint) lexer___TEq___init_tk},
-  {(bigint) 3 /* 73: TEq < TEq: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TEq::_parent */
-/* 2: Attribute TEq::_symbol */
-/* 3: Attribute TEq::_text */
-/* 4: Attribute TEq::_filename */
-/* 5: Attribute TEq::_line */
-/* 6: Attribute TEq::_pos */
-val_t NEW_TEq(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TEq;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TEq(val_t self, char *from) {
-}
-val_t NEW_TEq_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TEq();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TEq(self, "parser_nodes::PNode::init for TEq");
-  return self;
-}
-val_t NEW_TEq_lexer___TEq___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TEq();
-  lexer___TEq___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TEq(self, "lexer::TEq::init_tk for TEq");
-  return self;
-}
-const classtable_elt_t VFT_TNe[74] = {
-  {(bigint) 3479 /* 0: Identity */},
-  {(bigint) 3 /* 1: TNe < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TNe < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TNe < Token: superclass typecheck marker */},
-  {(bigint) 3479 /* 4: TNe < TNe: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TNe < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TNe < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TNe___parser_index},
-  {(bigint) 2 /* 71: TNe < Token: superclass init_table position */},
-  {(bigint) lexer___TNe___init_tk},
-  {(bigint) 3 /* 73: TNe < TNe: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TNe::_parent */
-/* 2: Attribute TNe::_symbol */
-/* 3: Attribute TNe::_text */
-/* 4: Attribute TNe::_filename */
-/* 5: Attribute TNe::_line */
-/* 6: Attribute TNe::_pos */
-val_t NEW_TNe(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TNe;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TNe(val_t self, char *from) {
-}
-val_t NEW_TNe_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TNe();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TNe(self, "parser_nodes::PNode::init for TNe");
-  return self;
-}
-val_t NEW_TNe_lexer___TNe___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TNe();
-  lexer___TNe___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TNe(self, "lexer::TNe::init_tk for TNe");
-  return self;
-}
-const classtable_elt_t VFT_TLt[74] = {
-  {(bigint) 3495 /* 0: Identity */},
-  {(bigint) 3 /* 1: TLt < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TLt < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TLt < Token: superclass typecheck marker */},
-  {(bigint) 3495 /* 4: TLt < TLt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TLt < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TLt < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TLt___parser_index},
-  {(bigint) 2 /* 71: TLt < Token: superclass init_table position */},
-  {(bigint) lexer___TLt___init_tk},
-  {(bigint) 3 /* 73: TLt < TLt: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TLt::_parent */
-/* 2: Attribute TLt::_symbol */
-/* 3: Attribute TLt::_text */
-/* 4: Attribute TLt::_filename */
-/* 5: Attribute TLt::_line */
-/* 6: Attribute TLt::_pos */
-val_t NEW_TLt(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TLt;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TLt(val_t self, char *from) {
-}
-val_t NEW_TLt_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TLt();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TLt(self, "parser_nodes::PNode::init for TLt");
-  return self;
-}
-val_t NEW_TLt_lexer___TLt___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TLt();
-  lexer___TLt___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TLt(self, "lexer::TLt::init_tk for TLt");
-  return self;
-}
-const classtable_elt_t VFT_TLe[74] = {
-  {(bigint) 3499 /* 0: Identity */},
-  {(bigint) 3 /* 1: TLe < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TLe < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TLe < Token: superclass typecheck marker */},
-  {(bigint) 3499 /* 4: TLe < TLe: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TLe < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TLe < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TLe___parser_index},
-  {(bigint) 2 /* 71: TLe < Token: superclass init_table position */},
-  {(bigint) lexer___TLe___init_tk},
-  {(bigint) 3 /* 73: TLe < TLe: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TLe::_parent */
-/* 2: Attribute TLe::_symbol */
-/* 3: Attribute TLe::_text */
-/* 4: Attribute TLe::_filename */
-/* 5: Attribute TLe::_line */
-/* 6: Attribute TLe::_pos */
-val_t NEW_TLe(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TLe;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TLe(val_t self, char *from) {
-}
-val_t NEW_TLe_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TLe();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TLe(self, "parser_nodes::PNode::init for TLe");
-  return self;
-}
-val_t NEW_TLe_lexer___TLe___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TLe();
-  lexer___TLe___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TLe(self, "lexer::TLe::init_tk for TLe");
-  return self;
-}
-const classtable_elt_t VFT_TGt[74] = {
-  {(bigint) 3703 /* 0: Identity */},
-  {(bigint) 3 /* 1: TGt < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TGt < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TGt < Token: superclass typecheck marker */},
-  {(bigint) 3703 /* 4: TGt < TGt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TGt < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TGt < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TGt___parser_index},
-  {(bigint) 2 /* 71: TGt < Token: superclass init_table position */},
-  {(bigint) lexer___TGt___init_tk},
-  {(bigint) 3 /* 73: TGt < TGt: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TGt::_parent */
-/* 2: Attribute TGt::_symbol */
-/* 3: Attribute TGt::_text */
-/* 4: Attribute TGt::_filename */
-/* 5: Attribute TGt::_line */
-/* 6: Attribute TGt::_pos */
-val_t NEW_TGt(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TGt;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TGt(val_t self, char *from) {
-}
-val_t NEW_TGt_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TGt();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TGt(self, "parser_nodes::PNode::init for TGt");
-  return self;
-}
-val_t NEW_TGt_lexer___TGt___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TGt();
-  lexer___TGt___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TGt(self, "lexer::TGt::init_tk for TGt");
-  return self;
-}
-const classtable_elt_t VFT_TGe[74] = {
-  {(bigint) 3707 /* 0: Identity */},
-  {(bigint) 3 /* 1: TGe < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TGe < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TGe < Token: superclass typecheck marker */},
-  {(bigint) 3707 /* 4: TGe < TGe: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TGe < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TGe < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TGe___parser_index},
-  {(bigint) 2 /* 71: TGe < Token: superclass init_table position */},
-  {(bigint) lexer___TGe___init_tk},
-  {(bigint) 3 /* 73: TGe < TGe: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TGe::_parent */
-/* 2: Attribute TGe::_symbol */
-/* 3: Attribute TGe::_text */
-/* 4: Attribute TGe::_filename */
-/* 5: Attribute TGe::_line */
-/* 6: Attribute TGe::_pos */
-val_t NEW_TGe(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TGe;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TGe(val_t self, char *from) {
-}
-val_t NEW_TGe_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TGe();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TGe(self, "parser_nodes::PNode::init for TGe");
-  return self;
-}
-val_t NEW_TGe_lexer___TGe___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TGe();
-  lexer___TGe___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TGe(self, "lexer::TGe::init_tk for TGe");
-  return self;
-}
-const classtable_elt_t VFT_TStarship[74] = {
-  {(bigint) 3439 /* 0: Identity */},
-  {(bigint) 3 /* 1: TStarship < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TStarship < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TStarship < Token: superclass typecheck marker */},
-  {(bigint) 3439 /* 4: TStarship < TStarship: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TStarship < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TStarship < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TStarship___parser_index},
-  {(bigint) 2 /* 71: TStarship < Token: superclass init_table position */},
-  {(bigint) lexer___TStarship___init_tk},
-  {(bigint) 3 /* 73: TStarship < TStarship: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TStarship::_parent */
-/* 2: Attribute TStarship::_symbol */
-/* 3: Attribute TStarship::_text */
-/* 4: Attribute TStarship::_filename */
-/* 5: Attribute TStarship::_line */
-/* 6: Attribute TStarship::_pos */
-val_t NEW_TStarship(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TStarship;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TStarship(val_t self, char *from) {
-}
-val_t NEW_TStarship_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TStarship();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TStarship(self, "parser_nodes::PNode::init for TStarship");
-  return self;
-}
-val_t NEW_TStarship_lexer___TStarship___init_tk(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TStarship();
-  lexer___TStarship___init_tk(self, p0, p1, p2, init_table);
-  CHECKNEW_TStarship(self, "lexer::TStarship::init_tk for TStarship");
-  return self;
-}
-const classtable_elt_t VFT_TClassid[74] = {
-  {(bigint) 3755 /* 0: Identity */},
-  {(bigint) 3 /* 1: TClassid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TClassid < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TClassid < Token: superclass typecheck marker */},
-  {(bigint) 3755 /* 4: TClassid < TClassid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TClassid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TClassid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TClassid___parser_index},
-  {(bigint) 2 /* 71: TClassid < Token: superclass init_table position */},
-  {(bigint) lexer___TClassid___init_tk},
-  {(bigint) 3 /* 73: TClassid < TClassid: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TClassid::_parent */
-/* 2: Attribute TClassid::_symbol */
-/* 3: Attribute TClassid::_text */
-/* 4: Attribute TClassid::_filename */
-/* 5: Attribute TClassid::_line */
-/* 6: Attribute TClassid::_pos */
-val_t NEW_TClassid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TClassid;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TClassid(val_t self, char *from) {
-}
-val_t NEW_TClassid_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TClassid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TClassid(self, "parser_nodes::PNode::init for TClassid");
-  return self;
-}
-val_t NEW_TClassid_lexer___TClassid___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TClassid();
-  lexer___TClassid___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TClassid(self, "lexer::TClassid::init_tk for TClassid");
-  return self;
-}
-const classtable_elt_t VFT_TId[74] = {
-  {(bigint) 3699 /* 0: Identity */},
-  {(bigint) 3 /* 1: TId < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TId < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TId < Token: superclass typecheck marker */},
-  {(bigint) 3699 /* 4: TId < TId: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TId < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TId < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TId___parser_index},
-  {(bigint) 2 /* 71: TId < Token: superclass init_table position */},
-  {(bigint) lexer___TId___init_tk},
-  {(bigint) 3 /* 73: TId < TId: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TId::_parent */
-/* 2: Attribute TId::_symbol */
-/* 3: Attribute TId::_text */
-/* 4: Attribute TId::_filename */
-/* 5: Attribute TId::_line */
-/* 6: Attribute TId::_pos */
-val_t NEW_TId(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TId;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TId(val_t self, char *from) {
-}
-val_t NEW_TId_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TId();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TId(self, "parser_nodes::PNode::init for TId");
-  return self;
-}
-val_t NEW_TId_lexer___TId___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TId();
-  lexer___TId___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TId(self, "lexer::TId::init_tk for TId");
-  return self;
-}
-const classtable_elt_t VFT_TAttrid[74] = {
-  {(bigint) 3767 /* 0: Identity */},
-  {(bigint) 3 /* 1: TAttrid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TAttrid < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TAttrid < Token: superclass typecheck marker */},
-  {(bigint) 3767 /* 4: TAttrid < TAttrid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TAttrid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TAttrid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TAttrid___parser_index},
-  {(bigint) 2 /* 71: TAttrid < Token: superclass init_table position */},
-  {(bigint) lexer___TAttrid___init_tk},
-  {(bigint) 3 /* 73: TAttrid < TAttrid: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TAttrid::_parent */
-/* 2: Attribute TAttrid::_symbol */
-/* 3: Attribute TAttrid::_text */
-/* 4: Attribute TAttrid::_filename */
-/* 5: Attribute TAttrid::_line */
-/* 6: Attribute TAttrid::_pos */
-val_t NEW_TAttrid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TAttrid;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TAttrid(val_t self, char *from) {
-}
-val_t NEW_TAttrid_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TAttrid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TAttrid(self, "parser_nodes::PNode::init for TAttrid");
-  return self;
-}
-val_t NEW_TAttrid_lexer___TAttrid___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TAttrid();
-  lexer___TAttrid___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TAttrid(self, "lexer::TAttrid::init_tk for TAttrid");
-  return self;
-}
-const classtable_elt_t VFT_TNumber[74] = {
-  {(bigint) 3475 /* 0: Identity */},
-  {(bigint) 3 /* 1: TNumber < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TNumber < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TNumber < Token: superclass typecheck marker */},
-  {(bigint) 3475 /* 4: TNumber < TNumber: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TNumber < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TNumber < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TNumber___parser_index},
-  {(bigint) 2 /* 71: TNumber < Token: superclass init_table position */},
-  {(bigint) lexer___TNumber___init_tk},
-  {(bigint) 3 /* 73: TNumber < TNumber: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TNumber::_parent */
-/* 2: Attribute TNumber::_symbol */
-/* 3: Attribute TNumber::_text */
-/* 4: Attribute TNumber::_filename */
-/* 5: Attribute TNumber::_line */
-/* 6: Attribute TNumber::_pos */
-val_t NEW_TNumber(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TNumber;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TNumber(val_t self, char *from) {
-}
-val_t NEW_TNumber_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TNumber();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TNumber(self, "parser_nodes::PNode::init for TNumber");
-  return self;
-}
-val_t NEW_TNumber_lexer___TNumber___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TNumber();
-  lexer___TNumber___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TNumber(self, "lexer::TNumber::init_tk for TNumber");
-  return self;
-}
-const classtable_elt_t VFT_TFloat[74] = {
-  {(bigint) 3711 /* 0: Identity */},
-  {(bigint) 3 /* 1: TFloat < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TFloat < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TFloat < Token: superclass typecheck marker */},
-  {(bigint) 3711 /* 4: TFloat < TFloat: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TFloat < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TFloat < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TFloat___parser_index},
-  {(bigint) 2 /* 71: TFloat < Token: superclass init_table position */},
-  {(bigint) lexer___TFloat___init_tk},
-  {(bigint) 3 /* 73: TFloat < TFloat: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TFloat::_parent */
-/* 2: Attribute TFloat::_symbol */
-/* 3: Attribute TFloat::_text */
-/* 4: Attribute TFloat::_filename */
-/* 5: Attribute TFloat::_line */
-/* 6: Attribute TFloat::_pos */
-val_t NEW_TFloat(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TFloat;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TFloat(val_t self, char *from) {
-}
-val_t NEW_TFloat_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TFloat();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TFloat(self, "parser_nodes::PNode::init for TFloat");
-  return self;
-}
-val_t NEW_TFloat_lexer___TFloat___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TFloat();
-  lexer___TFloat___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TFloat(self, "lexer::TFloat::init_tk for TFloat");
-  return self;
-}
-const classtable_elt_t VFT_TChar[74] = {
-  {(bigint) 3759 /* 0: Identity */},
-  {(bigint) 3 /* 1: TChar < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TChar < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TChar < Token: superclass typecheck marker */},
-  {(bigint) 3759 /* 4: TChar < TChar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TChar < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TChar < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TChar___parser_index},
-  {(bigint) 2 /* 71: TChar < Token: superclass init_table position */},
-  {(bigint) lexer___TChar___init_tk},
-  {(bigint) 3 /* 73: TChar < TChar: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TChar::_parent */
-/* 2: Attribute TChar::_symbol */
-/* 3: Attribute TChar::_text */
-/* 4: Attribute TChar::_filename */
-/* 5: Attribute TChar::_line */
-/* 6: Attribute TChar::_pos */
-val_t NEW_TChar(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TChar;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TChar(val_t self, char *from) {
-}
-val_t NEW_TChar_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TChar();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TChar(self, "parser_nodes::PNode::init for TChar");
-  return self;
-}
-val_t NEW_TChar_lexer___TChar___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TChar();
-  lexer___TChar___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TChar(self, "lexer::TChar::init_tk for TChar");
-  return self;
-}
-const classtable_elt_t VFT_TString[74] = {
-  {(bigint) 3431 /* 0: Identity */},
-  {(bigint) 3 /* 1: TString < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TString < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TString < Token: superclass typecheck marker */},
-  {(bigint) 3431 /* 4: TString < TString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TString < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TString < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TString___parser_index},
-  {(bigint) 2 /* 71: TString < Token: superclass init_table position */},
-  {(bigint) lexer___TString___init_tk},
-  {(bigint) 3 /* 73: TString < TString: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TString::_parent */
-/* 2: Attribute TString::_symbol */
-/* 3: Attribute TString::_text */
-/* 4: Attribute TString::_filename */
-/* 5: Attribute TString::_line */
-/* 6: Attribute TString::_pos */
-val_t NEW_TString(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TString;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TString(val_t self, char *from) {
-}
-val_t NEW_TString_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TString();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TString(self, "parser_nodes::PNode::init for TString");
-  return self;
-}
-val_t NEW_TString_lexer___TString___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TString();
-  lexer___TString___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TString(self, "lexer::TString::init_tk for TString");
-  return self;
-}
-const classtable_elt_t VFT_TStartString[74] = {
-  {(bigint) 3435 /* 0: Identity */},
-  {(bigint) 3 /* 1: TStartString < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TStartString < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TStartString < Token: superclass typecheck marker */},
-  {(bigint) 3435 /* 4: TStartString < TStartString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TStartString < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TStartString < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TStartString___parser_index},
-  {(bigint) 2 /* 71: TStartString < Token: superclass init_table position */},
-  {(bigint) lexer___TStartString___init_tk},
-  {(bigint) 3 /* 73: TStartString < TStartString: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TStartString::_parent */
-/* 2: Attribute TStartString::_symbol */
-/* 3: Attribute TStartString::_text */
-/* 4: Attribute TStartString::_filename */
-/* 5: Attribute TStartString::_line */
-/* 6: Attribute TStartString::_pos */
-val_t NEW_TStartString(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TStartString;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TStartString(val_t self, char *from) {
-}
-val_t NEW_TStartString_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TStartString();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TStartString(self, "parser_nodes::PNode::init for TStartString");
-  return self;
-}
-val_t NEW_TStartString_lexer___TStartString___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TStartString();
-  lexer___TStartString___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TStartString(self, "lexer::TStartString::init_tk for TStartString");
-  return self;
-}
-const classtable_elt_t VFT_TMidString[74] = {
-  {(bigint) 3491 /* 0: Identity */},
-  {(bigint) 3 /* 1: TMidString < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TMidString < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TMidString < Token: superclass typecheck marker */},
-  {(bigint) 3491 /* 4: TMidString < TMidString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TMidString < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TMidString < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TMidString___parser_index},
-  {(bigint) 2 /* 71: TMidString < Token: superclass init_table position */},
-  {(bigint) lexer___TMidString___init_tk},
-  {(bigint) 3 /* 73: TMidString < TMidString: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TMidString::_parent */
-/* 2: Attribute TMidString::_symbol */
-/* 3: Attribute TMidString::_text */
-/* 4: Attribute TMidString::_filename */
-/* 5: Attribute TMidString::_line */
-/* 6: Attribute TMidString::_pos */
-val_t NEW_TMidString(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TMidString;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TMidString(val_t self, char *from) {
-}
-val_t NEW_TMidString_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TMidString();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TMidString(self, "parser_nodes::PNode::init for TMidString");
-  return self;
-}
-val_t NEW_TMidString_lexer___TMidString___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TMidString();
-  lexer___TMidString___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TMidString(self, "lexer::TMidString::init_tk for TMidString");
-  return self;
-}
-const classtable_elt_t VFT_TEndString[74] = {
-  {(bigint) 3723 /* 0: Identity */},
-  {(bigint) 3 /* 1: TEndString < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: TEndString < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: TEndString < Token: superclass typecheck marker */},
-  {(bigint) 3723 /* 4: TEndString < TEndString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TEndString < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: TEndString < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___TEndString___parser_index},
-  {(bigint) 2 /* 71: TEndString < Token: superclass init_table position */},
-  {(bigint) lexer___TEndString___init_tk},
-  {(bigint) 3 /* 73: TEndString < TEndString: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TEndString::_parent */
-/* 2: Attribute TEndString::_symbol */
-/* 3: Attribute TEndString::_text */
-/* 4: Attribute TEndString::_filename */
-/* 5: Attribute TEndString::_line */
-/* 6: Attribute TEndString::_pos */
-val_t NEW_TEndString(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_TEndString;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TEndString(val_t self, char *from) {
-}
-val_t NEW_TEndString_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TEndString();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_TEndString(self, "parser_nodes::PNode::init for TEndString");
-  return self;
-}
-val_t NEW_TEndString_lexer___TEndString___init_tk(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TEndString();
-  lexer___TEndString___init_tk(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_TEndString(self, "lexer::TEndString::init_tk for TEndString");
-  return self;
-}
-const classtable_elt_t VFT_EOF[75] = {
-  {(bigint) 3967 /* 0: Identity */},
-  {(bigint) 3 /* 1: EOF < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: EOF < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: EOF < Token: superclass typecheck marker */},
-  {(bigint) 3967 /* 4: EOF < EOF: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: EOF < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: EOF < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___EOF___parser_index},
-  {(bigint) 2 /* 71: EOF < Token: superclass init_table position */},
-  {(bigint) lexer___EOF___init},
-  {(bigint) 3 /* 73: EOF < EOF: superclass init_table position */},
-  {(bigint) parser_nodes___EOF___noinit},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute EOF::_parent */
-/* 2: Attribute EOF::_symbol */
-/* 3: Attribute EOF::_text */
-/* 4: Attribute EOF::_filename */
-/* 5: Attribute EOF::_line */
-/* 6: Attribute EOF::_pos */
-val_t NEW_EOF(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_EOF;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_EOF(val_t self, char *from) {
-}
-val_t NEW_EOF_parser_nodes___EOF___noinit() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_EOF();
-  parser_nodes___EOF___noinit(self, init_table);
-  CHECKNEW_EOF(self, "parser_nodes::EOF::noinit for EOF");
-  return self;
-}
-val_t NEW_EOF_lexer___EOF___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_EOF();
-  lexer___EOF___init(self, p0, p1, p2, init_table);
-  CHECKNEW_EOF(self, "lexer::EOF::init for EOF");
-  return self;
-}
-const classtable_elt_t VFT_PError[80] = {
-  {(bigint) 4031 /* 0: Identity */},
-  {(bigint) 3 /* 1: PError < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PError < PNode: superclass typecheck marker */},
-  {(bigint) 207 /* 3: PError < Token: superclass typecheck marker */},
-  {(bigint) 3967 /* 4: PError < EOF: superclass typecheck marker */},
-  {(bigint) 4031 /* 5: PError < PError: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) lexer___Token___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PError < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Token___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___Token___visit_all},
-  {(bigint) parser_prod___Token___visit_all_reverse},
-  {(bigint) parser_prod___Token___locate},
-  {(bigint) parser_prod___Token___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PError < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) syntax_base___Token___to_symbol},
-  {(bigint) lexer___Token___text},
-  {(bigint) lexer___Token___text__eq},
-  {(bigint) lexer___Token___filename},
-  {(bigint) lexer___Token___line},
-  {(bigint) lexer___Token___pos},
-  {(bigint) lexer___EOF___parser_index},
-  {(bigint) 2 /* 71: PError < Token: superclass init_table position */},
-  {(bigint) lexer___EOF___init},
-  {(bigint) 3 /* 73: PError < EOF: superclass init_table position */},
-  {(bigint) parser_nodes___EOF___noinit},
-  {(bigint) lexer___PError___message},
-  {(bigint) lexer___PError___message__eq},
-  {(bigint) lexer___PError___init_error},
-  {(bigint) 4 /* 78: PError < PError: superclass init_table position */},
-  {(bigint) parser_nodes___PError___noinit},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PError::_parent */
-/* 2: Attribute PError::_symbol */
-/* 3: Attribute PError::_text */
-/* 4: Attribute PError::_filename */
-/* 5: Attribute PError::_line */
-/* 6: Attribute PError::_pos */
-/* 7: Attribute PError::_message */
-val_t NEW_PError(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_PError;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PError(val_t self, char *from) {
-}
-val_t NEW_PError_parser_nodes___PError___noinit() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_PError();
-  parser_nodes___PError___noinit(self, init_table);
-  CHECKNEW_PError(self, "parser_nodes::PError::noinit for PError");
-  return self;
-}
-val_t NEW_PError_lexer___PError___init_error(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_PError();
-  lexer___PError___init_error(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_PError(self, "lexer::PError::init_error for PError");
-  return self;
-}
-const classtable_elt_t VFT_PModule[71] = {
-  {(bigint) 3823 /* 0: Identity */},
-  {(bigint) 3 /* 1: PModule < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PModule < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PModule < Prod: superclass typecheck marker */},
-  {(bigint) 3823 /* 4: PModule < PModule: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PModule < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PModule < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PModule < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: PModule < PModule: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PModule::_parent */
-/* 2: Attribute PModule::_first_token */
-/* 3: Attribute PModule::_last_token */
-val_t NEW_PModule(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PModule;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PModule(val_t self, char *from) {
-}
-val_t NEW_PModule_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PModule();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PModule(self, "parser_nodes::PNode::init for PModule");
-  return self;
-}
-const classtable_elt_t VFT_PPackagedecl[71] = {
-  {(bigint) 3819 /* 0: Identity */},
-  {(bigint) 3 /* 1: PPackagedecl < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PPackagedecl < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PPackagedecl < Prod: superclass typecheck marker */},
-  {(bigint) 3819 /* 4: PPackagedecl < PPackagedecl: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PPackagedecl < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PPackagedecl < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PPackagedecl < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: PPackagedecl < PPackagedecl: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PPackagedecl::_parent */
-/* 2: Attribute PPackagedecl::_first_token */
-/* 3: Attribute PPackagedecl::_last_token */
-val_t NEW_PPackagedecl(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PPackagedecl;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PPackagedecl(val_t self, char *from) {
-}
-val_t NEW_PPackagedecl_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PPackagedecl();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PPackagedecl(self, "parser_nodes::PNode::init for PPackagedecl");
-  return self;
-}
-const classtable_elt_t VFT_PImport[73] = {
-  {(bigint) 3831 /* 0: Identity */},
-  {(bigint) 3 /* 1: PImport < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PImport < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PImport < Prod: superclass typecheck marker */},
-  {(bigint) 3831 /* 4: PImport < PImport: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PImport < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PImport < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PImport < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PImport___module_name},
-  {(bigint) mmbuilder___PImport___visibility_level},
-  {(bigint) 3 /* 72: PImport < PImport: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PImport::_parent */
-/* 2: Attribute PImport::_first_token */
-/* 3: Attribute PImport::_last_token */
-val_t NEW_PImport(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PImport;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PImport(val_t self, char *from) {
-}
-val_t NEW_PImport_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PImport();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PImport(self, "parser_nodes::PNode::init for PImport");
-  return self;
-}
-const classtable_elt_t VFT_PVisibility[72] = {
-  {(bigint) 3791 /* 0: Identity */},
-  {(bigint) 3 /* 1: PVisibility < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PVisibility < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 3791 /* 4: PVisibility < PVisibility: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PVisibility < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PVisibility < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PVisibility < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PVisibility___level},
-  {(bigint) 3 /* 71: PVisibility < PVisibility: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PVisibility::_parent */
-/* 2: Attribute PVisibility::_first_token */
-/* 3: Attribute PVisibility::_last_token */
-val_t NEW_PVisibility(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PVisibility;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PVisibility(val_t self, char *from) {
-}
-val_t NEW_PVisibility_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PVisibility();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PVisibility(self, "parser_nodes::PNode::init for PVisibility");
-  return self;
-}
-const classtable_elt_t VFT_PClassdef[78] = {
-  {(bigint) 3859 /* 0: Identity */},
-  {(bigint) 3 /* 1: PClassdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PClassdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3859 /* 4: PClassdef < PClassdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PClassdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PClassdef___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) mmbuilder___PClassdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PClassdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PClassdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PClassdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PClassdef___name},
-  {(bigint) mmbuilder___PClassdef___arity},
-  {(bigint) mmbuilder___PClassdef___visibility_level},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___PClassdef___local_class},
-  {(bigint) 3 /* 76: PClassdef < PClassdef: superclass init_table position */},
-  {(bigint) typing___PNode___accept_typing},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PClassdef::_parent */
-/* 2: Attribute PClassdef::_first_token */
-/* 3: Attribute PClassdef::_last_token */
-/* 4: Attribute PClassdef::_local_class */
-val_t NEW_PClassdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_PClassdef;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PClassdef(val_t self, char *from) {
-}
-val_t NEW_PClassdef_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PClassdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PClassdef(self, "parser_nodes::PNode::init for PClassdef");
-  return self;
-}
-const classtable_elt_t VFT_PClasskind[74] = {
-  {(bigint) 3855 /* 0: Identity */},
-  {(bigint) 3 /* 1: PClasskind < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PClasskind < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3855 /* 4: PClasskind < PClasskind: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PClasskind < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PClasskind < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PClasskind < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PClasskind___is_interface},
-  {(bigint) mmbuilder___PClasskind___is_universal},
-  {(bigint) mmbuilder___PClasskind___is_abstract},
-  {(bigint) 3 /* 73: PClasskind < PClasskind: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PClasskind::_parent */
-/* 2: Attribute PClasskind::_first_token */
-/* 3: Attribute PClasskind::_last_token */
-val_t NEW_PClasskind(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PClasskind;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PClasskind(val_t self, char *from) {
-}
-val_t NEW_PClasskind_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PClasskind();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PClasskind(self, "parser_nodes::PNode::init for PClasskind");
-  return self;
-}
-const classtable_elt_t VFT_PFormaldef[71] = {
-  {(bigint) 3835 /* 0: Identity */},
-  {(bigint) 3 /* 1: PFormaldef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PFormaldef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PFormaldef < Prod: superclass typecheck marker */},
-  {(bigint) 3835 /* 4: PFormaldef < PFormaldef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PFormaldef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PFormaldef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PFormaldef < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: PFormaldef < PFormaldef: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PFormaldef::_parent */
-/* 2: Attribute PFormaldef::_first_token */
-/* 3: Attribute PFormaldef::_last_token */
-val_t NEW_PFormaldef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PFormaldef;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PFormaldef(val_t self, char *from) {
-}
-val_t NEW_PFormaldef_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PFormaldef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PFormaldef(self, "parser_nodes::PNode::init for PFormaldef");
-  return self;
-}
-const classtable_elt_t VFT_PSuperclass[71] = {
-  {(bigint) 3799 /* 0: Identity */},
-  {(bigint) 3 /* 1: PSuperclass < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PSuperclass < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PSuperclass < Prod: superclass typecheck marker */},
-  {(bigint) 3799 /* 4: PSuperclass < PSuperclass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PSuperclass < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PSuperclass < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PSuperclass < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: PSuperclass < PSuperclass: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PSuperclass::_parent */
-/* 2: Attribute PSuperclass::_first_token */
-/* 3: Attribute PSuperclass::_last_token */
-val_t NEW_PSuperclass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PSuperclass;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PSuperclass(val_t self, char *from) {
-}
-val_t NEW_PSuperclass_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PSuperclass();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PSuperclass(self, "parser_nodes::PNode::init for PSuperclass");
-  return self;
-}
-const classtable_elt_t VFT_PPropdef[77] = {
-  {(bigint) 3811 /* 0: Identity */},
-  {(bigint) 3 /* 1: PPropdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PPropdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3811 /* 4: PPropdef < PPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PPropdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PPropdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PPropdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PPropdef___process_and_check},
-  {(bigint) mmbuilder___PPropdef___do_and_check_intro},
-  {(bigint) mmbuilder___PPropdef___inherit_signature},
-  {(bigint) mmbuilder___PPropdef___do_and_check_redef},
-  {(bigint) 3 /* 74: PPropdef < PPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___PPropdef___n_doc},
-  {(bigint) parser_nodes___PPropdef___n_doc__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PPropdef::_parent */
-/* 2: Attribute PPropdef::_first_token */
-/* 3: Attribute PPropdef::_last_token */
-/* 4: Attribute PPropdef::_n_doc */
-val_t NEW_PPropdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_PPropdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PPropdef____n_doc(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PPropdef(val_t self, char *from) {
-}
-val_t NEW_PPropdef_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PPropdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PPropdef(self, "parser_nodes::PNode::init for PPropdef");
-  return self;
-}
-const classtable_elt_t VFT_PAble[73] = {
-  {(bigint) 3867 /* 0: Identity */},
-  {(bigint) 3 /* 1: PAble < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PAble < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PAble < Prod: superclass typecheck marker */},
-  {(bigint) 3867 /* 4: PAble < PAble: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PAble < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PAble < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PAble < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: PAble < PAble: superclass init_table position */},
-  {(bigint) parser_nodes___PAble___n_kwredef},
-  {(bigint) parser_nodes___PAble___n_kwredef__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PAble::_parent */
-/* 2: Attribute PAble::_first_token */
-/* 3: Attribute PAble::_last_token */
-/* 4: Attribute PAble::_n_kwredef */
-val_t NEW_PAble(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_PAble;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PAble____n_kwredef(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PAble(val_t self, char *from) {
-}
-val_t NEW_PAble_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PAble();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PAble(self, "parser_nodes::PNode::init for PAble");
-  return self;
-}
-const classtable_elt_t VFT_PMethid[73] = {
-  {(bigint) 3827 /* 0: Identity */},
-  {(bigint) 3 /* 1: PMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: PMethid < PMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: PMethid < PMethid: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PMethid::_parent */
-/* 2: Attribute PMethid::_first_token */
-/* 3: Attribute PMethid::_last_token */
-/* 4: Attribute PMethid::_name */
-val_t NEW_PMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_PMethid;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PMethid(val_t self, char *from) {
-}
-val_t NEW_PMethid_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PMethid(self, "parser_nodes::PNode::init for PMethid");
-  return self;
-}
-const classtable_elt_t VFT_PSignature[73] = {
-  {(bigint) 3803 /* 0: Identity */},
-  {(bigint) 3 /* 1: PSignature < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PSignature < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PSignature < Prod: superclass typecheck marker */},
-  {(bigint) 3803 /* 4: PSignature < PSignature: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PSignature < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PSignature < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PSignature < Prod: superclass init_table position */},
-  {(bigint) compiling_methods___PSignature___compile_parameters},
-  {(bigint) mmbuilder___PSignature___check_visibility},
-  {(bigint) 3 /* 72: PSignature < PSignature: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PSignature::_parent */
-/* 2: Attribute PSignature::_first_token */
-/* 3: Attribute PSignature::_last_token */
-val_t NEW_PSignature(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PSignature;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PSignature(val_t self, char *from) {
-}
-val_t NEW_PSignature_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PSignature();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PSignature(self, "parser_nodes::PNode::init for PSignature");
-  return self;
-}
-const classtable_elt_t VFT_PParam[81] = {
-  {(bigint) 3815 /* 0: Identity */},
-  {(bigint) 3 /* 1: PParam < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PParam < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PParam < Prod: superclass typecheck marker */},
-  {(bigint) 3815 /* 4: PParam < PParam: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PParam < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PParam___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PParam < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PParam___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PParam < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PParam___stype},
-  {(bigint) mmbuilder___PParam___stype__eq},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) mmbuilder___PParam___is_vararg},
-  {(bigint) mmbuilder___PParam___position},
-  {(bigint) mmbuilder___PParam___variable},
-  {(bigint) 3 /* 76: PParam < PParam: superclass init_table position */},
-  {(bigint) parser_nodes___PParam___n_id},
-  {(bigint) parser_nodes___PParam___n_id__eq},
-  {(bigint) parser_nodes___PParam___n_type},
-  {(bigint) parser_nodes___PParam___n_type__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PParam::_parent */
-/* 2: Attribute PParam::_first_token */
-/* 3: Attribute PParam::_last_token */
-/* 4: Attribute PParam::_position */
-/* 5: Attribute PParam::_variable */
-/* 6: Attribute PParam::_stype */
-/* 7: Attribute PParam::_n_id */
-/* 8: Attribute PParam::_n_type */
-val_t NEW_PParam(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_PParam;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PParam____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___PParam____n_type(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PParam(val_t self, char *from) {
-}
-val_t NEW_PParam_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PParam();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PParam(self, "parser_nodes::PNode::init for PParam");
-  return self;
-}
-const classtable_elt_t VFT_PClosureDecl[73] = {
-  {(bigint) 3851 /* 0: Identity */},
-  {(bigint) 3 /* 1: PClosureDecl < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PClosureDecl < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PClosureDecl < Prod: superclass typecheck marker */},
-  {(bigint) 3851 /* 4: PClosureDecl < PClosureDecl: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PClosureDecl < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PClosureDecl < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PClosureDecl < Prod: superclass init_table position */},
-  {(bigint) compiling_methods___PClosureDecl___do_compile_inside},
-  {(bigint) syntax_base___PClosureDecl___variable},
-  {(bigint) 3 /* 72: PClosureDecl < PClosureDecl: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PClosureDecl::_parent */
-/* 2: Attribute PClosureDecl::_first_token */
-/* 3: Attribute PClosureDecl::_last_token */
-val_t NEW_PClosureDecl(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PClosureDecl;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PClosureDecl(val_t self, char *from) {
-}
-val_t NEW_PClosureDecl_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PClosureDecl();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PClosureDecl(self, "parser_nodes::PNode::init for PClosureDecl");
-  return self;
-}
-const classtable_elt_t VFT_PType[77] = {
-  {(bigint) 3795 /* 0: Identity */},
-  {(bigint) 3 /* 1: PType < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PType < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PType < Prod: superclass typecheck marker */},
-  {(bigint) 3795 /* 4: PType < PType: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PType < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PType < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PType___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PType < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PType___check_visibility},
-  {(bigint) syntax_base___PType___get_local_class},
-  {(bigint) syntax_base___PType___get_stype},
-  {(bigint) syntax_base___PType___get_unchecked_stype},
-  {(bigint) syntax_base___PType___check_conform},
-  {(bigint) 3 /* 75: PType < PType: superclass init_table position */},
-  {(bigint) typing___PType___stype},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PType::_parent */
-/* 2: Attribute PType::_first_token */
-/* 3: Attribute PType::_last_token */
-/* 4: Attribute PType::_stype */
-val_t NEW_PType(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_PType;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PType(val_t self, char *from) {
-}
-val_t NEW_PType_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PType();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PType(self, "parser_nodes::PNode::init for PType");
-  return self;
-}
-const classtable_elt_t VFT_PExpr[86] = {
-  {(bigint) 3839 /* 0: Identity */},
-  {(bigint) 3 /* 1: PExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: PExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: PExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PExpr::_parent */
-/* 2: Attribute PExpr::_first_token */
-/* 3: Attribute PExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute PExpr::_is_typed */
-/* 6: Attribute PExpr::_stype */
-/* 7: Attribute PExpr::_if_true_variable_ctx */
-/* 8: Attribute PExpr::_if_false_variable_ctx */
-val_t NEW_PExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_PExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PExpr(val_t self, char *from) {
-}
-val_t NEW_PExpr_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PExpr(self, "parser_nodes::PNode::init for PExpr");
-  return self;
-}
-const classtable_elt_t VFT_PAssignOp[72] = {
-  {(bigint) 3863 /* 0: Identity */},
-  {(bigint) 3 /* 1: PAssignOp < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PAssignOp < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PAssignOp < Prod: superclass typecheck marker */},
-  {(bigint) 3863 /* 4: PAssignOp < PAssignOp: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PAssignOp < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PAssignOp < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PAssignOp < Prod: superclass init_table position */},
-  {(bigint) typing___PAssignOp___method_name},
-  {(bigint) 3 /* 71: PAssignOp < PAssignOp: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PAssignOp::_parent */
-/* 2: Attribute PAssignOp::_first_token */
-/* 3: Attribute PAssignOp::_last_token */
-val_t NEW_PAssignOp(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PAssignOp;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PAssignOp(val_t self, char *from) {
-}
-val_t NEW_PAssignOp_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PAssignOp();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PAssignOp(self, "parser_nodes::PNode::init for PAssignOp");
-  return self;
-}
-const classtable_elt_t VFT_PClosureDef[80] = {
-  {(bigint) 3847 /* 0: Identity */},
-  {(bigint) 3 /* 1: PClosureDef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PClosureDef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PClosureDef < Prod: superclass typecheck marker */},
-  {(bigint) 3847 /* 4: PClosureDef < PClosureDef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PClosureDef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PClosureDef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PClosureDef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PClosureDef < Prod: superclass init_table position */},
-  {(bigint) compiling_methods___PClosureDef___compile_closure},
-  {(bigint) compiling_methods___PClosureDef___do_compile_inside},
-  {(bigint) typing___PClosureDef___escapable},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PClosureDef___accept_typing2},
-  {(bigint) syntax_base___PClosureDef___closure},
-  {(bigint) syntax_base___PClosureDef___closure__eq},
-  {(bigint) syntax_base___PClosureDef___variables},
-  {(bigint) syntax_base___PClosureDef___variables__eq},
-  {(bigint) 3 /* 79: PClosureDef < PClosureDef: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PClosureDef::_parent */
-/* 2: Attribute PClosureDef::_first_token */
-/* 3: Attribute PClosureDef::_last_token */
-/* 4: Attribute PClosureDef::_escapable */
-/* 5: Attribute PClosureDef::_accept_typing2 */
-/* 6: Attribute PClosureDef::_closure */
-/* 7: Attribute PClosureDef::_variables */
-val_t NEW_PClosureDef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_PClosureDef;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PClosureDef(val_t self, char *from) {
-}
-val_t NEW_PClosureDef_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PClosureDef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PClosureDef(self, "parser_nodes::PNode::init for PClosureDef");
-  return self;
-}
-const classtable_elt_t VFT_PQualified[71] = {
-  {(bigint) 3807 /* 0: Identity */},
-  {(bigint) 3 /* 1: PQualified < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PQualified < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PQualified < Prod: superclass typecheck marker */},
-  {(bigint) 3807 /* 4: PQualified < PQualified: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PQualified < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PQualified < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PQualified < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: PQualified < PQualified: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PQualified::_parent */
-/* 2: Attribute PQualified::_first_token */
-/* 3: Attribute PQualified::_last_token */
-val_t NEW_PQualified(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PQualified;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PQualified(val_t self, char *from) {
-}
-val_t NEW_PQualified_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PQualified();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PQualified(self, "parser_nodes::PNode::init for PQualified");
-  return self;
-}
-const classtable_elt_t VFT_PDoc[71] = {
-  {(bigint) 3843 /* 0: Identity */},
-  {(bigint) 3 /* 1: PDoc < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: PDoc < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: PDoc < Prod: superclass typecheck marker */},
-  {(bigint) 3843 /* 4: PDoc < PDoc: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PDoc < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: PDoc < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: PDoc < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: PDoc < PDoc: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute PDoc::_parent */
-/* 2: Attribute PDoc::_first_token */
-/* 3: Attribute PDoc::_last_token */
-val_t NEW_PDoc(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PDoc;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PDoc(val_t self, char *from) {
-}
-val_t NEW_PDoc_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PDoc();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_PDoc(self, "parser_nodes::PNode::init for PDoc");
-  return self;
-}
-const classtable_elt_t VFT_AModule[81] = {
-  {(bigint) 4215 /* 0: Identity */},
-  {(bigint) 3 /* 1: AModule < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AModule < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AModule < Prod: superclass typecheck marker */},
-  {(bigint) 3823 /* 4: AModule < PModule: superclass typecheck marker */},
-  {(bigint) 4215 /* 5: AModule < AModule: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AModule < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AModule___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AModule___visit_all},
-  {(bigint) parser_prod___AModule___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AModule < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AModule < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: AModule < PModule: superclass init_table position */},
-  {(bigint) mmbuilder___AModule___import_super_modules},
-  {(bigint) parser_prod___AModule___empty_init},
-  {(bigint) parser_prod___AModule___init_amodule},
-  {(bigint) 4 /* 74: AModule < AModule: superclass init_table position */},
-  {(bigint) parser_nodes___AModule___n_packagedecl},
-  {(bigint) parser_prod___AModule___n_packagedecl__eq},
-  {(bigint) parser_nodes___AModule___n_imports},
-  {(bigint) parser_nodes___AModule___n_imports__eq},
-  {(bigint) parser_nodes___AModule___n_classdefs},
-  {(bigint) parser_nodes___AModule___n_classdefs__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AModule::_parent */
-/* 2: Attribute AModule::_first_token */
-/* 3: Attribute AModule::_last_token */
-/* 4: Attribute AModule::_n_packagedecl */
-/* 5: Attribute AModule::_n_imports */
-/* 6: Attribute AModule::_n_classdefs */
-val_t NEW_AModule(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_AModule;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AModule____n_packagedecl(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AModule____n_imports(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AModule____n_classdefs(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AModule(val_t self, char *from) {
-}
-val_t NEW_AModule_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AModule();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AModule(self, "parser_nodes::PNode::init for AModule");
-  return self;
-}
-val_t NEW_AModule_parser_prod___AModule___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AModule();
-  parser_prod___AModule___empty_init(self, init_table);
-  CHECKNEW_AModule(self, "parser_prod::AModule::empty_init for AModule");
-  return self;
-}
-val_t NEW_AModule_parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AModule();
-  parser_prod___AModule___init_amodule(self, p0, p1, p2, init_table);
-  CHECKNEW_AModule(self, "parser_prod::AModule::init_amodule for AModule");
-  return self;
-}
-const classtable_elt_t VFT_APackagedecl[80] = {
-  {(bigint) 4199 /* 0: Identity */},
-  {(bigint) 3 /* 1: APackagedecl < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: APackagedecl < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: APackagedecl < Prod: superclass typecheck marker */},
-  {(bigint) 3819 /* 4: APackagedecl < PPackagedecl: superclass typecheck marker */},
-  {(bigint) 4199 /* 5: APackagedecl < APackagedecl: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: APackagedecl < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___APackagedecl___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___APackagedecl___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___APackagedecl___visit_all},
-  {(bigint) parser_prod___APackagedecl___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: APackagedecl < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: APackagedecl < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: APackagedecl < PPackagedecl: superclass init_table position */},
-  {(bigint) parser_prod___APackagedecl___empty_init},
-  {(bigint) parser_prod___APackagedecl___init_apackagedecl},
-  {(bigint) 4 /* 73: APackagedecl < APackagedecl: superclass init_table position */},
-  {(bigint) parser_nodes___APackagedecl___n_doc},
-  {(bigint) parser_prod___APackagedecl___n_doc__eq},
-  {(bigint) parser_nodes___APackagedecl___n_kwpackage},
-  {(bigint) parser_prod___APackagedecl___n_kwpackage__eq},
-  {(bigint) parser_nodes___APackagedecl___n_id},
-  {(bigint) parser_prod___APackagedecl___n_id__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute APackagedecl::_parent */
-/* 2: Attribute APackagedecl::_first_token */
-/* 3: Attribute APackagedecl::_last_token */
-/* 4: Attribute APackagedecl::_n_doc */
-/* 5: Attribute APackagedecl::_n_kwpackage */
-/* 6: Attribute APackagedecl::_n_id */
-val_t NEW_APackagedecl(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_APackagedecl;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___APackagedecl____n_doc(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___APackagedecl____n_kwpackage(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___APackagedecl____n_id(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_APackagedecl(val_t self, char *from) {
-}
-val_t NEW_APackagedecl_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APackagedecl();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_APackagedecl(self, "parser_nodes::PNode::init for APackagedecl");
-  return self;
-}
-val_t NEW_APackagedecl_parser_prod___APackagedecl___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APackagedecl();
-  parser_prod___APackagedecl___empty_init(self, init_table);
-  CHECKNEW_APackagedecl(self, "parser_prod::APackagedecl::empty_init for APackagedecl");
-  return self;
-}
-val_t NEW_APackagedecl_parser_prod___APackagedecl___init_apackagedecl(val_t p0, val_t p1, val_t p2) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APackagedecl();
-  parser_prod___APackagedecl___init_apackagedecl(self, p0, p1, p2, init_table);
-  CHECKNEW_APackagedecl(self, "parser_prod::APackagedecl::init_apackagedecl for APackagedecl");
-  return self;
-}
-const classtable_elt_t VFT_AImport[82] = {
-  {(bigint) 4255 /* 0: Identity */},
-  {(bigint) 3 /* 1: AImport < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AImport < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AImport < Prod: superclass typecheck marker */},
-  {(bigint) 3831 /* 4: AImport < PImport: superclass typecheck marker */},
-  {(bigint) 4255 /* 5: AImport < AImport: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AImport < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AImport___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AImport___visit_all},
-  {(bigint) parser_prod___AImport___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AImport < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AImport < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___AImport___module_name},
-  {(bigint) mmbuilder___AImport___visibility_level},
-  {(bigint) 3 /* 72: AImport < PImport: superclass init_table position */},
-  {(bigint) parser_prod___AImport___empty_init},
-  {(bigint) parser_prod___AImport___init_aimport},
-  {(bigint) 4 /* 75: AImport < AImport: superclass init_table position */},
-  {(bigint) parser_nodes___AImport___n_visibility},
-  {(bigint) parser_prod___AImport___n_visibility__eq},
-  {(bigint) parser_nodes___AImport___n_kwimport},
-  {(bigint) parser_prod___AImport___n_kwimport__eq},
-  {(bigint) parser_nodes___AImport___n_id},
-  {(bigint) parser_prod___AImport___n_id__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AImport::_parent */
-/* 2: Attribute AImport::_first_token */
-/* 3: Attribute AImport::_last_token */
-/* 4: Attribute AImport::_n_visibility */
-/* 5: Attribute AImport::_n_kwimport */
-/* 6: Attribute AImport::_n_id */
-val_t NEW_AImport(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_AImport;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AImport____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AImport____n_kwimport(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AImport____n_id(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AImport(val_t self, char *from) {
-}
-val_t NEW_AImport_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AImport();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AImport(self, "parser_nodes::PNode::init for AImport");
-  return self;
-}
-val_t NEW_AImport_parser_prod___AImport___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AImport();
-  parser_prod___AImport___empty_init(self, init_table);
-  CHECKNEW_AImport(self, "parser_prod::AImport::empty_init for AImport");
-  return self;
-}
-val_t NEW_AImport_parser_prod___AImport___init_aimport(val_t p0, val_t p1, val_t p2) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AImport();
-  parser_prod___AImport___init_aimport(self, p0, p1, p2, init_table);
-  CHECKNEW_AImport(self, "parser_prod::AImport::init_aimport for AImport");
-  return self;
-}
-const classtable_elt_t VFT_ANoImport[82] = {
-  {(bigint) 4207 /* 0: Identity */},
-  {(bigint) 3 /* 1: ANoImport < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ANoImport < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ANoImport < Prod: superclass typecheck marker */},
-  {(bigint) 3831 /* 4: ANoImport < PImport: superclass typecheck marker */},
-  {(bigint) 4207 /* 5: ANoImport < ANoImport: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ANoImport < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ANoImport___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ANoImport___visit_all},
-  {(bigint) parser_prod___ANoImport___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ANoImport < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ANoImport < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___ANoImport___module_name},
-  {(bigint) mmbuilder___PImport___visibility_level},
-  {(bigint) 3 /* 72: ANoImport < PImport: superclass init_table position */},
-  {(bigint) parser_prod___ANoImport___empty_init},
-  {(bigint) parser_prod___ANoImport___init_anoimport},
-  {(bigint) 4 /* 75: ANoImport < ANoImport: superclass init_table position */},
-  {(bigint) parser_nodes___ANoImport___n_visibility},
-  {(bigint) parser_prod___ANoImport___n_visibility__eq},
-  {(bigint) parser_nodes___ANoImport___n_kwimport},
-  {(bigint) parser_prod___ANoImport___n_kwimport__eq},
-  {(bigint) parser_nodes___ANoImport___n_kwend},
-  {(bigint) parser_prod___ANoImport___n_kwend__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ANoImport::_parent */
-/* 2: Attribute ANoImport::_first_token */
-/* 3: Attribute ANoImport::_last_token */
-/* 4: Attribute ANoImport::_n_visibility */
-/* 5: Attribute ANoImport::_n_kwimport */
-/* 6: Attribute ANoImport::_n_kwend */
-val_t NEW_ANoImport(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_ANoImport;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ANoImport____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ANoImport____n_kwimport(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ANoImport____n_kwend(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ANoImport(val_t self, char *from) {
-}
-val_t NEW_ANoImport_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ANoImport();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ANoImport(self, "parser_nodes::PNode::init for ANoImport");
-  return self;
-}
-val_t NEW_ANoImport_parser_prod___ANoImport___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ANoImport();
-  parser_prod___ANoImport___empty_init(self, init_table);
-  CHECKNEW_ANoImport(self, "parser_prod::ANoImport::empty_init for ANoImport");
-  return self;
-}
-val_t NEW_ANoImport_parser_prod___ANoImport___init_anoimport(val_t p0, val_t p1, val_t p2) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ANoImport();
-  parser_prod___ANoImport___init_anoimport(self, p0, p1, p2, init_table);
-  CHECKNEW_ANoImport(self, "parser_prod::ANoImport::init_anoimport for ANoImport");
-  return self;
-}
-const classtable_elt_t VFT_APublicVisibility[75] = {
-  {(bigint) 4167 /* 0: Identity */},
-  {(bigint) 3 /* 1: APublicVisibility < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: APublicVisibility < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: APublicVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 3791 /* 4: APublicVisibility < PVisibility: superclass typecheck marker */},
-  {(bigint) 4167 /* 5: APublicVisibility < APublicVisibility: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: APublicVisibility < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___APublicVisibility___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___APublicVisibility___visit_all},
-  {(bigint) parser_prod___APublicVisibility___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: APublicVisibility < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: APublicVisibility < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___APublicVisibility___level},
-  {(bigint) 3 /* 71: APublicVisibility < PVisibility: superclass init_table position */},
-  {(bigint) parser_prod___APublicVisibility___empty_init},
-  {(bigint) parser_prod___APublicVisibility___init_apublicvisibility},
-  {(bigint) 4 /* 74: APublicVisibility < APublicVisibility: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute APublicVisibility::_parent */
-/* 2: Attribute APublicVisibility::_first_token */
-/* 3: Attribute APublicVisibility::_last_token */
-val_t NEW_APublicVisibility(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_APublicVisibility;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_APublicVisibility(val_t self, char *from) {
-}
-val_t NEW_APublicVisibility_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APublicVisibility();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_APublicVisibility(self, "parser_nodes::PNode::init for APublicVisibility");
-  return self;
-}
-val_t NEW_APublicVisibility_parser_prod___APublicVisibility___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APublicVisibility();
-  parser_prod___APublicVisibility___empty_init(self, init_table);
-  CHECKNEW_APublicVisibility(self, "parser_prod::APublicVisibility::empty_init for APublicVisibility");
-  return self;
-}
-val_t NEW_APublicVisibility_parser_prod___APublicVisibility___init_apublicvisibility() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APublicVisibility();
-  parser_prod___APublicVisibility___init_apublicvisibility(self, init_table);
-  CHECKNEW_APublicVisibility(self, "parser_prod::APublicVisibility::init_apublicvisibility for APublicVisibility");
-  return self;
-}
-const classtable_elt_t VFT_APrivateVisibility[77] = {
-  {(bigint) 4179 /* 0: Identity */},
-  {(bigint) 3 /* 1: APrivateVisibility < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: APrivateVisibility < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: APrivateVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 3791 /* 4: APrivateVisibility < PVisibility: superclass typecheck marker */},
-  {(bigint) 4179 /* 5: APrivateVisibility < APrivateVisibility: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: APrivateVisibility < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___APrivateVisibility___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___APrivateVisibility___visit_all},
-  {(bigint) parser_prod___APrivateVisibility___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: APrivateVisibility < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: APrivateVisibility < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___APrivateVisibility___level},
-  {(bigint) 3 /* 71: APrivateVisibility < PVisibility: superclass init_table position */},
-  {(bigint) parser_prod___APrivateVisibility___empty_init},
-  {(bigint) parser_prod___APrivateVisibility___init_aprivatevisibility},
-  {(bigint) 4 /* 74: APrivateVisibility < APrivateVisibility: superclass init_table position */},
-  {(bigint) parser_nodes___APrivateVisibility___n_kwprivate},
-  {(bigint) parser_prod___APrivateVisibility___n_kwprivate__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute APrivateVisibility::_parent */
-/* 2: Attribute APrivateVisibility::_first_token */
-/* 3: Attribute APrivateVisibility::_last_token */
-/* 4: Attribute APrivateVisibility::_n_kwprivate */
-val_t NEW_APrivateVisibility(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_APrivateVisibility;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___APrivateVisibility____n_kwprivate(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_APrivateVisibility(val_t self, char *from) {
-}
-val_t NEW_APrivateVisibility_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APrivateVisibility();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_APrivateVisibility(self, "parser_nodes::PNode::init for APrivateVisibility");
-  return self;
-}
-val_t NEW_APrivateVisibility_parser_prod___APrivateVisibility___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APrivateVisibility();
-  parser_prod___APrivateVisibility___empty_init(self, init_table);
-  CHECKNEW_APrivateVisibility(self, "parser_prod::APrivateVisibility::empty_init for APrivateVisibility");
-  return self;
-}
-val_t NEW_APrivateVisibility_parser_prod___APrivateVisibility___init_aprivatevisibility(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APrivateVisibility();
-  parser_prod___APrivateVisibility___init_aprivatevisibility(self, p0, init_table);
-  CHECKNEW_APrivateVisibility(self, "parser_prod::APrivateVisibility::init_aprivatevisibility for APrivateVisibility");
-  return self;
-}
-const classtable_elt_t VFT_AProtectedVisibility[77] = {
-  {(bigint) 4175 /* 0: Identity */},
-  {(bigint) 3 /* 1: AProtectedVisibility < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AProtectedVisibility < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AProtectedVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 3791 /* 4: AProtectedVisibility < PVisibility: superclass typecheck marker */},
-  {(bigint) 4175 /* 5: AProtectedVisibility < AProtectedVisibility: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AProtectedVisibility < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AProtectedVisibility___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AProtectedVisibility___visit_all},
-  {(bigint) parser_prod___AProtectedVisibility___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AProtectedVisibility < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AProtectedVisibility < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___AProtectedVisibility___level},
-  {(bigint) 3 /* 71: AProtectedVisibility < PVisibility: superclass init_table position */},
-  {(bigint) parser_prod___AProtectedVisibility___empty_init},
-  {(bigint) parser_prod___AProtectedVisibility___init_aprotectedvisibility},
-  {(bigint) 4 /* 74: AProtectedVisibility < AProtectedVisibility: superclass init_table position */},
-  {(bigint) parser_nodes___AProtectedVisibility___n_kwprotected},
-  {(bigint) parser_prod___AProtectedVisibility___n_kwprotected__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AProtectedVisibility::_parent */
-/* 2: Attribute AProtectedVisibility::_first_token */
-/* 3: Attribute AProtectedVisibility::_last_token */
-/* 4: Attribute AProtectedVisibility::_n_kwprotected */
-val_t NEW_AProtectedVisibility(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_AProtectedVisibility;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AProtectedVisibility(val_t self, char *from) {
-}
-val_t NEW_AProtectedVisibility_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AProtectedVisibility();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AProtectedVisibility(self, "parser_nodes::PNode::init for AProtectedVisibility");
-  return self;
-}
-val_t NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AProtectedVisibility();
-  parser_prod___AProtectedVisibility___empty_init(self, init_table);
-  CHECKNEW_AProtectedVisibility(self, "parser_prod::AProtectedVisibility::empty_init for AProtectedVisibility");
-  return self;
-}
-val_t NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AProtectedVisibility();
-  parser_prod___AProtectedVisibility___init_aprotectedvisibility(self, p0, init_table);
-  CHECKNEW_AProtectedVisibility(self, "parser_prod::AProtectedVisibility::init_aprotectedvisibility for AProtectedVisibility");
-  return self;
-}
-const classtable_elt_t VFT_AIntrudeVisibility[77] = {
-  {(bigint) 4243 /* 0: Identity */},
-  {(bigint) 3 /* 1: AIntrudeVisibility < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AIntrudeVisibility < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AIntrudeVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 3791 /* 4: AIntrudeVisibility < PVisibility: superclass typecheck marker */},
-  {(bigint) 4243 /* 5: AIntrudeVisibility < AIntrudeVisibility: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AIntrudeVisibility < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AIntrudeVisibility___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AIntrudeVisibility___visit_all},
-  {(bigint) parser_prod___AIntrudeVisibility___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AIntrudeVisibility < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AIntrudeVisibility < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___AIntrudeVisibility___level},
-  {(bigint) 3 /* 71: AIntrudeVisibility < PVisibility: superclass init_table position */},
-  {(bigint) parser_prod___AIntrudeVisibility___empty_init},
-  {(bigint) parser_prod___AIntrudeVisibility___init_aintrudevisibility},
-  {(bigint) 4 /* 74: AIntrudeVisibility < AIntrudeVisibility: superclass init_table position */},
-  {(bigint) parser_nodes___AIntrudeVisibility___n_kwintrude},
-  {(bigint) parser_prod___AIntrudeVisibility___n_kwintrude__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AIntrudeVisibility::_parent */
-/* 2: Attribute AIntrudeVisibility::_first_token */
-/* 3: Attribute AIntrudeVisibility::_last_token */
-/* 4: Attribute AIntrudeVisibility::_n_kwintrude */
-val_t NEW_AIntrudeVisibility(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_AIntrudeVisibility;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AIntrudeVisibility(val_t self, char *from) {
-}
-val_t NEW_AIntrudeVisibility_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIntrudeVisibility();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AIntrudeVisibility(self, "parser_nodes::PNode::init for AIntrudeVisibility");
-  return self;
-}
-val_t NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIntrudeVisibility();
-  parser_prod___AIntrudeVisibility___empty_init(self, init_table);
-  CHECKNEW_AIntrudeVisibility(self, "parser_prod::AIntrudeVisibility::empty_init for AIntrudeVisibility");
-  return self;
-}
-val_t NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIntrudeVisibility();
-  parser_prod___AIntrudeVisibility___init_aintrudevisibility(self, p0, init_table);
-  CHECKNEW_AIntrudeVisibility(self, "parser_prod::AIntrudeVisibility::init_aintrudevisibility for AIntrudeVisibility");
-  return self;
-}
-const classtable_elt_t VFT_AClassdef[98] = {
-  {(bigint) 4319 /* 0: Identity */},
-  {(bigint) 3 /* 1: AClassdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AClassdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3859 /* 4: AClassdef < PClassdef: superclass typecheck marker */},
-  {(bigint) 4319 /* 5: AClassdef < AClassdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AClassdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PClassdef___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___AClassdef___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) mmbuilder___PClassdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AClassdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AClassdef___visit_all},
-  {(bigint) parser_prod___AClassdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AClassdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PClassdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AClassdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___AClassdef___name},
-  {(bigint) mmbuilder___AClassdef___arity},
-  {(bigint) mmbuilder___AClassdef___visibility_level},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___PClassdef___local_class},
-  {(bigint) 3 /* 76: AClassdef < PClassdef: superclass init_table position */},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) parser_prod___AClassdef___empty_init},
-  {(bigint) parser_prod___AClassdef___init_aclassdef},
-  {(bigint) 4 /* 81: AClassdef < AClassdef: superclass init_table position */},
-  {(bigint) parser_nodes___AClassdef___n_doc},
-  {(bigint) parser_prod___AClassdef___n_doc__eq},
-  {(bigint) parser_nodes___AClassdef___n_kwredef},
-  {(bigint) parser_prod___AClassdef___n_kwredef__eq},
-  {(bigint) parser_nodes___AClassdef___n_visibility},
-  {(bigint) parser_prod___AClassdef___n_visibility__eq},
-  {(bigint) parser_nodes___AClassdef___n_classkind},
-  {(bigint) parser_prod___AClassdef___n_classkind__eq},
-  {(bigint) parser_nodes___AClassdef___n_id},
-  {(bigint) parser_prod___AClassdef___n_id__eq},
-  {(bigint) parser_nodes___AClassdef___n_formaldefs},
-  {(bigint) parser_nodes___AClassdef___n_formaldefs__eq},
-  {(bigint) parser_nodes___AClassdef___n_superclasses},
-  {(bigint) parser_nodes___AClassdef___n_superclasses__eq},
-  {(bigint) parser_nodes___AClassdef___n_propdefs},
-  {(bigint) parser_nodes___AClassdef___n_propdefs__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AClassdef::_parent */
-/* 2: Attribute AClassdef::_first_token */
-/* 3: Attribute AClassdef::_last_token */
-/* 4: Attribute AClassdef::_local_class */
-/* 5: Attribute AClassdef::_n_doc */
-/* 6: Attribute AClassdef::_n_kwredef */
-/* 7: Attribute AClassdef::_n_visibility */
-/* 8: Attribute AClassdef::_n_classkind */
-/* 9: Attribute AClassdef::_n_id */
-/* 10: Attribute AClassdef::_n_formaldefs */
-/* 11: Attribute AClassdef::_n_superclasses */
-/* 12: Attribute AClassdef::_n_propdefs */
-val_t NEW_AClassdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_AClassdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AClassdef____n_doc(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClassdef____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClassdef____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClassdef____n_classkind(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClassdef____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClassdef____n_formaldefs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClassdef____n_superclasses(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClassdef____n_propdefs(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AClassdef(val_t self, char *from) {
-}
-val_t NEW_AClassdef_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AClassdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AClassdef(self, "parser_nodes::PNode::init for AClassdef");
-  return self;
-}
-val_t NEW_AClassdef_parser_prod___AClassdef___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AClassdef();
-  parser_prod___AClassdef___empty_init(self, init_table);
-  CHECKNEW_AClassdef(self, "parser_prod::AClassdef::empty_init for AClassdef");
-  return self;
-}
-val_t NEW_AClassdef_parser_prod___AClassdef___init_aclassdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AClassdef();
-  parser_prod___AClassdef___init_aclassdef(self, p0, p1, p2, p3, p4, p5, p6, p7, init_table);
-  CHECKNEW_AClassdef(self, "parser_prod::AClassdef::init_aclassdef for AClassdef");
-  return self;
-}
-const classtable_elt_t VFT_ATopClassdef[83] = {
-  {(bigint) 4111 /* 0: Identity */},
-  {(bigint) 3 /* 1: ATopClassdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ATopClassdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ATopClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3859 /* 4: ATopClassdef < PClassdef: superclass typecheck marker */},
-  {(bigint) 4111 /* 5: ATopClassdef < ATopClassdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ATopClassdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PClassdef___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) mmbuilder___PClassdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ATopClassdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ATopClassdef___visit_all},
-  {(bigint) parser_prod___ATopClassdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ATopClassdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PClassdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ATopClassdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___ATopClassdef___name},
-  {(bigint) mmbuilder___PClassdef___arity},
-  {(bigint) mmbuilder___PClassdef___visibility_level},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___PClassdef___local_class},
-  {(bigint) 3 /* 76: ATopClassdef < PClassdef: superclass init_table position */},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) parser_prod___ATopClassdef___empty_init},
-  {(bigint) parser_prod___ATopClassdef___init_atopclassdef},
-  {(bigint) 4 /* 80: ATopClassdef < ATopClassdef: superclass init_table position */},
-  {(bigint) parser_nodes___ATopClassdef___n_propdefs},
-  {(bigint) parser_nodes___ATopClassdef___n_propdefs__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ATopClassdef::_parent */
-/* 2: Attribute ATopClassdef::_first_token */
-/* 3: Attribute ATopClassdef::_last_token */
-/* 4: Attribute ATopClassdef::_local_class */
-/* 5: Attribute ATopClassdef::_n_propdefs */
-val_t NEW_ATopClassdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_ATopClassdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ATopClassdef____n_propdefs(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ATopClassdef(val_t self, char *from) {
-}
-val_t NEW_ATopClassdef_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ATopClassdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ATopClassdef(self, "parser_nodes::PNode::init for ATopClassdef");
-  return self;
-}
-val_t NEW_ATopClassdef_parser_prod___ATopClassdef___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ATopClassdef();
-  parser_prod___ATopClassdef___empty_init(self, init_table);
-  CHECKNEW_ATopClassdef(self, "parser_prod::ATopClassdef::empty_init for ATopClassdef");
-  return self;
-}
-val_t NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ATopClassdef();
-  parser_prod___ATopClassdef___init_atopclassdef(self, p0, init_table);
-  CHECKNEW_ATopClassdef(self, "parser_prod::ATopClassdef::init_atopclassdef for ATopClassdef");
-  return self;
-}
-const classtable_elt_t VFT_AMainClassdef[83] = {
-  {(bigint) 4231 /* 0: Identity */},
-  {(bigint) 3 /* 1: AMainClassdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AMainClassdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AMainClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3859 /* 4: AMainClassdef < PClassdef: superclass typecheck marker */},
-  {(bigint) 4231 /* 5: AMainClassdef < AMainClassdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AMainClassdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PClassdef___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) mmbuilder___PClassdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AMainClassdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AMainClassdef___visit_all},
-  {(bigint) parser_prod___AMainClassdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AMainClassdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PClassdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AMainClassdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___AMainClassdef___name},
-  {(bigint) mmbuilder___PClassdef___arity},
-  {(bigint) mmbuilder___PClassdef___visibility_level},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___PClassdef___local_class},
-  {(bigint) 3 /* 76: AMainClassdef < PClassdef: superclass init_table position */},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) parser_prod___AMainClassdef___empty_init},
-  {(bigint) parser_prod___AMainClassdef___init_amainclassdef},
-  {(bigint) 4 /* 80: AMainClassdef < AMainClassdef: superclass init_table position */},
-  {(bigint) parser_nodes___AMainClassdef___n_propdefs},
-  {(bigint) parser_nodes___AMainClassdef___n_propdefs__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AMainClassdef::_parent */
-/* 2: Attribute AMainClassdef::_first_token */
-/* 3: Attribute AMainClassdef::_last_token */
-/* 4: Attribute AMainClassdef::_local_class */
-/* 5: Attribute AMainClassdef::_n_propdefs */
-val_t NEW_AMainClassdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AMainClassdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AMainClassdef____n_propdefs(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AMainClassdef(val_t self, char *from) {
-}
-val_t NEW_AMainClassdef_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMainClassdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AMainClassdef(self, "parser_nodes::PNode::init for AMainClassdef");
-  return self;
-}
-val_t NEW_AMainClassdef_parser_prod___AMainClassdef___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMainClassdef();
-  parser_prod___AMainClassdef___empty_init(self, init_table);
-  CHECKNEW_AMainClassdef(self, "parser_prod::AMainClassdef::empty_init for AMainClassdef");
-  return self;
-}
-val_t NEW_AMainClassdef_parser_prod___AMainClassdef___init_amainclassdef(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMainClassdef();
-  parser_prod___AMainClassdef___init_amainclassdef(self, p0, init_table);
-  CHECKNEW_AMainClassdef(self, "parser_prod::AMainClassdef::init_amainclassdef for AMainClassdef");
-  return self;
-}
-const classtable_elt_t VFT_AConcreteClasskind[79] = {
-  {(bigint) 4307 /* 0: Identity */},
-  {(bigint) 3 /* 1: AConcreteClasskind < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AConcreteClasskind < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AConcreteClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3855 /* 4: AConcreteClasskind < PClasskind: superclass typecheck marker */},
-  {(bigint) 4307 /* 5: AConcreteClasskind < AConcreteClasskind: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AConcreteClasskind < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AConcreteClasskind___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AConcreteClasskind___visit_all},
-  {(bigint) parser_prod___AConcreteClasskind___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AConcreteClasskind < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AConcreteClasskind < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PClasskind___is_interface},
-  {(bigint) mmbuilder___PClasskind___is_universal},
-  {(bigint) mmbuilder___PClasskind___is_abstract},
-  {(bigint) 3 /* 73: AConcreteClasskind < PClasskind: superclass init_table position */},
-  {(bigint) parser_prod___AConcreteClasskind___empty_init},
-  {(bigint) parser_prod___AConcreteClasskind___init_aconcreteclasskind},
-  {(bigint) 4 /* 76: AConcreteClasskind < AConcreteClasskind: superclass init_table position */},
-  {(bigint) parser_nodes___AConcreteClasskind___n_kwclass},
-  {(bigint) parser_prod___AConcreteClasskind___n_kwclass__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AConcreteClasskind::_parent */
-/* 2: Attribute AConcreteClasskind::_first_token */
-/* 3: Attribute AConcreteClasskind::_last_token */
-/* 4: Attribute AConcreteClasskind::_n_kwclass */
-val_t NEW_AConcreteClasskind(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_AConcreteClasskind;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AConcreteClasskind____n_kwclass(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AConcreteClasskind(val_t self, char *from) {
-}
-val_t NEW_AConcreteClasskind_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteClasskind();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AConcreteClasskind(self, "parser_nodes::PNode::init for AConcreteClasskind");
-  return self;
-}
-val_t NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteClasskind();
-  parser_prod___AConcreteClasskind___empty_init(self, init_table);
-  CHECKNEW_AConcreteClasskind(self, "parser_prod::AConcreteClasskind::empty_init for AConcreteClasskind");
-  return self;
-}
-val_t NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteClasskind();
-  parser_prod___AConcreteClasskind___init_aconcreteclasskind(self, p0, init_table);
-  CHECKNEW_AConcreteClasskind(self, "parser_prod::AConcreteClasskind::init_aconcreteclasskind for AConcreteClasskind");
-  return self;
-}
-const classtable_elt_t VFT_AAbstractClasskind[81] = {
-  {(bigint) 4375 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAbstractClasskind < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAbstractClasskind < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAbstractClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3855 /* 4: AAbstractClasskind < PClasskind: superclass typecheck marker */},
-  {(bigint) 4375 /* 5: AAbstractClasskind < AAbstractClasskind: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAbstractClasskind < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AAbstractClasskind___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AAbstractClasskind___visit_all},
-  {(bigint) parser_prod___AAbstractClasskind___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAbstractClasskind < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAbstractClasskind < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PClasskind___is_interface},
-  {(bigint) mmbuilder___PClasskind___is_universal},
-  {(bigint) mmbuilder___AAbstractClasskind___is_abstract},
-  {(bigint) 3 /* 73: AAbstractClasskind < PClasskind: superclass init_table position */},
-  {(bigint) parser_prod___AAbstractClasskind___empty_init},
-  {(bigint) parser_prod___AAbstractClasskind___init_aabstractclasskind},
-  {(bigint) 4 /* 76: AAbstractClasskind < AAbstractClasskind: superclass init_table position */},
-  {(bigint) parser_nodes___AAbstractClasskind___n_kwabstract},
-  {(bigint) parser_prod___AAbstractClasskind___n_kwabstract__eq},
-  {(bigint) parser_nodes___AAbstractClasskind___n_kwclass},
-  {(bigint) parser_prod___AAbstractClasskind___n_kwclass__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AAbstractClasskind::_parent */
-/* 2: Attribute AAbstractClasskind::_first_token */
-/* 3: Attribute AAbstractClasskind::_last_token */
-/* 4: Attribute AAbstractClasskind::_n_kwabstract */
-/* 5: Attribute AAbstractClasskind::_n_kwclass */
-val_t NEW_AAbstractClasskind(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AAbstractClasskind;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAbstractClasskind____n_kwclass(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAbstractClasskind(val_t self, char *from) {
-}
-val_t NEW_AAbstractClasskind_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAbstractClasskind();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAbstractClasskind(self, "parser_nodes::PNode::init for AAbstractClasskind");
-  return self;
-}
-val_t NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAbstractClasskind();
-  parser_prod___AAbstractClasskind___empty_init(self, init_table);
-  CHECKNEW_AAbstractClasskind(self, "parser_prod::AAbstractClasskind::empty_init for AAbstractClasskind");
-  return self;
-}
-val_t NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAbstractClasskind();
-  parser_prod___AAbstractClasskind___init_aabstractclasskind(self, p0, p1, init_table);
-  CHECKNEW_AAbstractClasskind(self, "parser_prod::AAbstractClasskind::init_aabstractclasskind for AAbstractClasskind");
-  return self;
-}
-const classtable_elt_t VFT_AInterfaceClasskind[79] = {
-  {(bigint) 4247 /* 0: Identity */},
-  {(bigint) 3 /* 1: AInterfaceClasskind < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AInterfaceClasskind < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AInterfaceClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3855 /* 4: AInterfaceClasskind < PClasskind: superclass typecheck marker */},
-  {(bigint) 4247 /* 5: AInterfaceClasskind < AInterfaceClasskind: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AInterfaceClasskind < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AInterfaceClasskind___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AInterfaceClasskind___visit_all},
-  {(bigint) parser_prod___AInterfaceClasskind___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AInterfaceClasskind < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AInterfaceClasskind < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___AInterfaceClasskind___is_interface},
-  {(bigint) mmbuilder___PClasskind___is_universal},
-  {(bigint) mmbuilder___PClasskind___is_abstract},
-  {(bigint) 3 /* 73: AInterfaceClasskind < PClasskind: superclass init_table position */},
-  {(bigint) parser_prod___AInterfaceClasskind___empty_init},
-  {(bigint) parser_prod___AInterfaceClasskind___init_ainterfaceclasskind},
-  {(bigint) 4 /* 76: AInterfaceClasskind < AInterfaceClasskind: superclass init_table position */},
-  {(bigint) parser_nodes___AInterfaceClasskind___n_kwinterface},
-  {(bigint) parser_prod___AInterfaceClasskind___n_kwinterface__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AInterfaceClasskind::_parent */
-/* 2: Attribute AInterfaceClasskind::_first_token */
-/* 3: Attribute AInterfaceClasskind::_last_token */
-/* 4: Attribute AInterfaceClasskind::_n_kwinterface */
-val_t NEW_AInterfaceClasskind(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_AInterfaceClasskind;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AInterfaceClasskind(val_t self, char *from) {
-}
-val_t NEW_AInterfaceClasskind_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AInterfaceClasskind();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AInterfaceClasskind(self, "parser_nodes::PNode::init for AInterfaceClasskind");
-  return self;
-}
-val_t NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AInterfaceClasskind();
-  parser_prod___AInterfaceClasskind___empty_init(self, init_table);
-  CHECKNEW_AInterfaceClasskind(self, "parser_prod::AInterfaceClasskind::empty_init for AInterfaceClasskind");
-  return self;
-}
-val_t NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AInterfaceClasskind();
-  parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(self, p0, init_table);
-  CHECKNEW_AInterfaceClasskind(self, "parser_prod::AInterfaceClasskind::init_ainterfaceclasskind for AInterfaceClasskind");
-  return self;
-}
-const classtable_elt_t VFT_AUniversalClasskind[79] = {
-  {(bigint) 4095 /* 0: Identity */},
-  {(bigint) 3 /* 1: AUniversalClasskind < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AUniversalClasskind < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AUniversalClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3855 /* 4: AUniversalClasskind < PClasskind: superclass typecheck marker */},
-  {(bigint) 4095 /* 5: AUniversalClasskind < AUniversalClasskind: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AUniversalClasskind < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AUniversalClasskind___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AUniversalClasskind___visit_all},
-  {(bigint) parser_prod___AUniversalClasskind___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AUniversalClasskind < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AUniversalClasskind < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PClasskind___is_interface},
-  {(bigint) mmbuilder___AUniversalClasskind___is_universal},
-  {(bigint) mmbuilder___PClasskind___is_abstract},
-  {(bigint) 3 /* 73: AUniversalClasskind < PClasskind: superclass init_table position */},
-  {(bigint) parser_prod___AUniversalClasskind___empty_init},
-  {(bigint) parser_prod___AUniversalClasskind___init_auniversalclasskind},
-  {(bigint) 4 /* 76: AUniversalClasskind < AUniversalClasskind: superclass init_table position */},
-  {(bigint) parser_nodes___AUniversalClasskind___n_kwuniversal},
-  {(bigint) parser_prod___AUniversalClasskind___n_kwuniversal__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AUniversalClasskind::_parent */
-/* 2: Attribute AUniversalClasskind::_first_token */
-/* 3: Attribute AUniversalClasskind::_last_token */
-/* 4: Attribute AUniversalClasskind::_n_kwuniversal */
-val_t NEW_AUniversalClasskind(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_AUniversalClasskind;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AUniversalClasskind____n_kwuniversal(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AUniversalClasskind(val_t self, char *from) {
-}
-val_t NEW_AUniversalClasskind_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AUniversalClasskind();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AUniversalClasskind(self, "parser_nodes::PNode::init for AUniversalClasskind");
-  return self;
-}
-val_t NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AUniversalClasskind();
-  parser_prod___AUniversalClasskind___empty_init(self, init_table);
-  CHECKNEW_AUniversalClasskind(self, "parser_prod::AUniversalClasskind::empty_init for AUniversalClasskind");
-  return self;
-}
-val_t NEW_AUniversalClasskind_parser_prod___AUniversalClasskind___init_auniversalclasskind(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AUniversalClasskind();
-  parser_prod___AUniversalClasskind___init_auniversalclasskind(self, p0, init_table);
-  CHECKNEW_AUniversalClasskind(self, "parser_prod::AUniversalClasskind::init_auniversalclasskind for AUniversalClasskind");
-  return self;
-}
-const classtable_elt_t VFT_AFormaldef[80] = {
-  {(bigint) 4279 /* 0: Identity */},
-  {(bigint) 3 /* 1: AFormaldef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AFormaldef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AFormaldef < Prod: superclass typecheck marker */},
-  {(bigint) 3835 /* 4: AFormaldef < PFormaldef: superclass typecheck marker */},
-  {(bigint) 4279 /* 5: AFormaldef < AFormaldef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AFormaldef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___AFormaldef___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___AFormaldef___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AFormaldef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AFormaldef___visit_all},
-  {(bigint) parser_prod___AFormaldef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AFormaldef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AFormaldef < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: AFormaldef < PFormaldef: superclass init_table position */},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) parser_prod___AFormaldef___empty_init},
-  {(bigint) parser_prod___AFormaldef___init_aformaldef},
-  {(bigint) 4 /* 75: AFormaldef < AFormaldef: superclass init_table position */},
-  {(bigint) parser_nodes___AFormaldef___n_id},
-  {(bigint) parser_prod___AFormaldef___n_id__eq},
-  {(bigint) parser_nodes___AFormaldef___n_type},
-  {(bigint) parser_prod___AFormaldef___n_type__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AFormaldef::_parent */
-/* 2: Attribute AFormaldef::_first_token */
-/* 3: Attribute AFormaldef::_last_token */
-/* 4: Attribute AFormaldef::_formal */
-/* 5: Attribute AFormaldef::_n_id */
-/* 6: Attribute AFormaldef::_n_type */
-val_t NEW_AFormaldef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_AFormaldef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AFormaldef____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AFormaldef____n_type(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AFormaldef(val_t self, char *from) {
-}
-val_t NEW_AFormaldef_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AFormaldef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AFormaldef(self, "parser_nodes::PNode::init for AFormaldef");
-  return self;
-}
-val_t NEW_AFormaldef_parser_prod___AFormaldef___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AFormaldef();
-  parser_prod___AFormaldef___empty_init(self, init_table);
-  CHECKNEW_AFormaldef(self, "parser_prod::AFormaldef::empty_init for AFormaldef");
-  return self;
-}
-val_t NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AFormaldef();
-  parser_prod___AFormaldef___init_aformaldef(self, p0, p1, init_table);
-  CHECKNEW_AFormaldef(self, "parser_prod::AFormaldef::init_aformaldef for AFormaldef");
-  return self;
-}
-const classtable_elt_t VFT_ASuperclass[82] = {
-  {(bigint) 4119 /* 0: Identity */},
-  {(bigint) 3 /* 1: ASuperclass < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ASuperclass < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ASuperclass < Prod: superclass typecheck marker */},
-  {(bigint) 3799 /* 4: ASuperclass < PSuperclass: superclass typecheck marker */},
-  {(bigint) 4119 /* 5: ASuperclass < ASuperclass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ASuperclass < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___ASuperclass___accept_class_specialization_builder},
-  {(bigint) mmbuilder___ASuperclass___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___ASuperclass___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ASuperclass___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ASuperclass___visit_all},
-  {(bigint) parser_prod___ASuperclass___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ASuperclass < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ASuperclass < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: ASuperclass < PSuperclass: superclass init_table position */},
-  {(bigint) mmbuilder___ASuperclass___ancestor},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) parser_prod___ASuperclass___empty_init},
-  {(bigint) parser_prod___ASuperclass___init_asuperclass},
-  {(bigint) 4 /* 77: ASuperclass < ASuperclass: superclass init_table position */},
-  {(bigint) parser_nodes___ASuperclass___n_kwspecial},
-  {(bigint) parser_prod___ASuperclass___n_kwspecial__eq},
-  {(bigint) parser_nodes___ASuperclass___n_type},
-  {(bigint) parser_prod___ASuperclass___n_type__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ASuperclass::_parent */
-/* 2: Attribute ASuperclass::_first_token */
-/* 3: Attribute ASuperclass::_last_token */
-/* 4: Attribute ASuperclass::_ancestor */
-/* 5: Attribute ASuperclass::_n_kwspecial */
-/* 6: Attribute ASuperclass::_n_type */
-val_t NEW_ASuperclass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_ASuperclass;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASuperclass____n_kwspecial(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASuperclass____n_type(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ASuperclass(val_t self, char *from) {
-}
-val_t NEW_ASuperclass_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASuperclass();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ASuperclass(self, "parser_nodes::PNode::init for ASuperclass");
-  return self;
-}
-val_t NEW_ASuperclass_parser_prod___ASuperclass___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASuperclass();
-  parser_prod___ASuperclass___empty_init(self, init_table);
-  CHECKNEW_ASuperclass(self, "parser_prod::ASuperclass::empty_init for ASuperclass");
-  return self;
-}
-val_t NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASuperclass();
-  parser_prod___ASuperclass___init_asuperclass(self, p0, p1, init_table);
-  CHECKNEW_ASuperclass(self, "parser_prod::ASuperclass::init_asuperclass for ASuperclass");
-  return self;
-}
-const classtable_elt_t VFT_AAttrPropdef[105] = {
-  {(bigint) 4347 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAttrPropdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAttrPropdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAttrPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3811 /* 4: AAttrPropdef < PPropdef: superclass typecheck marker */},
-  {(bigint) 4347 /* 5: AAttrPropdef < AAttrPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAttrPropdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___AAttrPropdef___accept_property_builder},
-  {(bigint) mmbuilder___AAttrPropdef___accept_property_verifier},
-  {(bigint) mmbuilder___AAttrPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AAttrPropdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AAttrPropdef___visit_all},
-  {(bigint) parser_prod___AAttrPropdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAttrPropdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AAttrPropdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAttrPropdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PPropdef___process_and_check},
-  {(bigint) mmbuilder___PPropdef___do_and_check_intro},
-  {(bigint) mmbuilder___PPropdef___inherit_signature},
-  {(bigint) mmbuilder___PPropdef___do_and_check_redef},
-  {(bigint) 3 /* 74: AAttrPropdef < PPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___PPropdef___n_doc},
-  {(bigint) parser_prod___AAttrPropdef___n_doc__eq},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___AAttrPropdef___prop},
-  {(bigint) mmbuilder___AAttrPropdef___readmethod},
-  {(bigint) mmbuilder___AAttrPropdef___writemethod},
-  {(bigint) parser_prod___AAttrPropdef___empty_init},
-  {(bigint) parser_prod___AAttrPropdef___init_aattrpropdef},
-  {(bigint) 4 /* 85: AAttrPropdef < AAttrPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AAttrPropdef___n_kwredef},
-  {(bigint) parser_prod___AAttrPropdef___n_kwredef__eq},
-  {(bigint) parser_nodes___AAttrPropdef___n_visibility},
-  {(bigint) parser_prod___AAttrPropdef___n_visibility__eq},
-  {(bigint) parser_nodes___AAttrPropdef___n_kwattr},
-  {(bigint) parser_prod___AAttrPropdef___n_kwattr__eq},
-  {(bigint) parser_nodes___AAttrPropdef___n_kwvar},
-  {(bigint) parser_prod___AAttrPropdef___n_kwvar__eq},
-  {(bigint) parser_nodes___AAttrPropdef___n_id},
-  {(bigint) parser_prod___AAttrPropdef___n_id__eq},
-  {(bigint) parser_nodes___AAttrPropdef___n_type},
-  {(bigint) parser_prod___AAttrPropdef___n_type__eq},
-  {(bigint) parser_nodes___AAttrPropdef___n_readable},
-  {(bigint) parser_prod___AAttrPropdef___n_readable__eq},
-  {(bigint) parser_nodes___AAttrPropdef___n_writable},
-  {(bigint) parser_prod___AAttrPropdef___n_writable__eq},
-  {(bigint) parser_nodes___AAttrPropdef___n_expr},
-  {(bigint) parser_prod___AAttrPropdef___n_expr__eq},
-  {(bigint) typing___PNode___accept_typing},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AAttrPropdef::_parent */
-/* 2: Attribute AAttrPropdef::_first_token */
-/* 3: Attribute AAttrPropdef::_last_token */
-/* 4: Attribute AAttrPropdef::_n_doc */
-/* 5: Attribute AAttrPropdef::_readmethod */
-/* 6: Attribute AAttrPropdef::_writemethod */
-/* 7: Attribute AAttrPropdef::_prop */
-/* 8: Attribute AAttrPropdef::_n_kwredef */
-/* 9: Attribute AAttrPropdef::_n_visibility */
-/* 10: Attribute AAttrPropdef::_n_kwattr */
-/* 11: Attribute AAttrPropdef::_n_kwvar */
-/* 12: Attribute AAttrPropdef::_n_id */
-/* 13: Attribute AAttrPropdef::_n_type */
-/* 14: Attribute AAttrPropdef::_n_readable */
-/* 15: Attribute AAttrPropdef::_n_writable */
-/* 16: Attribute AAttrPropdef::_n_expr */
-val_t NEW_AAttrPropdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 17);
-  obj->vft = (classtable_elt_t*)VFT_AAttrPropdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PPropdef____n_doc(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrPropdef____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrPropdef____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrPropdef____n_kwattr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrPropdef____n_kwvar(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrPropdef____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrPropdef____n_type(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrPropdef____n_readable(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrPropdef____n_writable(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrPropdef____n_expr(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAttrPropdef(val_t self, char *from) {
-}
-val_t NEW_AAttrPropdef_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrPropdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAttrPropdef(self, "parser_nodes::PNode::init for AAttrPropdef");
-  return self;
-}
-val_t NEW_AAttrPropdef_parser_prod___AAttrPropdef___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrPropdef();
-  parser_prod___AAttrPropdef___empty_init(self, init_table);
-  CHECKNEW_AAttrPropdef(self, "parser_prod::AAttrPropdef::empty_init for AAttrPropdef");
-  return self;
-}
-val_t NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, val_t p9) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrPropdef();
-  parser_prod___AAttrPropdef___init_aattrpropdef(self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, init_table);
-  CHECKNEW_AAttrPropdef(self, "parser_prod::AAttrPropdef::init_aattrpropdef for AAttrPropdef");
-  return self;
-}
-const classtable_elt_t VFT_AMethPropdef[96] = {
-  {(bigint) 4227 /* 0: Identity */},
-  {(bigint) 3 /* 1: AMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AMethPropdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3811 /* 4: AMethPropdef < PPropdef: superclass typecheck marker */},
-  {(bigint) 4227 /* 5: AMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AMethPropdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AMethPropdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AMethPropdef___visit_all},
-  {(bigint) parser_prod___AMethPropdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AMethPropdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AMethPropdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AMethPropdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PPropdef___process_and_check},
-  {(bigint) mmbuilder___PPropdef___do_and_check_intro},
-  {(bigint) mmbuilder___PPropdef___inherit_signature},
-  {(bigint) mmbuilder___PPropdef___do_and_check_redef},
-  {(bigint) 3 /* 74: AMethPropdef < PPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___PPropdef___n_doc},
-  {(bigint) parser_prod___AMethPropdef___n_doc__eq},
-  {(bigint) compiling_methods___AMethPropdef___do_compile_inside},
-  {(bigint) mmbuilder___AMethPropdef___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___AMethPropdef___method},
-  {(bigint) typing___AMethPropdef___self_var},
-  {(bigint) parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser_prod___AMethPropdef___n_kwredef__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser_prod___AMethPropdef___n_visibility__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser_prod___AMethPropdef___n_methid__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_signature},
-  {(bigint) parser_prod___AMethPropdef___n_signature__eq},
-  {(bigint) typing___PNode___accept_typing},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AMethPropdef::_parent */
-/* 2: Attribute AMethPropdef::_first_token */
-/* 3: Attribute AMethPropdef::_last_token */
-/* 4: Attribute AMethPropdef::_n_doc */
-/* 5: Attribute AMethPropdef::_name */
-/* 6: Attribute AMethPropdef::_method */
-/* 7: Attribute AMethPropdef::_n_kwredef */
-/* 8: Attribute AMethPropdef::_n_visibility */
-/* 9: Attribute AMethPropdef::_n_methid */
-/* 10: Attribute AMethPropdef::_n_signature */
-/* 11: Attribute AMethPropdef::_self_var */
-val_t NEW_AMethPropdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_AMethPropdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PPropdef____n_doc(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_methid(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_signature(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AMethPropdef(val_t self, char *from) {
-}
-val_t NEW_AMethPropdef_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMethPropdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AMethPropdef(self, "parser_nodes::PNode::init for AMethPropdef");
-  return self;
-}
-val_t NEW_AMethPropdef_parser_prod___AMethPropdef___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMethPropdef();
-  parser_prod___AMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AMethPropdef(self, "parser_prod::AMethPropdef::empty_init for AMethPropdef");
-  return self;
-}
-val_t NEW_AMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMethPropdef();
-  parser_prod___AMethPropdef___init_amethpropdef(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_AMethPropdef(self, "parser_prod::AMethPropdef::init_amethpropdef for AMethPropdef");
-  return self;
-}
-const classtable_elt_t VFT_ADeferredMethPropdef[101] = {
-  {(bigint) 4519 /* 0: Identity */},
-  {(bigint) 3 /* 1: ADeferredMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ADeferredMethPropdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ADeferredMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3811 /* 4: ADeferredMethPropdef < PPropdef: superclass typecheck marker */},
-  {(bigint) 4227 /* 5: ADeferredMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 4519 /* 6: ADeferredMethPropdef < ADeferredMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ADeferredMethPropdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ADeferredMethPropdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ADeferredMethPropdef___visit_all},
-  {(bigint) parser_prod___ADeferredMethPropdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ADeferredMethPropdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AMethPropdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ADeferredMethPropdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PPropdef___process_and_check},
-  {(bigint) mmbuilder___PPropdef___do_and_check_intro},
-  {(bigint) mmbuilder___PPropdef___inherit_signature},
-  {(bigint) mmbuilder___PPropdef___do_and_check_redef},
-  {(bigint) 3 /* 74: ADeferredMethPropdef < PPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___PPropdef___n_doc},
-  {(bigint) parser_prod___ADeferredMethPropdef___n_doc__eq},
-  {(bigint) compiling_methods___ADeferredMethPropdef___do_compile_inside},
-  {(bigint) mmbuilder___AMethPropdef___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___AMethPropdef___method},
-  {(bigint) typing___AMethPropdef___self_var},
-  {(bigint) parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: ADeferredMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser_prod___ADeferredMethPropdef___n_kwredef__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser_prod___ADeferredMethPropdef___n_visibility__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser_prod___ADeferredMethPropdef___n_methid__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_signature},
-  {(bigint) parser_prod___ADeferredMethPropdef___n_signature__eq},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) parser_prod___ADeferredMethPropdef___empty_init},
-  {(bigint) parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef},
-  {(bigint) 5 /* 98: ADeferredMethPropdef < ADeferredMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___ADeferredMethPropdef___n_kwmeth},
-  {(bigint) parser_prod___ADeferredMethPropdef___n_kwmeth__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ADeferredMethPropdef::_parent */
-/* 2: Attribute ADeferredMethPropdef::_first_token */
-/* 3: Attribute ADeferredMethPropdef::_last_token */
-/* 4: Attribute ADeferredMethPropdef::_n_doc */
-/* 5: Attribute ADeferredMethPropdef::_name */
-/* 6: Attribute ADeferredMethPropdef::_method */
-/* 7: Attribute ADeferredMethPropdef::_n_kwredef */
-/* 8: Attribute ADeferredMethPropdef::_n_visibility */
-/* 9: Attribute ADeferredMethPropdef::_n_methid */
-/* 10: Attribute ADeferredMethPropdef::_n_signature */
-/* 11: Attribute ADeferredMethPropdef::_self_var */
-/* 12: Attribute ADeferredMethPropdef::_n_kwmeth */
-val_t NEW_ADeferredMethPropdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_ADeferredMethPropdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PPropdef____n_doc(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_methid(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_signature(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ADeferredMethPropdef(val_t self, char *from) {
-}
-val_t NEW_ADeferredMethPropdef_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ADeferredMethPropdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ADeferredMethPropdef(self, "parser_nodes::PNode::init for ADeferredMethPropdef");
-  return self;
-}
-val_t NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ADeferredMethPropdef();
-  parser_prod___AMethPropdef___empty_init(self, init_table);
-  CHECKNEW_ADeferredMethPropdef(self, "parser_prod::AMethPropdef::empty_init for ADeferredMethPropdef");
-  return self;
-}
-val_t NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ADeferredMethPropdef();
-  parser_prod___AMethPropdef___init_amethpropdef(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_ADeferredMethPropdef(self, "parser_prod::AMethPropdef::init_amethpropdef for ADeferredMethPropdef");
-  return self;
-}
-val_t NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ADeferredMethPropdef();
-  parser_prod___ADeferredMethPropdef___empty_init(self, init_table);
-  CHECKNEW_ADeferredMethPropdef(self, "parser_prod::ADeferredMethPropdef::empty_init for ADeferredMethPropdef");
-  return self;
-}
-val_t NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ADeferredMethPropdef();
-  parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(self, p0, p1, p2, p3, p4, p5, init_table);
-  CHECKNEW_ADeferredMethPropdef(self, "parser_prod::ADeferredMethPropdef::init_adeferredmethpropdef for ADeferredMethPropdef");
-  return self;
-}
-const classtable_elt_t VFT_AInternMethPropdef[101] = {
-  {(bigint) 4491 /* 0: Identity */},
-  {(bigint) 3 /* 1: AInternMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AInternMethPropdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AInternMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3811 /* 4: AInternMethPropdef < PPropdef: superclass typecheck marker */},
-  {(bigint) 4227 /* 5: AInternMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 4491 /* 6: AInternMethPropdef < AInternMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AInternMethPropdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AInternMethPropdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AInternMethPropdef___visit_all},
-  {(bigint) parser_prod___AInternMethPropdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AInternMethPropdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AMethPropdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AInternMethPropdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PPropdef___process_and_check},
-  {(bigint) mmbuilder___PPropdef___do_and_check_intro},
-  {(bigint) mmbuilder___PPropdef___inherit_signature},
-  {(bigint) mmbuilder___PPropdef___do_and_check_redef},
-  {(bigint) 3 /* 74: AInternMethPropdef < PPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___PPropdef___n_doc},
-  {(bigint) parser_prod___AInternMethPropdef___n_doc__eq},
-  {(bigint) compiling_methods___AInternMethPropdef___do_compile_inside},
-  {(bigint) mmbuilder___AMethPropdef___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___AMethPropdef___method},
-  {(bigint) typing___AMethPropdef___self_var},
-  {(bigint) parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AInternMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser_prod___AInternMethPropdef___n_kwredef__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser_prod___AInternMethPropdef___n_visibility__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser_prod___AInternMethPropdef___n_methid__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_signature},
-  {(bigint) parser_prod___AInternMethPropdef___n_signature__eq},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) parser_prod___AInternMethPropdef___empty_init},
-  {(bigint) parser_prod___AInternMethPropdef___init_ainternmethpropdef},
-  {(bigint) 5 /* 98: AInternMethPropdef < AInternMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AInternMethPropdef___n_kwmeth},
-  {(bigint) parser_prod___AInternMethPropdef___n_kwmeth__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AInternMethPropdef::_parent */
-/* 2: Attribute AInternMethPropdef::_first_token */
-/* 3: Attribute AInternMethPropdef::_last_token */
-/* 4: Attribute AInternMethPropdef::_n_doc */
-/* 5: Attribute AInternMethPropdef::_name */
-/* 6: Attribute AInternMethPropdef::_method */
-/* 7: Attribute AInternMethPropdef::_n_kwredef */
-/* 8: Attribute AInternMethPropdef::_n_visibility */
-/* 9: Attribute AInternMethPropdef::_n_methid */
-/* 10: Attribute AInternMethPropdef::_n_signature */
-/* 11: Attribute AInternMethPropdef::_self_var */
-/* 12: Attribute AInternMethPropdef::_n_kwmeth */
-val_t NEW_AInternMethPropdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_AInternMethPropdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PPropdef____n_doc(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_methid(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_signature(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AInternMethPropdef(val_t self, char *from) {
-}
-val_t NEW_AInternMethPropdef_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AInternMethPropdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AInternMethPropdef(self, "parser_nodes::PNode::init for AInternMethPropdef");
-  return self;
-}
-val_t NEW_AInternMethPropdef_parser_prod___AMethPropdef___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AInternMethPropdef();
-  parser_prod___AMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AInternMethPropdef(self, "parser_prod::AMethPropdef::empty_init for AInternMethPropdef");
-  return self;
-}
-val_t NEW_AInternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AInternMethPropdef();
-  parser_prod___AMethPropdef___init_amethpropdef(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_AInternMethPropdef(self, "parser_prod::AMethPropdef::init_amethpropdef for AInternMethPropdef");
-  return self;
-}
-val_t NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AInternMethPropdef();
-  parser_prod___AInternMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AInternMethPropdef(self, "parser_prod::AInternMethPropdef::empty_init for AInternMethPropdef");
-  return self;
-}
-val_t NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AInternMethPropdef();
-  parser_prod___AInternMethPropdef___init_ainternmethpropdef(self, p0, p1, p2, p3, p4, p5, init_table);
-  CHECKNEW_AInternMethPropdef(self, "parser_prod::AInternMethPropdef::init_ainternmethpropdef for AInternMethPropdef");
-  return self;
-}
-const classtable_elt_t VFT_AExternMethPropdef[103] = {
-  {(bigint) 4507 /* 0: Identity */},
-  {(bigint) 3 /* 1: AExternMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AExternMethPropdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AExternMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3811 /* 4: AExternMethPropdef < PPropdef: superclass typecheck marker */},
-  {(bigint) 4227 /* 5: AExternMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 4507 /* 6: AExternMethPropdef < AExternMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AExternMethPropdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AExternMethPropdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AExternMethPropdef___visit_all},
-  {(bigint) parser_prod___AExternMethPropdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AExternMethPropdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AMethPropdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AExternMethPropdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PPropdef___process_and_check},
-  {(bigint) mmbuilder___PPropdef___do_and_check_intro},
-  {(bigint) mmbuilder___PPropdef___inherit_signature},
-  {(bigint) mmbuilder___PPropdef___do_and_check_redef},
-  {(bigint) 3 /* 74: AExternMethPropdef < PPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___PPropdef___n_doc},
-  {(bigint) parser_prod___AExternMethPropdef___n_doc__eq},
-  {(bigint) compiling_methods___AExternMethPropdef___do_compile_inside},
-  {(bigint) mmbuilder___AMethPropdef___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___AMethPropdef___method},
-  {(bigint) typing___AMethPropdef___self_var},
-  {(bigint) parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AExternMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser_prod___AExternMethPropdef___n_kwredef__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser_prod___AExternMethPropdef___n_visibility__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser_prod___AExternMethPropdef___n_methid__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_signature},
-  {(bigint) parser_prod___AExternMethPropdef___n_signature__eq},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) parser_prod___AExternMethPropdef___empty_init},
-  {(bigint) parser_prod___AExternMethPropdef___init_aexternmethpropdef},
-  {(bigint) 5 /* 98: AExternMethPropdef < AExternMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AExternMethPropdef___n_kwmeth},
-  {(bigint) parser_prod___AExternMethPropdef___n_kwmeth__eq},
-  {(bigint) parser_nodes___AExternMethPropdef___n_extern},
-  {(bigint) parser_prod___AExternMethPropdef___n_extern__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AExternMethPropdef::_parent */
-/* 2: Attribute AExternMethPropdef::_first_token */
-/* 3: Attribute AExternMethPropdef::_last_token */
-/* 4: Attribute AExternMethPropdef::_n_doc */
-/* 5: Attribute AExternMethPropdef::_name */
-/* 6: Attribute AExternMethPropdef::_method */
-/* 7: Attribute AExternMethPropdef::_n_kwredef */
-/* 8: Attribute AExternMethPropdef::_n_visibility */
-/* 9: Attribute AExternMethPropdef::_n_methid */
-/* 10: Attribute AExternMethPropdef::_n_signature */
-/* 11: Attribute AExternMethPropdef::_self_var */
-/* 12: Attribute AExternMethPropdef::_n_kwmeth */
-/* 13: Attribute AExternMethPropdef::_n_extern */
-val_t NEW_AExternMethPropdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_AExternMethPropdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PPropdef____n_doc(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_methid(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_signature(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AExternMethPropdef____n_extern(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AExternMethPropdef(val_t self, char *from) {
-}
-val_t NEW_AExternMethPropdef_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AExternMethPropdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AExternMethPropdef(self, "parser_nodes::PNode::init for AExternMethPropdef");
-  return self;
-}
-val_t NEW_AExternMethPropdef_parser_prod___AMethPropdef___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AExternMethPropdef();
-  parser_prod___AMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AExternMethPropdef(self, "parser_prod::AMethPropdef::empty_init for AExternMethPropdef");
-  return self;
-}
-val_t NEW_AExternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AExternMethPropdef();
-  parser_prod___AMethPropdef___init_amethpropdef(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_AExternMethPropdef(self, "parser_prod::AMethPropdef::init_amethpropdef for AExternMethPropdef");
-  return self;
-}
-val_t NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AExternMethPropdef();
-  parser_prod___AExternMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AExternMethPropdef(self, "parser_prod::AExternMethPropdef::empty_init for AExternMethPropdef");
-  return self;
-}
-val_t NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AExternMethPropdef();
-  parser_prod___AExternMethPropdef___init_aexternmethpropdef(self, p0, p1, p2, p3, p4, p5, p6, init_table);
-  CHECKNEW_AExternMethPropdef(self, "parser_prod::AExternMethPropdef::init_aexternmethpropdef for AExternMethPropdef");
-  return self;
-}
-const classtable_elt_t VFT_AConcreteMethPropdef[104] = {
-  {(bigint) 4527 /* 0: Identity */},
-  {(bigint) 3 /* 1: AConcreteMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AConcreteMethPropdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AConcreteMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3811 /* 4: AConcreteMethPropdef < PPropdef: superclass typecheck marker */},
-  {(bigint) 4227 /* 5: AConcreteMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 4527 /* 6: AConcreteMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AConcreteMethPropdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AConcreteMethPropdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AConcreteMethPropdef___visit_all},
-  {(bigint) parser_prod___AConcreteMethPropdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AConcreteMethPropdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AConcreteMethPropdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AConcreteMethPropdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PPropdef___process_and_check},
-  {(bigint) mmbuilder___PPropdef___do_and_check_intro},
-  {(bigint) mmbuilder___PPropdef___inherit_signature},
-  {(bigint) mmbuilder___PPropdef___do_and_check_redef},
-  {(bigint) 3 /* 74: AConcreteMethPropdef < PPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___PPropdef___n_doc},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_doc__eq},
-  {(bigint) compiling_methods___AConcreteMethPropdef___do_compile_inside},
-  {(bigint) mmbuilder___AMethPropdef___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___AMethPropdef___method},
-  {(bigint) typing___AMethPropdef___self_var},
-  {(bigint) parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AConcreteMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_kwredef__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_visibility__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_methid__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_signature},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_signature__eq},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AMethPropdef___accept_typing},
-  {(bigint) parser_prod___AConcreteMethPropdef___empty_init},
-  {(bigint) parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 99: AConcreteMethPropdef < AConcreteMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AConcreteMethPropdef___n_kwmeth},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_kwmeth__eq},
-  {(bigint) parser_nodes___AConcreteMethPropdef___n_block},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_block__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AConcreteMethPropdef::_parent */
-/* 2: Attribute AConcreteMethPropdef::_first_token */
-/* 3: Attribute AConcreteMethPropdef::_last_token */
-/* 4: Attribute AConcreteMethPropdef::_n_doc */
-/* 5: Attribute AConcreteMethPropdef::_name */
-/* 6: Attribute AConcreteMethPropdef::_method */
-/* 7: Attribute AConcreteMethPropdef::_n_kwredef */
-/* 8: Attribute AConcreteMethPropdef::_n_visibility */
-/* 9: Attribute AConcreteMethPropdef::_n_methid */
-/* 10: Attribute AConcreteMethPropdef::_n_signature */
-/* 11: Attribute AConcreteMethPropdef::_self_var */
-/* 12: Attribute AConcreteMethPropdef::_n_kwmeth */
-/* 13: Attribute AConcreteMethPropdef::_n_block */
-val_t NEW_AConcreteMethPropdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_AConcreteMethPropdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PPropdef____n_doc(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_methid(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_signature(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AConcreteMethPropdef(val_t self, char *from) {
-}
-val_t NEW_AConcreteMethPropdef_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteMethPropdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AConcreteMethPropdef(self, "parser_nodes::PNode::init for AConcreteMethPropdef");
-  return self;
-}
-val_t NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteMethPropdef();
-  parser_prod___AMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AConcreteMethPropdef(self, "parser_prod::AMethPropdef::empty_init for AConcreteMethPropdef");
-  return self;
-}
-val_t NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteMethPropdef();
-  parser_prod___AMethPropdef___init_amethpropdef(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_AConcreteMethPropdef(self, "parser_prod::AMethPropdef::init_amethpropdef for AConcreteMethPropdef");
-  return self;
-}
-val_t NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteMethPropdef();
-  parser_prod___AConcreteMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AConcreteMethPropdef(self, "parser_prod::AConcreteMethPropdef::empty_init for AConcreteMethPropdef");
-  return self;
-}
-val_t NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteMethPropdef();
-  parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(self, p0, p1, p2, p3, p4, p5, p6, init_table);
-  CHECKNEW_AConcreteMethPropdef(self, "parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef for AConcreteMethPropdef");
-  return self;
-}
-const classtable_elt_t VFT_AConcreteInitPropdef[112] = {
-  {(bigint) 4583 /* 0: Identity */},
-  {(bigint) 3 /* 1: AConcreteInitPropdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AConcreteInitPropdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AConcreteInitPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3811 /* 4: AConcreteInitPropdef < PPropdef: superclass typecheck marker */},
-  {(bigint) 4227 /* 5: AConcreteInitPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 4527 /* 6: AConcreteInitPropdef < AConcreteMethPropdef: superclass typecheck marker */},
-  {(bigint) 4583 /* 7: AConcreteInitPropdef < AConcreteInitPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AConcreteInitPropdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AConcreteInitPropdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AConcreteInitPropdef___visit_all},
-  {(bigint) parser_prod___AConcreteInitPropdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AConcreteInitPropdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AConcreteInitPropdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AConcreteInitPropdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PPropdef___process_and_check},
-  {(bigint) mmbuilder___PPropdef___do_and_check_intro},
-  {(bigint) mmbuilder___PPropdef___inherit_signature},
-  {(bigint) mmbuilder___PPropdef___do_and_check_redef},
-  {(bigint) 3 /* 74: AConcreteInitPropdef < PPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___PPropdef___n_doc},
-  {(bigint) parser_prod___AConcreteInitPropdef___n_doc__eq},
-  {(bigint) compiling_methods___AConcreteMethPropdef___do_compile_inside},
-  {(bigint) mmbuilder___AMethPropdef___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___AMethPropdef___method},
-  {(bigint) typing___AMethPropdef___self_var},
-  {(bigint) parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AConcreteInitPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser_prod___AConcreteInitPropdef___n_kwredef__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser_prod___AConcreteInitPropdef___n_visibility__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser_prod___AConcreteInitPropdef___n_methid__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_signature},
-  {(bigint) parser_prod___AConcreteInitPropdef___n_signature__eq},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AMethPropdef___accept_typing},
-  {(bigint) parser_prod___AConcreteMethPropdef___empty_init},
-  {(bigint) parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 99: AConcreteInitPropdef < AConcreteMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AConcreteMethPropdef___n_kwmeth},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_kwmeth__eq},
-  {(bigint) parser_nodes___AConcreteMethPropdef___n_block},
-  {(bigint) parser_prod___AConcreteInitPropdef___n_block__eq},
-  {(bigint) typing___AConcreteInitPropdef___super_init_calls},
-  {(bigint) typing___AConcreteInitPropdef___explicit_super_init_calls},
-  {(bigint) typing___AConcreteMethPropdef___accept_typing},
-  {(bigint) parser_prod___AConcreteInitPropdef___empty_init},
-  {(bigint) parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef},
-  {(bigint) 6 /* 109: AConcreteInitPropdef < AConcreteInitPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AConcreteInitPropdef___n_kwinit},
-  {(bigint) parser_prod___AConcreteInitPropdef___n_kwinit__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AConcreteInitPropdef::_parent */
-/* 2: Attribute AConcreteInitPropdef::_first_token */
-/* 3: Attribute AConcreteInitPropdef::_last_token */
-/* 4: Attribute AConcreteInitPropdef::_n_doc */
-/* 5: Attribute AConcreteInitPropdef::_name */
-/* 6: Attribute AConcreteInitPropdef::_method */
-/* 7: Attribute AConcreteInitPropdef::_n_kwredef */
-/* 8: Attribute AConcreteInitPropdef::_n_visibility */
-/* 9: Attribute AConcreteInitPropdef::_n_methid */
-/* 10: Attribute AConcreteInitPropdef::_n_signature */
-/* 11: Attribute AConcreteInitPropdef::_self_var */
-/* 12: Attribute AConcreteInitPropdef::_n_kwmeth */
-/* 13: Attribute AConcreteInitPropdef::_n_block */
-/* 14: Attribute AConcreteInitPropdef::_super_init_calls */
-/* 15: Attribute AConcreteInitPropdef::_explicit_super_init_calls */
-/* 16: Attribute AConcreteInitPropdef::_n_kwinit */
-val_t NEW_AConcreteInitPropdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 17);
-  obj->vft = (classtable_elt_t*)VFT_AConcreteInitPropdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PPropdef____n_doc(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_methid(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_signature(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___AConcreteInitPropdef____super_init_calls(obj) = NEW_Array_array___Array___init() /*new Array[MMMethod]*/;
-  ATTR_typing___AConcreteInitPropdef____explicit_super_init_calls(obj) = NEW_Array_array___Array___init() /*new Array[MMMethod]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AConcreteInitPropdef(val_t self, char *from) {
-}
-val_t NEW_AConcreteInitPropdef_parser_nodes___PNode___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteInitPropdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AConcreteInitPropdef(self, "parser_nodes::PNode::init for AConcreteInitPropdef");
-  return self;
-}
-val_t NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteInitPropdef();
-  parser_prod___AMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AConcreteInitPropdef(self, "parser_prod::AMethPropdef::empty_init for AConcreteInitPropdef");
-  return self;
-}
-val_t NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteInitPropdef();
-  parser_prod___AMethPropdef___init_amethpropdef(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_AConcreteInitPropdef(self, "parser_prod::AMethPropdef::init_amethpropdef for AConcreteInitPropdef");
-  return self;
-}
-val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteInitPropdef();
-  parser_prod___AConcreteMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AConcreteInitPropdef(self, "parser_prod::AConcreteMethPropdef::empty_init for AConcreteInitPropdef");
-  return self;
-}
-val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteInitPropdef();
-  parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(self, p0, p1, p2, p3, p4, p5, p6, init_table);
-  CHECKNEW_AConcreteInitPropdef(self, "parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef for AConcreteInitPropdef");
-  return self;
-}
-val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteInitPropdef();
-  parser_prod___AConcreteInitPropdef___empty_init(self, init_table);
-  CHECKNEW_AConcreteInitPropdef(self, "parser_prod::AConcreteInitPropdef::empty_init for AConcreteInitPropdef");
-  return self;
-}
-val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AConcreteInitPropdef();
-  parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(self, p0, p1, p2, p3, p4, p5, p6, init_table);
-  CHECKNEW_AConcreteInitPropdef(self, "parser_prod::AConcreteInitPropdef::init_aconcreteinitpropdef for AConcreteInitPropdef");
-  return self;
-}
-const classtable_elt_t VFT_AMainMethPropdef[107] = {
-  {(bigint) 4579 /* 0: Identity */},
-  {(bigint) 3 /* 1: AMainMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AMainMethPropdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AMainMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3811 /* 4: AMainMethPropdef < PPropdef: superclass typecheck marker */},
-  {(bigint) 4227 /* 5: AMainMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 4527 /* 6: AMainMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
-  {(bigint) 4579 /* 7: AMainMethPropdef < AMainMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AMainMethPropdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
-  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AMainMethPropdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AMainMethPropdef___visit_all},
-  {(bigint) parser_prod___AMainMethPropdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AMainMethPropdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AConcreteMethPropdef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AMainMethPropdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___AMainMethPropdef___process_and_check},
-  {(bigint) mmbuilder___PPropdef___do_and_check_intro},
-  {(bigint) mmbuilder___PPropdef___inherit_signature},
-  {(bigint) mmbuilder___PPropdef___do_and_check_redef},
-  {(bigint) 3 /* 74: AMainMethPropdef < PPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___PPropdef___n_doc},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_doc__eq},
-  {(bigint) compiling_methods___AConcreteMethPropdef___do_compile_inside},
-  {(bigint) mmbuilder___AMethPropdef___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___AMethPropdef___method},
-  {(bigint) typing___AMethPropdef___self_var},
-  {(bigint) parser_prod___AMethPropdef___empty_init},
-  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 86: AMainMethPropdef < AMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
-  {(bigint) parser_prod___AMainMethPropdef___n_kwredef__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_visibility},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_visibility__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_methid},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_methid__eq},
-  {(bigint) parser_nodes___AMethPropdef___n_signature},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_signature__eq},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AMethPropdef___accept_typing},
-  {(bigint) parser_prod___AConcreteMethPropdef___empty_init},
-  {(bigint) parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 99: AMainMethPropdef < AConcreteMethPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___AConcreteMethPropdef___n_kwmeth},
-  {(bigint) parser_prod___AConcreteMethPropdef___n_kwmeth__eq},
-  {(bigint) parser_nodes___AConcreteMethPropdef___n_block},
-  {(bigint) parser_prod___AMainMethPropdef___n_block__eq},
-  {(bigint) parser_prod___AMainMethPropdef___empty_init},
-  {(bigint) parser_prod___AMainMethPropdef___init_amainmethpropdef},
-  {(bigint) 6 /* 106: AMainMethPropdef < AMainMethPropdef: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AMainMethPropdef::_parent */
-/* 2: Attribute AMainMethPropdef::_first_token */
-/* 3: Attribute AMainMethPropdef::_last_token */
-/* 4: Attribute AMainMethPropdef::_n_doc */
-/* 5: Attribute AMainMethPropdef::_name */
-/* 6: Attribute AMainMethPropdef::_method */
-/* 7: Attribute AMainMethPropdef::_n_kwredef */
-/* 8: Attribute AMainMethPropdef::_n_visibility */
-/* 9: Attribute AMainMethPropdef::_n_methid */
-/* 10: Attribute AMainMethPropdef::_n_signature */
-/* 11: Attribute AMainMethPropdef::_self_var */
-/* 12: Attribute AMainMethPropdef::_n_kwmeth */
-/* 13: Attribute AMainMethPropdef::_n_block */
-val_t NEW_AMainMethPropdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_AMainMethPropdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PPropdef____n_doc(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_methid(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AMethPropdef____n_signature(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_kwmeth(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AConcreteMethPropdef____n_block(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AMainMethPropdef(val_t self, char *from) {
-}
-val_t NEW_AMainMethPropdef_parser_nodes___PNode___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMainMethPropdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AMainMethPropdef(self, "parser_nodes::PNode::init for AMainMethPropdef");
-  return self;
-}
-val_t NEW_AMainMethPropdef_parser_prod___AMethPropdef___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMainMethPropdef();
-  parser_prod___AMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AMainMethPropdef(self, "parser_prod::AMethPropdef::empty_init for AMainMethPropdef");
-  return self;
-}
-val_t NEW_AMainMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMainMethPropdef();
-  parser_prod___AMethPropdef___init_amethpropdef(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_AMainMethPropdef(self, "parser_prod::AMethPropdef::init_amethpropdef for AMainMethPropdef");
-  return self;
-}
-val_t NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMainMethPropdef();
-  parser_prod___AConcreteMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AMainMethPropdef(self, "parser_prod::AConcreteMethPropdef::empty_init for AMainMethPropdef");
-  return self;
-}
-val_t NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMainMethPropdef();
-  parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(self, p0, p1, p2, p3, p4, p5, p6, init_table);
-  CHECKNEW_AMainMethPropdef(self, "parser_prod::AConcreteMethPropdef::init_aconcretemethpropdef for AMainMethPropdef");
-  return self;
-}
-val_t NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMainMethPropdef();
-  parser_prod___AMainMethPropdef___empty_init(self, init_table);
-  CHECKNEW_AMainMethPropdef(self, "parser_prod::AMainMethPropdef::empty_init for AMainMethPropdef");
-  return self;
-}
-val_t NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t p0, val_t p1) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMainMethPropdef();
-  parser_prod___AMainMethPropdef___init_amainmethpropdef(self, p0, p1, init_table);
-  CHECKNEW_AMainMethPropdef(self, "parser_prod::AMainMethPropdef::init_amainmethpropdef for AMainMethPropdef");
-  return self;
-}
-const classtable_elt_t VFT_ATypePropdef[94] = {
-  {(bigint) 4099 /* 0: Identity */},
-  {(bigint) 3 /* 1: ATypePropdef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ATypePropdef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ATypePropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3811 /* 4: ATypePropdef < PPropdef: superclass typecheck marker */},
-  {(bigint) 4099 /* 5: ATypePropdef < ATypePropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ATypePropdef < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___ATypePropdef___accept_property_builder},
-  {(bigint) mmbuilder___ATypePropdef___accept_property_verifier},
-  {(bigint) mmbuilder___ATypePropdef___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ATypePropdef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ATypePropdef___visit_all},
-  {(bigint) parser_prod___ATypePropdef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ATypePropdef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ATypePropdef < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PPropdef___process_and_check},
-  {(bigint) mmbuilder___PPropdef___do_and_check_intro},
-  {(bigint) mmbuilder___PPropdef___inherit_signature},
-  {(bigint) mmbuilder___PPropdef___do_and_check_redef},
-  {(bigint) 3 /* 74: ATypePropdef < PPropdef: superclass init_table position */},
-  {(bigint) parser_nodes___PPropdef___n_doc},
-  {(bigint) parser_prod___ATypePropdef___n_doc__eq},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) mmbuilder___ATypePropdef___prop},
-  {(bigint) parser_prod___ATypePropdef___empty_init},
-  {(bigint) parser_prod___ATypePropdef___init_atypepropdef},
-  {(bigint) 4 /* 83: ATypePropdef < ATypePropdef: superclass init_table position */},
-  {(bigint) parser_nodes___ATypePropdef___n_kwredef},
-  {(bigint) parser_prod___ATypePropdef___n_kwredef__eq},
-  {(bigint) parser_nodes___ATypePropdef___n_visibility},
-  {(bigint) parser_prod___ATypePropdef___n_visibility__eq},
-  {(bigint) parser_nodes___ATypePropdef___n_kwtype},
-  {(bigint) parser_prod___ATypePropdef___n_kwtype__eq},
-  {(bigint) parser_nodes___ATypePropdef___n_id},
-  {(bigint) parser_prod___ATypePropdef___n_id__eq},
-  {(bigint) parser_nodes___ATypePropdef___n_type},
-  {(bigint) parser_prod___ATypePropdef___n_type__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ATypePropdef::_parent */
-/* 2: Attribute ATypePropdef::_first_token */
-/* 3: Attribute ATypePropdef::_last_token */
-/* 4: Attribute ATypePropdef::_n_doc */
-/* 5: Attribute ATypePropdef::_prop */
-/* 6: Attribute ATypePropdef::_n_kwredef */
-/* 7: Attribute ATypePropdef::_n_visibility */
-/* 8: Attribute ATypePropdef::_n_kwtype */
-/* 9: Attribute ATypePropdef::_n_id */
-/* 10: Attribute ATypePropdef::_n_type */
-val_t NEW_ATypePropdef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_ATypePropdef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PPropdef____n_doc(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ATypePropdef____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ATypePropdef____n_visibility(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ATypePropdef____n_kwtype(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ATypePropdef____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ATypePropdef____n_type(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ATypePropdef(val_t self, char *from) {
-}
-val_t NEW_ATypePropdef_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ATypePropdef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ATypePropdef(self, "parser_nodes::PNode::init for ATypePropdef");
-  return self;
-}
-val_t NEW_ATypePropdef_parser_prod___ATypePropdef___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ATypePropdef();
-  parser_prod___ATypePropdef___empty_init(self, init_table);
-  CHECKNEW_ATypePropdef(self, "parser_prod::ATypePropdef::empty_init for ATypePropdef");
-  return self;
-}
-val_t NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ATypePropdef();
-  parser_prod___ATypePropdef___init_atypepropdef(self, p0, p1, p2, p3, p4, p5, init_table);
-  CHECKNEW_ATypePropdef(self, "parser_prod::ATypePropdef::init_atypepropdef for ATypePropdef");
-  return self;
-}
-const classtable_elt_t VFT_AReadAble[78] = {
-  {(bigint) 4155 /* 0: Identity */},
-  {(bigint) 3 /* 1: AReadAble < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AReadAble < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AReadAble < Prod: superclass typecheck marker */},
-  {(bigint) 3867 /* 4: AReadAble < PAble: superclass typecheck marker */},
-  {(bigint) 4155 /* 5: AReadAble < AReadAble: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AReadAble < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AReadAble___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AReadAble___visit_all},
-  {(bigint) parser_prod___AReadAble___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AReadAble < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AReadAble < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: AReadAble < PAble: superclass init_table position */},
-  {(bigint) parser_nodes___PAble___n_kwredef},
-  {(bigint) parser_prod___AReadAble___n_kwredef__eq},
-  {(bigint) parser_prod___AReadAble___empty_init},
-  {(bigint) parser_prod___AReadAble___init_areadable},
-  {(bigint) 4 /* 75: AReadAble < AReadAble: superclass init_table position */},
-  {(bigint) parser_nodes___AReadAble___n_kwreadable},
-  {(bigint) parser_prod___AReadAble___n_kwreadable__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AReadAble::_parent */
-/* 2: Attribute AReadAble::_first_token */
-/* 3: Attribute AReadAble::_last_token */
-/* 4: Attribute AReadAble::_n_kwredef */
-/* 5: Attribute AReadAble::_n_kwreadable */
-val_t NEW_AReadAble(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AReadAble;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PAble____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReadAble____n_kwreadable(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AReadAble(val_t self, char *from) {
-}
-val_t NEW_AReadAble_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AReadAble();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AReadAble(self, "parser_nodes::PNode::init for AReadAble");
-  return self;
-}
-val_t NEW_AReadAble_parser_prod___AReadAble___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AReadAble();
-  parser_prod___AReadAble___empty_init(self, init_table);
-  CHECKNEW_AReadAble(self, "parser_prod::AReadAble::empty_init for AReadAble");
-  return self;
-}
-val_t NEW_AReadAble_parser_prod___AReadAble___init_areadable(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AReadAble();
-  parser_prod___AReadAble___init_areadable(self, p0, p1, init_table);
-  CHECKNEW_AReadAble(self, "parser_prod::AReadAble::init_areadable for AReadAble");
-  return self;
-}
-const classtable_elt_t VFT_AWriteAble[78] = {
-  {(bigint) 4083 /* 0: Identity */},
-  {(bigint) 3 /* 1: AWriteAble < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AWriteAble < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AWriteAble < Prod: superclass typecheck marker */},
-  {(bigint) 3867 /* 4: AWriteAble < PAble: superclass typecheck marker */},
-  {(bigint) 4083 /* 5: AWriteAble < AWriteAble: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AWriteAble < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AWriteAble___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AWriteAble___visit_all},
-  {(bigint) parser_prod___AWriteAble___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AWriteAble < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AWriteAble < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: AWriteAble < PAble: superclass init_table position */},
-  {(bigint) parser_nodes___PAble___n_kwredef},
-  {(bigint) parser_prod___AWriteAble___n_kwredef__eq},
-  {(bigint) parser_prod___AWriteAble___empty_init},
-  {(bigint) parser_prod___AWriteAble___init_awriteable},
-  {(bigint) 4 /* 75: AWriteAble < AWriteAble: superclass init_table position */},
-  {(bigint) parser_nodes___AWriteAble___n_kwwritable},
-  {(bigint) parser_prod___AWriteAble___n_kwwritable__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AWriteAble::_parent */
-/* 2: Attribute AWriteAble::_first_token */
-/* 3: Attribute AWriteAble::_last_token */
-/* 4: Attribute AWriteAble::_n_kwredef */
-/* 5: Attribute AWriteAble::_n_kwwritable */
-val_t NEW_AWriteAble(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AWriteAble;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PAble____n_kwredef(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AWriteAble____n_kwwritable(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AWriteAble(val_t self, char *from) {
-}
-val_t NEW_AWriteAble_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AWriteAble();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AWriteAble(self, "parser_nodes::PNode::init for AWriteAble");
-  return self;
-}
-val_t NEW_AWriteAble_parser_prod___AWriteAble___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AWriteAble();
-  parser_prod___AWriteAble___empty_init(self, init_table);
-  CHECKNEW_AWriteAble(self, "parser_prod::AWriteAble::empty_init for AWriteAble");
-  return self;
-}
-val_t NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AWriteAble();
-  parser_prod___AWriteAble___init_awriteable(self, p0, p1, init_table);
-  CHECKNEW_AWriteAble(self, "parser_prod::AWriteAble::init_awriteable for AWriteAble");
-  return self;
-}
-const classtable_elt_t VFT_AIdMethid[78] = {
-  {(bigint) 4267 /* 0: Identity */},
-  {(bigint) 3 /* 1: AIdMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AIdMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AIdMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: AIdMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4267 /* 5: AIdMethid < AIdMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AIdMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AIdMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AIdMethid___visit_all},
-  {(bigint) parser_prod___AIdMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AIdMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AIdMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: AIdMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___AIdMethid___empty_init},
-  {(bigint) parser_prod___AIdMethid___init_aidmethid},
-  {(bigint) 4 /* 75: AIdMethid < AIdMethid: superclass init_table position */},
-  {(bigint) parser_nodes___AIdMethid___n_id},
-  {(bigint) parser_prod___AIdMethid___n_id__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AIdMethid::_parent */
-/* 2: Attribute AIdMethid::_first_token */
-/* 3: Attribute AIdMethid::_last_token */
-/* 4: Attribute AIdMethid::_name */
-/* 5: Attribute AIdMethid::_n_id */
-val_t NEW_AIdMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AIdMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AIdMethid____n_id(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AIdMethid(val_t self, char *from) {
-}
-val_t NEW_AIdMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIdMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AIdMethid(self, "parser_nodes::PNode::init for AIdMethid");
-  return self;
-}
-val_t NEW_AIdMethid_parser_prod___AIdMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIdMethid();
-  parser_prod___AIdMethid___empty_init(self, init_table);
-  CHECKNEW_AIdMethid(self, "parser_prod::AIdMethid::empty_init for AIdMethid");
-  return self;
-}
-val_t NEW_AIdMethid_parser_prod___AIdMethid___init_aidmethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIdMethid();
-  parser_prod___AIdMethid___init_aidmethid(self, p0, init_table);
-  CHECKNEW_AIdMethid(self, "parser_prod::AIdMethid::init_aidmethid for AIdMethid");
-  return self;
-}
-const classtable_elt_t VFT_APlusMethid[78] = {
-  {(bigint) 4183 /* 0: Identity */},
-  {(bigint) 3 /* 1: APlusMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: APlusMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: APlusMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: APlusMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4183 /* 5: APlusMethid < APlusMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: APlusMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___APlusMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___APlusMethid___visit_all},
-  {(bigint) parser_prod___APlusMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: APlusMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: APlusMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: APlusMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___APlusMethid___empty_init},
-  {(bigint) parser_prod___APlusMethid___init_aplusmethid},
-  {(bigint) 4 /* 75: APlusMethid < APlusMethid: superclass init_table position */},
-  {(bigint) parser_nodes___APlusMethid___n_plus},
-  {(bigint) parser_prod___APlusMethid___n_plus__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute APlusMethid::_parent */
-/* 2: Attribute APlusMethid::_first_token */
-/* 3: Attribute APlusMethid::_last_token */
-/* 4: Attribute APlusMethid::_name */
-/* 5: Attribute APlusMethid::_n_plus */
-val_t NEW_APlusMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_APlusMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___APlusMethid____n_plus(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_APlusMethid(val_t self, char *from) {
-}
-val_t NEW_APlusMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APlusMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_APlusMethid(self, "parser_nodes::PNode::init for APlusMethid");
-  return self;
-}
-val_t NEW_APlusMethid_parser_prod___APlusMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APlusMethid();
-  parser_prod___APlusMethid___empty_init(self, init_table);
-  CHECKNEW_APlusMethid(self, "parser_prod::APlusMethid::empty_init for APlusMethid");
-  return self;
-}
-val_t NEW_APlusMethid_parser_prod___APlusMethid___init_aplusmethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APlusMethid();
-  parser_prod___APlusMethid___init_aplusmethid(self, p0, init_table);
-  CHECKNEW_APlusMethid(self, "parser_prod::APlusMethid::init_aplusmethid for APlusMethid");
-  return self;
-}
-const classtable_elt_t VFT_AMinusMethid[78] = {
-  {(bigint) 4219 /* 0: Identity */},
-  {(bigint) 3 /* 1: AMinusMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AMinusMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AMinusMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: AMinusMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4219 /* 5: AMinusMethid < AMinusMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AMinusMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AMinusMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AMinusMethid___visit_all},
-  {(bigint) parser_prod___AMinusMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AMinusMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AMinusMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: AMinusMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___AMinusMethid___empty_init},
-  {(bigint) parser_prod___AMinusMethid___init_aminusmethid},
-  {(bigint) 4 /* 75: AMinusMethid < AMinusMethid: superclass init_table position */},
-  {(bigint) parser_nodes___AMinusMethid___n_minus},
-  {(bigint) parser_prod___AMinusMethid___n_minus__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AMinusMethid::_parent */
-/* 2: Attribute AMinusMethid::_first_token */
-/* 3: Attribute AMinusMethid::_last_token */
-/* 4: Attribute AMinusMethid::_name */
-/* 5: Attribute AMinusMethid::_n_minus */
-val_t NEW_AMinusMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AMinusMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AMinusMethid____n_minus(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AMinusMethid(val_t self, char *from) {
-}
-val_t NEW_AMinusMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AMinusMethid(self, "parser_nodes::PNode::init for AMinusMethid");
-  return self;
-}
-val_t NEW_AMinusMethid_parser_prod___AMinusMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusMethid();
-  parser_prod___AMinusMethid___empty_init(self, init_table);
-  CHECKNEW_AMinusMethid(self, "parser_prod::AMinusMethid::empty_init for AMinusMethid");
-  return self;
-}
-val_t NEW_AMinusMethid_parser_prod___AMinusMethid___init_aminusmethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusMethid();
-  parser_prod___AMinusMethid___init_aminusmethid(self, p0, init_table);
-  CHECKNEW_AMinusMethid(self, "parser_prod::AMinusMethid::init_aminusmethid for AMinusMethid");
-  return self;
-}
-const classtable_elt_t VFT_AStarMethid[78] = {
-  {(bigint) 4131 /* 0: Identity */},
-  {(bigint) 3 /* 1: AStarMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AStarMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AStarMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: AStarMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4131 /* 5: AStarMethid < AStarMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AStarMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AStarMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AStarMethid___visit_all},
-  {(bigint) parser_prod___AStarMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AStarMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AStarMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: AStarMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___AStarMethid___empty_init},
-  {(bigint) parser_prod___AStarMethid___init_astarmethid},
-  {(bigint) 4 /* 75: AStarMethid < AStarMethid: superclass init_table position */},
-  {(bigint) parser_nodes___AStarMethid___n_star},
-  {(bigint) parser_prod___AStarMethid___n_star__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AStarMethid::_parent */
-/* 2: Attribute AStarMethid::_first_token */
-/* 3: Attribute AStarMethid::_last_token */
-/* 4: Attribute AStarMethid::_name */
-/* 5: Attribute AStarMethid::_n_star */
-val_t NEW_AStarMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AStarMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AStarMethid____n_star(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AStarMethid(val_t self, char *from) {
-}
-val_t NEW_AStarMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AStarMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AStarMethid(self, "parser_nodes::PNode::init for AStarMethid");
-  return self;
-}
-val_t NEW_AStarMethid_parser_prod___AStarMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AStarMethid();
-  parser_prod___AStarMethid___empty_init(self, init_table);
-  CHECKNEW_AStarMethid(self, "parser_prod::AStarMethid::empty_init for AStarMethid");
-  return self;
-}
-val_t NEW_AStarMethid_parser_prod___AStarMethid___init_astarmethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AStarMethid();
-  parser_prod___AStarMethid___init_astarmethid(self, p0, init_table);
-  CHECKNEW_AStarMethid(self, "parser_prod::AStarMethid::init_astarmethid for AStarMethid");
-  return self;
-}
-const classtable_elt_t VFT_ASlashMethid[78] = {
-  {(bigint) 4135 /* 0: Identity */},
-  {(bigint) 3 /* 1: ASlashMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ASlashMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ASlashMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: ASlashMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4135 /* 5: ASlashMethid < ASlashMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ASlashMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ASlashMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ASlashMethid___visit_all},
-  {(bigint) parser_prod___ASlashMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ASlashMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ASlashMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: ASlashMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___ASlashMethid___empty_init},
-  {(bigint) parser_prod___ASlashMethid___init_aslashmethid},
-  {(bigint) 4 /* 75: ASlashMethid < ASlashMethid: superclass init_table position */},
-  {(bigint) parser_nodes___ASlashMethid___n_slash},
-  {(bigint) parser_prod___ASlashMethid___n_slash__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ASlashMethid::_parent */
-/* 2: Attribute ASlashMethid::_first_token */
-/* 3: Attribute ASlashMethid::_last_token */
-/* 4: Attribute ASlashMethid::_name */
-/* 5: Attribute ASlashMethid::_n_slash */
-val_t NEW_ASlashMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_ASlashMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASlashMethid____n_slash(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ASlashMethid(val_t self, char *from) {
-}
-val_t NEW_ASlashMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASlashMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ASlashMethid(self, "parser_nodes::PNode::init for ASlashMethid");
-  return self;
-}
-val_t NEW_ASlashMethid_parser_prod___ASlashMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASlashMethid();
-  parser_prod___ASlashMethid___empty_init(self, init_table);
-  CHECKNEW_ASlashMethid(self, "parser_prod::ASlashMethid::empty_init for ASlashMethid");
-  return self;
-}
-val_t NEW_ASlashMethid_parser_prod___ASlashMethid___init_aslashmethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASlashMethid();
-  parser_prod___ASlashMethid___init_aslashmethid(self, p0, init_table);
-  CHECKNEW_ASlashMethid(self, "parser_prod::ASlashMethid::init_aslashmethid for ASlashMethid");
-  return self;
-}
-const classtable_elt_t VFT_APercentMethid[78] = {
-  {(bigint) 4191 /* 0: Identity */},
-  {(bigint) 3 /* 1: APercentMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: APercentMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: APercentMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: APercentMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4191 /* 5: APercentMethid < APercentMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: APercentMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___APercentMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___APercentMethid___visit_all},
-  {(bigint) parser_prod___APercentMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: APercentMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: APercentMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: APercentMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___APercentMethid___empty_init},
-  {(bigint) parser_prod___APercentMethid___init_apercentmethid},
-  {(bigint) 4 /* 75: APercentMethid < APercentMethid: superclass init_table position */},
-  {(bigint) parser_nodes___APercentMethid___n_percent},
-  {(bigint) parser_prod___APercentMethid___n_percent__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute APercentMethid::_parent */
-/* 2: Attribute APercentMethid::_first_token */
-/* 3: Attribute APercentMethid::_last_token */
-/* 4: Attribute APercentMethid::_name */
-/* 5: Attribute APercentMethid::_n_percent */
-val_t NEW_APercentMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_APercentMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___APercentMethid____n_percent(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_APercentMethid(val_t self, char *from) {
-}
-val_t NEW_APercentMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APercentMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_APercentMethid(self, "parser_nodes::PNode::init for APercentMethid");
-  return self;
-}
-val_t NEW_APercentMethid_parser_prod___APercentMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APercentMethid();
-  parser_prod___APercentMethid___empty_init(self, init_table);
-  CHECKNEW_APercentMethid(self, "parser_prod::APercentMethid::empty_init for APercentMethid");
-  return self;
-}
-val_t NEW_APercentMethid_parser_prod___APercentMethid___init_apercentmethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APercentMethid();
-  parser_prod___APercentMethid___init_apercentmethid(self, p0, init_table);
-  CHECKNEW_APercentMethid(self, "parser_prod::APercentMethid::init_apercentmethid for APercentMethid");
-  return self;
-}
-const classtable_elt_t VFT_AEqMethid[78] = {
-  {(bigint) 4287 /* 0: Identity */},
-  {(bigint) 3 /* 1: AEqMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AEqMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AEqMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: AEqMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4287 /* 5: AEqMethid < AEqMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AEqMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AEqMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AEqMethid___visit_all},
-  {(bigint) parser_prod___AEqMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AEqMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AEqMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: AEqMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___AEqMethid___empty_init},
-  {(bigint) parser_prod___AEqMethid___init_aeqmethid},
-  {(bigint) 4 /* 75: AEqMethid < AEqMethid: superclass init_table position */},
-  {(bigint) parser_nodes___AEqMethid___n_eq},
-  {(bigint) parser_prod___AEqMethid___n_eq__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AEqMethid::_parent */
-/* 2: Attribute AEqMethid::_first_token */
-/* 3: Attribute AEqMethid::_last_token */
-/* 4: Attribute AEqMethid::_name */
-/* 5: Attribute AEqMethid::_n_eq */
-val_t NEW_AEqMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AEqMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AEqMethid____n_eq(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AEqMethid(val_t self, char *from) {
-}
-val_t NEW_AEqMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AEqMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AEqMethid(self, "parser_nodes::PNode::init for AEqMethid");
-  return self;
-}
-val_t NEW_AEqMethid_parser_prod___AEqMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AEqMethid();
-  parser_prod___AEqMethid___empty_init(self, init_table);
-  CHECKNEW_AEqMethid(self, "parser_prod::AEqMethid::empty_init for AEqMethid");
-  return self;
-}
-val_t NEW_AEqMethid_parser_prod___AEqMethid___init_aeqmethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AEqMethid();
-  parser_prod___AEqMethid___init_aeqmethid(self, p0, init_table);
-  CHECKNEW_AEqMethid(self, "parser_prod::AEqMethid::init_aeqmethid for AEqMethid");
-  return self;
-}
-const classtable_elt_t VFT_ANeMethid[78] = {
-  {(bigint) 4211 /* 0: Identity */},
-  {(bigint) 3 /* 1: ANeMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ANeMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ANeMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: ANeMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4211 /* 5: ANeMethid < ANeMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ANeMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ANeMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ANeMethid___visit_all},
-  {(bigint) parser_prod___ANeMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ANeMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ANeMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: ANeMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___ANeMethid___empty_init},
-  {(bigint) parser_prod___ANeMethid___init_anemethid},
-  {(bigint) 4 /* 75: ANeMethid < ANeMethid: superclass init_table position */},
-  {(bigint) parser_nodes___ANeMethid___n_ne},
-  {(bigint) parser_prod___ANeMethid___n_ne__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ANeMethid::_parent */
-/* 2: Attribute ANeMethid::_first_token */
-/* 3: Attribute ANeMethid::_last_token */
-/* 4: Attribute ANeMethid::_name */
-/* 5: Attribute ANeMethid::_n_ne */
-val_t NEW_ANeMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_ANeMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ANeMethid____n_ne(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ANeMethid(val_t self, char *from) {
-}
-val_t NEW_ANeMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ANeMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ANeMethid(self, "parser_nodes::PNode::init for ANeMethid");
-  return self;
-}
-val_t NEW_ANeMethid_parser_prod___ANeMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ANeMethid();
-  parser_prod___ANeMethid___empty_init(self, init_table);
-  CHECKNEW_ANeMethid(self, "parser_prod::ANeMethid::empty_init for ANeMethid");
-  return self;
-}
-val_t NEW_ANeMethid_parser_prod___ANeMethid___init_anemethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ANeMethid();
-  parser_prod___ANeMethid___init_anemethid(self, p0, init_table);
-  CHECKNEW_ANeMethid(self, "parser_prod::ANeMethid::init_anemethid for ANeMethid");
-  return self;
-}
-const classtable_elt_t VFT_ALeMethid[78] = {
-  {(bigint) 4239 /* 0: Identity */},
-  {(bigint) 3 /* 1: ALeMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ALeMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ALeMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: ALeMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4239 /* 5: ALeMethid < ALeMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ALeMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ALeMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ALeMethid___visit_all},
-  {(bigint) parser_prod___ALeMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ALeMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ALeMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: ALeMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___ALeMethid___empty_init},
-  {(bigint) parser_prod___ALeMethid___init_alemethid},
-  {(bigint) 4 /* 75: ALeMethid < ALeMethid: superclass init_table position */},
-  {(bigint) parser_nodes___ALeMethid___n_le},
-  {(bigint) parser_prod___ALeMethid___n_le__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ALeMethid::_parent */
-/* 2: Attribute ALeMethid::_first_token */
-/* 3: Attribute ALeMethid::_last_token */
-/* 4: Attribute ALeMethid::_name */
-/* 5: Attribute ALeMethid::_n_le */
-val_t NEW_ALeMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_ALeMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ALeMethid____n_le(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ALeMethid(val_t self, char *from) {
-}
-val_t NEW_ALeMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ALeMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ALeMethid(self, "parser_nodes::PNode::init for ALeMethid");
-  return self;
-}
-val_t NEW_ALeMethid_parser_prod___ALeMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ALeMethid();
-  parser_prod___ALeMethid___empty_init(self, init_table);
-  CHECKNEW_ALeMethid(self, "parser_prod::ALeMethid::empty_init for ALeMethid");
-  return self;
-}
-val_t NEW_ALeMethid_parser_prod___ALeMethid___init_alemethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ALeMethid();
-  parser_prod___ALeMethid___init_alemethid(self, p0, init_table);
-  CHECKNEW_ALeMethid(self, "parser_prod::ALeMethid::init_alemethid for ALeMethid");
-  return self;
-}
-const classtable_elt_t VFT_AGeMethid[78] = {
-  {(bigint) 4275 /* 0: Identity */},
-  {(bigint) 3 /* 1: AGeMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AGeMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AGeMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: AGeMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4275 /* 5: AGeMethid < AGeMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AGeMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AGeMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AGeMethid___visit_all},
-  {(bigint) parser_prod___AGeMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AGeMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AGeMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: AGeMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___AGeMethid___empty_init},
-  {(bigint) parser_prod___AGeMethid___init_agemethid},
-  {(bigint) 4 /* 75: AGeMethid < AGeMethid: superclass init_table position */},
-  {(bigint) parser_nodes___AGeMethid___n_ge},
-  {(bigint) parser_prod___AGeMethid___n_ge__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AGeMethid::_parent */
-/* 2: Attribute AGeMethid::_first_token */
-/* 3: Attribute AGeMethid::_last_token */
-/* 4: Attribute AGeMethid::_name */
-/* 5: Attribute AGeMethid::_n_ge */
-val_t NEW_AGeMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AGeMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AGeMethid____n_ge(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AGeMethid(val_t self, char *from) {
-}
-val_t NEW_AGeMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AGeMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AGeMethid(self, "parser_nodes::PNode::init for AGeMethid");
-  return self;
-}
-val_t NEW_AGeMethid_parser_prod___AGeMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AGeMethid();
-  parser_prod___AGeMethid___empty_init(self, init_table);
-  CHECKNEW_AGeMethid(self, "parser_prod::AGeMethid::empty_init for AGeMethid");
-  return self;
-}
-val_t NEW_AGeMethid_parser_prod___AGeMethid___init_agemethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AGeMethid();
-  parser_prod___AGeMethid___init_agemethid(self, p0, init_table);
-  CHECKNEW_AGeMethid(self, "parser_prod::AGeMethid::init_agemethid for AGeMethid");
-  return self;
-}
-const classtable_elt_t VFT_ALtMethid[78] = {
-  {(bigint) 4235 /* 0: Identity */},
-  {(bigint) 3 /* 1: ALtMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ALtMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ALtMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: ALtMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4235 /* 5: ALtMethid < ALtMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ALtMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ALtMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ALtMethid___visit_all},
-  {(bigint) parser_prod___ALtMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ALtMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ALtMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: ALtMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___ALtMethid___empty_init},
-  {(bigint) parser_prod___ALtMethid___init_altmethid},
-  {(bigint) 4 /* 75: ALtMethid < ALtMethid: superclass init_table position */},
-  {(bigint) parser_nodes___ALtMethid___n_lt},
-  {(bigint) parser_prod___ALtMethid___n_lt__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ALtMethid::_parent */
-/* 2: Attribute ALtMethid::_first_token */
-/* 3: Attribute ALtMethid::_last_token */
-/* 4: Attribute ALtMethid::_name */
-/* 5: Attribute ALtMethid::_n_lt */
-val_t NEW_ALtMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_ALtMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ALtMethid____n_lt(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ALtMethid(val_t self, char *from) {
-}
-val_t NEW_ALtMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ALtMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ALtMethid(self, "parser_nodes::PNode::init for ALtMethid");
-  return self;
-}
-val_t NEW_ALtMethid_parser_prod___ALtMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ALtMethid();
-  parser_prod___ALtMethid___empty_init(self, init_table);
-  CHECKNEW_ALtMethid(self, "parser_prod::ALtMethid::empty_init for ALtMethid");
-  return self;
-}
-val_t NEW_ALtMethid_parser_prod___ALtMethid___init_altmethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ALtMethid();
-  parser_prod___ALtMethid___init_altmethid(self, p0, init_table);
-  CHECKNEW_ALtMethid(self, "parser_prod::ALtMethid::init_altmethid for ALtMethid");
-  return self;
-}
-const classtable_elt_t VFT_AGtMethid[78] = {
-  {(bigint) 4271 /* 0: Identity */},
-  {(bigint) 3 /* 1: AGtMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AGtMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AGtMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: AGtMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4271 /* 5: AGtMethid < AGtMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AGtMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AGtMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AGtMethid___visit_all},
-  {(bigint) parser_prod___AGtMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AGtMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AGtMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: AGtMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___AGtMethid___empty_init},
-  {(bigint) parser_prod___AGtMethid___init_agtmethid},
-  {(bigint) 4 /* 75: AGtMethid < AGtMethid: superclass init_table position */},
-  {(bigint) parser_nodes___AGtMethid___n_gt},
-  {(bigint) parser_prod___AGtMethid___n_gt__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AGtMethid::_parent */
-/* 2: Attribute AGtMethid::_first_token */
-/* 3: Attribute AGtMethid::_last_token */
-/* 4: Attribute AGtMethid::_name */
-/* 5: Attribute AGtMethid::_n_gt */
-val_t NEW_AGtMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AGtMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AGtMethid____n_gt(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AGtMethid(val_t self, char *from) {
-}
-val_t NEW_AGtMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AGtMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AGtMethid(self, "parser_nodes::PNode::init for AGtMethid");
-  return self;
-}
-val_t NEW_AGtMethid_parser_prod___AGtMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AGtMethid();
-  parser_prod___AGtMethid___empty_init(self, init_table);
-  CHECKNEW_AGtMethid(self, "parser_prod::AGtMethid::empty_init for AGtMethid");
-  return self;
-}
-val_t NEW_AGtMethid_parser_prod___AGtMethid___init_agtmethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AGtMethid();
-  parser_prod___AGtMethid___init_agtmethid(self, p0, init_table);
-  CHECKNEW_AGtMethid(self, "parser_prod::AGtMethid::init_agtmethid for AGtMethid");
-  return self;
-}
-const classtable_elt_t VFT_ABraMethid[80] = {
-  {(bigint) 4335 /* 0: Identity */},
-  {(bigint) 3 /* 1: ABraMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ABraMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ABraMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: ABraMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4335 /* 5: ABraMethid < ABraMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ABraMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ABraMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ABraMethid___visit_all},
-  {(bigint) parser_prod___ABraMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ABraMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ABraMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: ABraMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___ABraMethid___empty_init},
-  {(bigint) parser_prod___ABraMethid___init_abramethid},
-  {(bigint) 4 /* 75: ABraMethid < ABraMethid: superclass init_table position */},
-  {(bigint) parser_nodes___ABraMethid___n_obra},
-  {(bigint) parser_prod___ABraMethid___n_obra__eq},
-  {(bigint) parser_nodes___ABraMethid___n_cbra},
-  {(bigint) parser_prod___ABraMethid___n_cbra__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ABraMethid::_parent */
-/* 2: Attribute ABraMethid::_first_token */
-/* 3: Attribute ABraMethid::_last_token */
-/* 4: Attribute ABraMethid::_name */
-/* 5: Attribute ABraMethid::_n_obra */
-/* 6: Attribute ABraMethid::_n_cbra */
-val_t NEW_ABraMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_ABraMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ABraMethid____n_obra(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABraMethid____n_cbra(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ABraMethid(val_t self, char *from) {
-}
-val_t NEW_ABraMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ABraMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ABraMethid(self, "parser_nodes::PNode::init for ABraMethid");
-  return self;
-}
-val_t NEW_ABraMethid_parser_prod___ABraMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ABraMethid();
-  parser_prod___ABraMethid___empty_init(self, init_table);
-  CHECKNEW_ABraMethid(self, "parser_prod::ABraMethid::empty_init for ABraMethid");
-  return self;
-}
-val_t NEW_ABraMethid_parser_prod___ABraMethid___init_abramethid(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ABraMethid();
-  parser_prod___ABraMethid___init_abramethid(self, p0, p1, init_table);
-  CHECKNEW_ABraMethid(self, "parser_prod::ABraMethid::init_abramethid for ABraMethid");
-  return self;
-}
-const classtable_elt_t VFT_AStarshipMethid[78] = {
-  {(bigint) 4127 /* 0: Identity */},
-  {(bigint) 3 /* 1: AStarshipMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AStarshipMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AStarshipMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: AStarshipMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4127 /* 5: AStarshipMethid < AStarshipMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AStarshipMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AStarshipMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AStarshipMethid___visit_all},
-  {(bigint) parser_prod___AStarshipMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AStarshipMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AStarshipMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: AStarshipMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___AStarshipMethid___empty_init},
-  {(bigint) parser_prod___AStarshipMethid___init_astarshipmethid},
-  {(bigint) 4 /* 75: AStarshipMethid < AStarshipMethid: superclass init_table position */},
-  {(bigint) parser_nodes___AStarshipMethid___n_starship},
-  {(bigint) parser_prod___AStarshipMethid___n_starship__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AStarshipMethid::_parent */
-/* 2: Attribute AStarshipMethid::_first_token */
-/* 3: Attribute AStarshipMethid::_last_token */
-/* 4: Attribute AStarshipMethid::_name */
-/* 5: Attribute AStarshipMethid::_n_starship */
-val_t NEW_AStarshipMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AStarshipMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AStarshipMethid____n_starship(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AStarshipMethid(val_t self, char *from) {
-}
-val_t NEW_AStarshipMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AStarshipMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AStarshipMethid(self, "parser_nodes::PNode::init for AStarshipMethid");
-  return self;
-}
-val_t NEW_AStarshipMethid_parser_prod___AStarshipMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AStarshipMethid();
-  parser_prod___AStarshipMethid___empty_init(self, init_table);
-  CHECKNEW_AStarshipMethid(self, "parser_prod::AStarshipMethid::empty_init for AStarshipMethid");
-  return self;
-}
-val_t NEW_AStarshipMethid_parser_prod___AStarshipMethid___init_astarshipmethid(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AStarshipMethid();
-  parser_prod___AStarshipMethid___init_astarshipmethid(self, p0, init_table);
-  CHECKNEW_AStarshipMethid(self, "parser_prod::AStarshipMethid::init_astarshipmethid for AStarshipMethid");
-  return self;
-}
-const classtable_elt_t VFT_AAssignMethid[80] = {
-  {(bigint) 4355 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAssignMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAssignMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAssignMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: AAssignMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4355 /* 5: AAssignMethid < AAssignMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAssignMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AAssignMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AAssignMethid___visit_all},
-  {(bigint) parser_prod___AAssignMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAssignMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAssignMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: AAssignMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___AAssignMethid___empty_init},
-  {(bigint) parser_prod___AAssignMethid___init_aassignmethid},
-  {(bigint) 4 /* 75: AAssignMethid < AAssignMethid: superclass init_table position */},
-  {(bigint) parser_nodes___AAssignMethid___n_id},
-  {(bigint) parser_prod___AAssignMethid___n_id__eq},
-  {(bigint) parser_nodes___AAssignMethid___n_assign},
-  {(bigint) parser_prod___AAssignMethid___n_assign__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AAssignMethid::_parent */
-/* 2: Attribute AAssignMethid::_first_token */
-/* 3: Attribute AAssignMethid::_last_token */
-/* 4: Attribute AAssignMethid::_name */
-/* 5: Attribute AAssignMethid::_n_id */
-/* 6: Attribute AAssignMethid::_n_assign */
-val_t NEW_AAssignMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_AAssignMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAssignMethid____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssignMethid____n_assign(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAssignMethid(val_t self, char *from) {
-}
-val_t NEW_AAssignMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAssignMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAssignMethid(self, "parser_nodes::PNode::init for AAssignMethid");
-  return self;
-}
-val_t NEW_AAssignMethid_parser_prod___AAssignMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAssignMethid();
-  parser_prod___AAssignMethid___empty_init(self, init_table);
-  CHECKNEW_AAssignMethid(self, "parser_prod::AAssignMethid::empty_init for AAssignMethid");
-  return self;
-}
-val_t NEW_AAssignMethid_parser_prod___AAssignMethid___init_aassignmethid(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAssignMethid();
-  parser_prod___AAssignMethid___init_aassignmethid(self, p0, p1, init_table);
-  CHECKNEW_AAssignMethid(self, "parser_prod::AAssignMethid::init_aassignmethid for AAssignMethid");
-  return self;
-}
-const classtable_elt_t VFT_ABraassignMethid[82] = {
-  {(bigint) 4331 /* 0: Identity */},
-  {(bigint) 3 /* 1: ABraassignMethid < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ABraassignMethid < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ABraassignMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3827 /* 4: ABraassignMethid < PMethid: superclass typecheck marker */},
-  {(bigint) 4331 /* 5: ABraassignMethid < ABraassignMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ABraassignMethid < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PMethid___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ABraassignMethid___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ABraassignMethid___visit_all},
-  {(bigint) parser_prod___ABraassignMethid___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ABraassignMethid < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ABraassignMethid < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PMethid___name},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) 3 /* 72: ABraassignMethid < PMethid: superclass init_table position */},
-  {(bigint) parser_prod___ABraassignMethid___empty_init},
-  {(bigint) parser_prod___ABraassignMethid___init_abraassignmethid},
-  {(bigint) 4 /* 75: ABraassignMethid < ABraassignMethid: superclass init_table position */},
-  {(bigint) parser_nodes___ABraassignMethid___n_obra},
-  {(bigint) parser_prod___ABraassignMethid___n_obra__eq},
-  {(bigint) parser_nodes___ABraassignMethid___n_cbra},
-  {(bigint) parser_prod___ABraassignMethid___n_cbra__eq},
-  {(bigint) parser_nodes___ABraassignMethid___n_assign},
-  {(bigint) parser_prod___ABraassignMethid___n_assign__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ABraassignMethid::_parent */
-/* 2: Attribute ABraassignMethid::_first_token */
-/* 3: Attribute ABraassignMethid::_last_token */
-/* 4: Attribute ABraassignMethid::_name */
-/* 5: Attribute ABraassignMethid::_n_obra */
-/* 6: Attribute ABraassignMethid::_n_cbra */
-/* 7: Attribute ABraassignMethid::_n_assign */
-val_t NEW_ABraassignMethid(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_ABraassignMethid;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ABraassignMethid____n_obra(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABraassignMethid____n_cbra(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABraassignMethid____n_assign(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ABraassignMethid(val_t self, char *from) {
-}
-val_t NEW_ABraassignMethid_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ABraassignMethid();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ABraassignMethid(self, "parser_nodes::PNode::init for ABraassignMethid");
-  return self;
-}
-val_t NEW_ABraassignMethid_parser_prod___ABraassignMethid___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ABraassignMethid();
-  parser_prod___ABraassignMethid___empty_init(self, init_table);
-  CHECKNEW_ABraassignMethid(self, "parser_prod::ABraassignMethid::empty_init for ABraassignMethid");
-  return self;
-}
-val_t NEW_ABraassignMethid_parser_prod___ABraassignMethid___init_abraassignmethid(val_t p0, val_t p1, val_t p2) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ABraassignMethid();
-  parser_prod___ABraassignMethid___init_abraassignmethid(self, p0, p1, p2, init_table);
-  CHECKNEW_ABraassignMethid(self, "parser_prod::ABraassignMethid::init_abraassignmethid for ABraassignMethid");
-  return self;
-}
-const classtable_elt_t VFT_ASignature[83] = {
-  {(bigint) 4139 /* 0: Identity */},
-  {(bigint) 3 /* 1: ASignature < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ASignature < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ASignature < Prod: superclass typecheck marker */},
-  {(bigint) 3803 /* 4: ASignature < PSignature: superclass typecheck marker */},
-  {(bigint) 4139 /* 5: ASignature < ASignature: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ASignature < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___ASignature___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ASignature___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ASignature___visit_all},
-  {(bigint) parser_prod___ASignature___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ASignature < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ASignature < Prod: superclass init_table position */},
-  {(bigint) compiling_methods___ASignature___compile_parameters},
-  {(bigint) mmbuilder___ASignature___check_visibility},
-  {(bigint) 3 /* 72: ASignature < PSignature: superclass init_table position */},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) parser_prod___ASignature___empty_init},
-  {(bigint) parser_prod___ASignature___init_asignature},
-  {(bigint) 4 /* 76: ASignature < ASignature: superclass init_table position */},
-  {(bigint) parser_nodes___ASignature___n_params},
-  {(bigint) parser_nodes___ASignature___n_params__eq},
-  {(bigint) parser_nodes___ASignature___n_type},
-  {(bigint) parser_prod___ASignature___n_type__eq},
-  {(bigint) parser_nodes___ASignature___n_closure_decls},
-  {(bigint) parser_nodes___ASignature___n_closure_decls__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ASignature::_parent */
-/* 2: Attribute ASignature::_first_token */
-/* 3: Attribute ASignature::_last_token */
-/* 4: Attribute ASignature::_n_params */
-/* 5: Attribute ASignature::_n_type */
-/* 6: Attribute ASignature::_n_closure_decls */
-val_t NEW_ASignature(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_ASignature;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASignature____n_params(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASignature____n_type(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASignature____n_closure_decls(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ASignature(val_t self, char *from) {
-}
-val_t NEW_ASignature_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASignature();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ASignature(self, "parser_nodes::PNode::init for ASignature");
-  return self;
-}
-val_t NEW_ASignature_parser_prod___ASignature___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASignature();
-  parser_prod___ASignature___empty_init(self, init_table);
-  CHECKNEW_ASignature(self, "parser_prod::ASignature::empty_init for ASignature");
-  return self;
-}
-val_t NEW_ASignature_parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val_t p2) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASignature();
-  parser_prod___ASignature___init_asignature(self, p0, p1, p2, init_table);
-  CHECKNEW_ASignature(self, "parser_prod::ASignature::init_asignature for ASignature");
-  return self;
-}
-const classtable_elt_t VFT_AParam[86] = {
-  {(bigint) 4195 /* 0: Identity */},
-  {(bigint) 3 /* 1: AParam < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AParam < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AParam < Prod: superclass typecheck marker */},
-  {(bigint) 3815 /* 4: AParam < PParam: superclass typecheck marker */},
-  {(bigint) 4195 /* 5: AParam < AParam: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AParam < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PParam___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AParam___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AParam___visit_all},
-  {(bigint) parser_prod___AParam___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AParam < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PParam___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AParam < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___PParam___stype},
-  {(bigint) mmbuilder___PParam___stype__eq},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) mmbuilder___AParam___is_vararg},
-  {(bigint) mmbuilder___PParam___position},
-  {(bigint) mmbuilder___PParam___variable},
-  {(bigint) 3 /* 76: AParam < PParam: superclass init_table position */},
-  {(bigint) parser_nodes___PParam___n_id},
-  {(bigint) parser_prod___AParam___n_id__eq},
-  {(bigint) parser_nodes___PParam___n_type},
-  {(bigint) parser_prod___AParam___n_type__eq},
-  {(bigint) parser_prod___AParam___empty_init},
-  {(bigint) parser_prod___AParam___init_aparam},
-  {(bigint) 4 /* 83: AParam < AParam: superclass init_table position */},
-  {(bigint) parser_nodes___AParam___n_dotdotdot},
-  {(bigint) parser_prod___AParam___n_dotdotdot__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AParam::_parent */
-/* 2: Attribute AParam::_first_token */
-/* 3: Attribute AParam::_last_token */
-/* 4: Attribute AParam::_position */
-/* 5: Attribute AParam::_variable */
-/* 6: Attribute AParam::_stype */
-/* 7: Attribute AParam::_n_id */
-/* 8: Attribute AParam::_n_type */
-/* 9: Attribute AParam::_n_dotdotdot */
-val_t NEW_AParam(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_AParam;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___PParam____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___PParam____n_type(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AParam____n_dotdotdot(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AParam(val_t self, char *from) {
-}
-val_t NEW_AParam_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AParam();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AParam(self, "parser_nodes::PNode::init for AParam");
-  return self;
-}
-val_t NEW_AParam_parser_prod___AParam___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AParam();
-  parser_prod___AParam___empty_init(self, init_table);
-  CHECKNEW_AParam(self, "parser_prod::AParam::empty_init for AParam");
-  return self;
-}
-val_t NEW_AParam_parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AParam();
-  parser_prod___AParam___init_aparam(self, p0, p1, p2, init_table);
-  CHECKNEW_AParam(self, "parser_prod::AParam::init_aparam for AParam");
-  return self;
-}
-const classtable_elt_t VFT_AClosureDecl[89] = {
-  {(bigint) 4315 /* 0: Identity */},
-  {(bigint) 3 /* 1: AClosureDecl < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AClosureDecl < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AClosureDecl < Prod: superclass typecheck marker */},
-  {(bigint) 3851 /* 4: AClosureDecl < PClosureDecl: superclass typecheck marker */},
-  {(bigint) 4315 /* 5: AClosureDecl < AClosureDecl: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AClosureDecl < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___AClosureDecl___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AClosureDecl___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AClosureDecl___visit_all},
-  {(bigint) parser_prod___AClosureDecl___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AClosureDecl < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AClosureDecl___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AClosureDecl < Prod: superclass init_table position */},
-  {(bigint) compiling_methods___AClosureDecl___do_compile_inside},
-  {(bigint) mmbuilder___AClosureDecl___variable},
-  {(bigint) 3 /* 72: AClosureDecl < PClosureDecl: superclass init_table position */},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) parser_prod___AClosureDecl___empty_init},
-  {(bigint) parser_prod___AClosureDecl___init_aclosuredecl},
-  {(bigint) 4 /* 76: AClosureDecl < AClosureDecl: superclass init_table position */},
-  {(bigint) parser_nodes___AClosureDecl___n_kwwith},
-  {(bigint) parser_prod___AClosureDecl___n_kwwith__eq},
-  {(bigint) parser_nodes___AClosureDecl___n_kwbreak},
-  {(bigint) parser_prod___AClosureDecl___n_kwbreak__eq},
-  {(bigint) parser_nodes___AClosureDecl___n_id},
-  {(bigint) parser_prod___AClosureDecl___n_id__eq},
-  {(bigint) parser_nodes___AClosureDecl___n_signature},
-  {(bigint) parser_prod___AClosureDecl___n_signature__eq},
-  {(bigint) parser_nodes___AClosureDecl___n_expr},
-  {(bigint) parser_prod___AClosureDecl___n_expr__eq},
-  {(bigint) typing___AClosureDecl___escapable},
-  {(bigint) typing___PNode___accept_typing},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AClosureDecl::_parent */
-/* 2: Attribute AClosureDecl::_first_token */
-/* 3: Attribute AClosureDecl::_last_token */
-/* 4: Attribute AClosureDecl::_variable */
-/* 5: Attribute AClosureDecl::_n_kwwith */
-/* 6: Attribute AClosureDecl::_n_kwbreak */
-/* 7: Attribute AClosureDecl::_n_id */
-/* 8: Attribute AClosureDecl::_n_signature */
-/* 9: Attribute AClosureDecl::_n_expr */
-/* 10: Attribute AClosureDecl::_escapable */
-val_t NEW_AClosureDecl(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AClosureDecl;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AClosureDecl____n_kwwith(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClosureDecl____n_kwbreak(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClosureDecl____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClosureDecl____n_signature(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClosureDecl____n_expr(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AClosureDecl(val_t self, char *from) {
-}
-val_t NEW_AClosureDecl_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AClosureDecl();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AClosureDecl(self, "parser_nodes::PNode::init for AClosureDecl");
-  return self;
-}
-val_t NEW_AClosureDecl_parser_prod___AClosureDecl___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AClosureDecl();
-  parser_prod___AClosureDecl___empty_init(self, init_table);
-  CHECKNEW_AClosureDecl(self, "parser_prod::AClosureDecl::empty_init for AClosureDecl");
-  return self;
-}
-val_t NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AClosureDecl();
-  parser_prod___AClosureDecl___init_aclosuredecl(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_AClosureDecl(self, "parser_prod::AClosureDecl::init_aclosuredecl for AClosureDecl");
-  return self;
-}
-const classtable_elt_t VFT_AType[86] = {
-  {(bigint) 4107 /* 0: Identity */},
-  {(bigint) 3 /* 1: AType < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AType < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AType < Prod: superclass typecheck marker */},
-  {(bigint) 3795 /* 4: AType < PType: superclass typecheck marker */},
-  {(bigint) 4107 /* 5: AType < AType: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AType < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AType___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AType___visit_all},
-  {(bigint) parser_prod___AType___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AType < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PType___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AType < Prod: superclass init_table position */},
-  {(bigint) mmbuilder___AType___check_visibility},
-  {(bigint) syntax_base___AType___get_local_class},
-  {(bigint) syntax_base___AType___get_stype},
-  {(bigint) syntax_base___AType___get_unchecked_stype},
-  {(bigint) syntax_base___AType___check_conform},
-  {(bigint) 3 /* 75: AType < PType: superclass init_table position */},
-  {(bigint) typing___PType___stype},
-  {(bigint) parser_prod___AType___empty_init},
-  {(bigint) parser_prod___AType___init_atype},
-  {(bigint) 4 /* 79: AType < AType: superclass init_table position */},
-  {(bigint) parser_nodes___AType___n_kwnullable},
-  {(bigint) parser_prod___AType___n_kwnullable__eq},
-  {(bigint) parser_nodes___AType___n_id},
-  {(bigint) parser_prod___AType___n_id__eq},
-  {(bigint) parser_nodes___AType___n_types},
-  {(bigint) parser_nodes___AType___n_types__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AType::_parent */
-/* 2: Attribute AType::_first_token */
-/* 3: Attribute AType::_last_token */
-/* 4: Attribute AType::_stype */
-/* 5: Attribute AType::_stype_cache */
-/* 6: Attribute AType::_stype_cached */
-/* 7: Attribute AType::_n_kwnullable */
-/* 8: Attribute AType::_n_id */
-/* 9: Attribute AType::_n_types */
-val_t NEW_AType(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_AType;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AType____n_kwnullable(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AType____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AType____n_types(obj) =  NIT_NULL /*null*/;
-  ATTR_syntax_base___AType____stype_cached(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AType(val_t self, char *from) {
-}
-val_t NEW_AType_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AType();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AType(self, "parser_nodes::PNode::init for AType");
-  return self;
-}
-val_t NEW_AType_parser_prod___AType___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AType();
-  parser_prod___AType___empty_init(self, init_table);
-  CHECKNEW_AType(self, "parser_prod::AType::empty_init for AType");
-  return self;
-}
-val_t NEW_AType_parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AType();
-  parser_prod___AType___init_atype(self, p0, p1, p2, init_table);
-  CHECKNEW_AType(self, "parser_prod::AType::init_atype for AType");
-  return self;
-}
-const classtable_elt_t VFT_ABlockExpr[91] = {
-  {(bigint) 4343 /* 0: Identity */},
-  {(bigint) 3 /* 1: ABlockExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ABlockExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ABlockExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: ABlockExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4343 /* 6: ABlockExpr < ABlockExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ABlockExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ABlockExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ABlockExpr___visit_all},
-  {(bigint) parser_prod___ABlockExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ABlockExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___ABlockExpr___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ABlockExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ABlockExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ABlockExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___ABlockExpr___empty_init},
-  {(bigint) parser_prod___ABlockExpr___init_ablockexpr},
-  {(bigint) 4 /* 88: ABlockExpr < ABlockExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABlockExpr___n_expr},
-  {(bigint) parser_nodes___ABlockExpr___n_expr__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ABlockExpr::_parent */
-/* 2: Attribute ABlockExpr::_first_token */
-/* 3: Attribute ABlockExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ABlockExpr::_is_typed */
-/* 6: Attribute ABlockExpr::_stype */
-/* 7: Attribute ABlockExpr::_if_true_variable_ctx */
-/* 8: Attribute ABlockExpr::_if_false_variable_ctx */
-/* 9: Attribute ABlockExpr::_n_expr */
-val_t NEW_ABlockExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_ABlockExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ABlockExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ABlockExpr(val_t self, char *from) {
-}
-val_t NEW_ABlockExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ABlockExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ABlockExpr(self, "parser_nodes::PNode::init for ABlockExpr");
-  return self;
-}
-val_t NEW_ABlockExpr_parser_prod___ABlockExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ABlockExpr();
-  parser_prod___ABlockExpr___empty_init(self, init_table);
-  CHECKNEW_ABlockExpr(self, "parser_prod::ABlockExpr::empty_init for ABlockExpr");
-  return self;
-}
-val_t NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ABlockExpr();
-  parser_prod___ABlockExpr___init_ablockexpr(self, p0, init_table);
-  CHECKNEW_ABlockExpr(self, "parser_prod::ABlockExpr::init_ablockexpr for ABlockExpr");
-  return self;
-}
-const classtable_elt_t VFT_AVardeclExpr[101] = {
-  {(bigint) 4087 /* 0: Identity */},
-  {(bigint) 3 /* 1: AVardeclExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AVardeclExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AVardeclExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AVardeclExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4087 /* 6: AVardeclExpr < AVardeclExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AVardeclExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AVardeclExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AVardeclExpr___visit_all},
-  {(bigint) parser_prod___AVardeclExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AVardeclExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AVardeclExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AVardeclExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___AVardeclExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AVardeclExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AVardeclExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) syntax_base___AVardeclExpr___variable},
-  {(bigint) syntax_base___AVardeclExpr___variable__eq},
-  {(bigint) parser_prod___AVardeclExpr___empty_init},
-  {(bigint) parser_prod___AVardeclExpr___init_avardeclexpr},
-  {(bigint) 4 /* 90: AVardeclExpr < AVardeclExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AVardeclExpr___n_kwvar},
-  {(bigint) parser_prod___AVardeclExpr___n_kwvar__eq},
-  {(bigint) parser_nodes___AVardeclExpr___n_id},
-  {(bigint) parser_prod___AVardeclExpr___n_id__eq},
-  {(bigint) parser_nodes___AVardeclExpr___n_type},
-  {(bigint) parser_prod___AVardeclExpr___n_type__eq},
-  {(bigint) parser_nodes___AVardeclExpr___n_assign},
-  {(bigint) parser_prod___AVardeclExpr___n_assign__eq},
-  {(bigint) parser_nodes___AVardeclExpr___n_expr},
-  {(bigint) parser_prod___AVardeclExpr___n_expr__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AVardeclExpr::_parent */
-/* 2: Attribute AVardeclExpr::_first_token */
-/* 3: Attribute AVardeclExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AVardeclExpr::_is_typed */
-/* 6: Attribute AVardeclExpr::_stype */
-/* 7: Attribute AVardeclExpr::_if_true_variable_ctx */
-/* 8: Attribute AVardeclExpr::_if_false_variable_ctx */
-/* 9: Attribute AVardeclExpr::_variable */
-/* 10: Attribute AVardeclExpr::_n_kwvar */
-/* 11: Attribute AVardeclExpr::_n_id */
-/* 12: Attribute AVardeclExpr::_n_type */
-/* 13: Attribute AVardeclExpr::_n_assign */
-/* 14: Attribute AVardeclExpr::_n_expr */
-val_t NEW_AVardeclExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 15);
-  obj->vft = (classtable_elt_t*)VFT_AVardeclExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AVardeclExpr____n_kwvar(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AVardeclExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AVardeclExpr____n_type(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AVardeclExpr____n_assign(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AVardeclExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AVardeclExpr(val_t self, char *from) {
-}
-val_t NEW_AVardeclExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AVardeclExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AVardeclExpr(self, "parser_nodes::PNode::init for AVardeclExpr");
-  return self;
-}
-val_t NEW_AVardeclExpr_parser_prod___AVardeclExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AVardeclExpr();
-  parser_prod___AVardeclExpr___empty_init(self, init_table);
-  CHECKNEW_AVardeclExpr(self, "parser_prod::AVardeclExpr::empty_init for AVardeclExpr");
-  return self;
-}
-val_t NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AVardeclExpr();
-  parser_prod___AVardeclExpr___init_avardeclexpr(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_AVardeclExpr(self, "parser_prod::AVardeclExpr::init_avardeclexpr for AVardeclExpr");
-  return self;
-}
-const classtable_elt_t VFT_AReturnExpr[93] = {
-  {(bigint) 4147 /* 0: Identity */},
-  {(bigint) 3 /* 1: AReturnExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AReturnExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AReturnExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AReturnExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4147 /* 6: AReturnExpr < AReturnExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AReturnExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AReturnExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AReturnExpr___visit_all},
-  {(bigint) parser_prod___AReturnExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AReturnExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AReturnExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AReturnExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AReturnExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AReturnExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AReturnExpr___empty_init},
-  {(bigint) parser_prod___AReturnExpr___init_areturnexpr},
-  {(bigint) 4 /* 88: AReturnExpr < AReturnExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AReturnExpr___n_kwreturn},
-  {(bigint) parser_prod___AReturnExpr___n_kwreturn__eq},
-  {(bigint) parser_nodes___AReturnExpr___n_expr},
-  {(bigint) parser_prod___AReturnExpr___n_expr__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AReturnExpr::_parent */
-/* 2: Attribute AReturnExpr::_first_token */
-/* 3: Attribute AReturnExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AReturnExpr::_is_typed */
-/* 6: Attribute AReturnExpr::_stype */
-/* 7: Attribute AReturnExpr::_if_true_variable_ctx */
-/* 8: Attribute AReturnExpr::_if_false_variable_ctx */
-/* 9: Attribute AReturnExpr::_n_kwreturn */
-/* 10: Attribute AReturnExpr::_n_expr */
-val_t NEW_AReturnExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AReturnExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AReturnExpr____n_kwreturn(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReturnExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AReturnExpr(val_t self, char *from) {
-}
-val_t NEW_AReturnExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AReturnExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AReturnExpr(self, "parser_nodes::PNode::init for AReturnExpr");
-  return self;
-}
-val_t NEW_AReturnExpr_parser_prod___AReturnExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AReturnExpr();
-  parser_prod___AReturnExpr___empty_init(self, init_table);
-  CHECKNEW_AReturnExpr(self, "parser_prod::AReturnExpr::empty_init for AReturnExpr");
-  return self;
-}
-val_t NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AReturnExpr();
-  parser_prod___AReturnExpr___init_areturnexpr(self, p0, p1, init_table);
-  CHECKNEW_AReturnExpr(self, "parser_prod::AReturnExpr::init_areturnexpr for AReturnExpr");
-  return self;
-}
-const classtable_elt_t VFT_ABreakExpr[93] = {
-  {(bigint) 4327 /* 0: Identity */},
-  {(bigint) 3 /* 1: ABreakExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ABreakExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ABreakExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3399 /* 4: ABreakExpr < AEscapeExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ABreakExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4327 /* 6: ABreakExpr < ABreakExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 1 /* 23: ABreakExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ABreakExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ABreakExpr___visit_all},
-  {(bigint) parser_prod___ABreakExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 2 /* 60: ABreakExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ABreakExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 3 /* 69: ABreakExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ABreakExpr < AEscapeExpr: superclass init_table position */},
-  {(bigint) escape___AEscapeExpr___escapable_block},
-  {(bigint) escape___ABreakExpr___kwname},
-  {(bigint) escape___AEscapeExpr___compute_escapable_block},
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ABreakExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 4 /* 80: ABreakExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___ABreakExpr___empty_init},
-  {(bigint) parser_prod___ABreakExpr___init_abreakexpr},
-  {(bigint) 5 /* 88: ABreakExpr < ABreakExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABreakExpr___n_kwbreak},
-  {(bigint) parser_prod___ABreakExpr___n_kwbreak__eq},
-  {(bigint) parser_nodes___ABreakExpr___n_expr},
-  {(bigint) parser_prod___ABreakExpr___n_expr__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ABreakExpr::_parent */
-/* 2: Attribute ABreakExpr::_first_token */
-/* 3: Attribute ABreakExpr::_last_token */
-/* 4: Attribute ABreakExpr::_escapable_block */
-/* 5: Attribute ABreakExpr::_is_typed */
-/* 6: Attribute ABreakExpr::_stype */
-/* 7: Attribute ABreakExpr::_if_true_variable_ctx */
-/* 8: Attribute ABreakExpr::_if_false_variable_ctx */
-/* 9: Attribute ABreakExpr::_n_kwbreak */
-/* 10: Attribute ABreakExpr::_n_expr */
-val_t NEW_ABreakExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_ABreakExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ABreakExpr____n_kwbreak(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABreakExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ABreakExpr(val_t self, char *from) {
-}
-val_t NEW_ABreakExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABreakExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ABreakExpr(self, "parser_nodes::PNode::init for ABreakExpr");
-  return self;
-}
-val_t NEW_ABreakExpr_parser_prod___ABreakExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABreakExpr();
-  parser_prod___ABreakExpr___empty_init(self, init_table);
-  CHECKNEW_ABreakExpr(self, "parser_prod::ABreakExpr::empty_init for ABreakExpr");
-  return self;
-}
-val_t NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABreakExpr();
-  parser_prod___ABreakExpr___init_abreakexpr(self, p0, p1, init_table);
-  CHECKNEW_ABreakExpr(self, "parser_prod::ABreakExpr::init_abreakexpr for ABreakExpr");
-  return self;
-}
-const classtable_elt_t VFT_AAbortExpr[91] = {
-  {(bigint) 4383 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAbortExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAbortExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAbortExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AAbortExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4383 /* 6: AAbortExpr < AAbortExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAbortExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AAbortExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AAbortExpr___visit_all},
-  {(bigint) parser_prod___AAbortExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAbortExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AAbortExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAbortExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AAbortExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AAbortExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AAbortExpr___empty_init},
-  {(bigint) parser_prod___AAbortExpr___init_aabortexpr},
-  {(bigint) 4 /* 88: AAbortExpr < AAbortExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAbortExpr___n_kwabort},
-  {(bigint) parser_prod___AAbortExpr___n_kwabort__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AAbortExpr::_parent */
-/* 2: Attribute AAbortExpr::_first_token */
-/* 3: Attribute AAbortExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAbortExpr::_is_typed */
-/* 6: Attribute AAbortExpr::_stype */
-/* 7: Attribute AAbortExpr::_if_true_variable_ctx */
-/* 8: Attribute AAbortExpr::_if_false_variable_ctx */
-/* 9: Attribute AAbortExpr::_n_kwabort */
-val_t NEW_AAbortExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_AAbortExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAbortExpr____n_kwabort(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAbortExpr(val_t self, char *from) {
-}
-val_t NEW_AAbortExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAbortExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAbortExpr(self, "parser_nodes::PNode::init for AAbortExpr");
-  return self;
-}
-val_t NEW_AAbortExpr_parser_prod___AAbortExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAbortExpr();
-  parser_prod___AAbortExpr___empty_init(self, init_table);
-  CHECKNEW_AAbortExpr(self, "parser_prod::AAbortExpr::empty_init for AAbortExpr");
-  return self;
-}
-val_t NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAbortExpr();
-  parser_prod___AAbortExpr___init_aabortexpr(self, p0, init_table);
-  CHECKNEW_AAbortExpr(self, "parser_prod::AAbortExpr::init_aabortexpr for AAbortExpr");
-  return self;
-}
-const classtable_elt_t VFT_AContinueExpr[93] = {
-  {(bigint) 4303 /* 0: Identity */},
-  {(bigint) 3 /* 1: AContinueExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AContinueExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AContinueExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3399 /* 4: AContinueExpr < AEscapeExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AContinueExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4303 /* 6: AContinueExpr < AContinueExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 1 /* 23: AContinueExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AContinueExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AContinueExpr___visit_all},
-  {(bigint) parser_prod___AContinueExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 2 /* 60: AContinueExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AContinueExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 3 /* 69: AContinueExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: AContinueExpr < AEscapeExpr: superclass init_table position */},
-  {(bigint) escape___AEscapeExpr___escapable_block},
-  {(bigint) escape___AContinueExpr___kwname},
-  {(bigint) escape___AEscapeExpr___compute_escapable_block},
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AContinueExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 4 /* 80: AContinueExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AContinueExpr___empty_init},
-  {(bigint) parser_prod___AContinueExpr___init_acontinueexpr},
-  {(bigint) 5 /* 88: AContinueExpr < AContinueExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AContinueExpr___n_kwcontinue},
-  {(bigint) parser_prod___AContinueExpr___n_kwcontinue__eq},
-  {(bigint) parser_nodes___AContinueExpr___n_expr},
-  {(bigint) parser_prod___AContinueExpr___n_expr__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AContinueExpr::_parent */
-/* 2: Attribute AContinueExpr::_first_token */
-/* 3: Attribute AContinueExpr::_last_token */
-/* 4: Attribute AContinueExpr::_escapable_block */
-/* 5: Attribute AContinueExpr::_is_typed */
-/* 6: Attribute AContinueExpr::_stype */
-/* 7: Attribute AContinueExpr::_if_true_variable_ctx */
-/* 8: Attribute AContinueExpr::_if_false_variable_ctx */
-/* 9: Attribute AContinueExpr::_n_kwcontinue */
-/* 10: Attribute AContinueExpr::_n_expr */
-val_t NEW_AContinueExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AContinueExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AContinueExpr____n_kwcontinue(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AContinueExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AContinueExpr(val_t self, char *from) {
-}
-val_t NEW_AContinueExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AContinueExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AContinueExpr(self, "parser_nodes::PNode::init for AContinueExpr");
-  return self;
-}
-val_t NEW_AContinueExpr_parser_prod___AContinueExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AContinueExpr();
-  parser_prod___AContinueExpr___empty_init(self, init_table);
-  CHECKNEW_AContinueExpr(self, "parser_prod::AContinueExpr::empty_init for AContinueExpr");
-  return self;
-}
-val_t NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AContinueExpr();
-  parser_prod___AContinueExpr___init_acontinueexpr(self, p0, p1, init_table);
-  CHECKNEW_AContinueExpr(self, "parser_prod::AContinueExpr::init_acontinueexpr for AContinueExpr");
-  return self;
-}
-const classtable_elt_t VFT_ADoExpr[93] = {
-  {(bigint) 4295 /* 0: Identity */},
-  {(bigint) 3 /* 1: ADoExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ADoExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ADoExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: ADoExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4295 /* 6: ADoExpr < ADoExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ADoExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ADoExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ADoExpr___visit_all},
-  {(bigint) parser_prod___ADoExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ADoExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ADoExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ADoExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ADoExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___ADoExpr___empty_init},
-  {(bigint) parser_prod___ADoExpr___init_adoexpr},
-  {(bigint) 4 /* 88: ADoExpr < ADoExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ADoExpr___n_kwdo},
-  {(bigint) parser_prod___ADoExpr___n_kwdo__eq},
-  {(bigint) parser_nodes___ADoExpr___n_block},
-  {(bigint) parser_prod___ADoExpr___n_block__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ADoExpr::_parent */
-/* 2: Attribute ADoExpr::_first_token */
-/* 3: Attribute ADoExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ADoExpr::_is_typed */
-/* 6: Attribute ADoExpr::_stype */
-/* 7: Attribute ADoExpr::_if_true_variable_ctx */
-/* 8: Attribute ADoExpr::_if_false_variable_ctx */
-/* 9: Attribute ADoExpr::_n_kwdo */
-/* 10: Attribute ADoExpr::_n_block */
-val_t NEW_ADoExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_ADoExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ADoExpr____n_kwdo(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ADoExpr____n_block(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ADoExpr(val_t self, char *from) {
-}
-val_t NEW_ADoExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ADoExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ADoExpr(self, "parser_nodes::PNode::init for ADoExpr");
-  return self;
-}
-val_t NEW_ADoExpr_parser_prod___ADoExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ADoExpr();
-  parser_prod___ADoExpr___empty_init(self, init_table);
-  CHECKNEW_ADoExpr(self, "parser_prod::ADoExpr::empty_init for ADoExpr");
-  return self;
-}
-val_t NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ADoExpr();
-  parser_prod___ADoExpr___init_adoexpr(self, p0, p1, init_table);
-  CHECKNEW_ADoExpr(self, "parser_prod::ADoExpr::init_adoexpr for ADoExpr");
-  return self;
-}
-const classtable_elt_t VFT_AIfExpr[97] = {
-  {(bigint) 4263 /* 0: Identity */},
-  {(bigint) 3 /* 1: AIfExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AIfExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AIfExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AIfExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4263 /* 6: AIfExpr < AIfExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AIfExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AIfExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AIfExpr___visit_all},
-  {(bigint) parser_prod___AIfExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AIfExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AIfExpr___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AIfExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AIfExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AIfExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AIfExpr___empty_init},
-  {(bigint) parser_prod___AIfExpr___init_aifexpr},
-  {(bigint) 4 /* 88: AIfExpr < AIfExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AIfExpr___n_kwif},
-  {(bigint) parser_prod___AIfExpr___n_kwif__eq},
-  {(bigint) parser_nodes___AIfExpr___n_expr},
-  {(bigint) parser_prod___AIfExpr___n_expr__eq},
-  {(bigint) parser_nodes___AIfExpr___n_then},
-  {(bigint) parser_prod___AIfExpr___n_then__eq},
-  {(bigint) parser_nodes___AIfExpr___n_else},
-  {(bigint) parser_prod___AIfExpr___n_else__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AIfExpr::_parent */
-/* 2: Attribute AIfExpr::_first_token */
-/* 3: Attribute AIfExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AIfExpr::_is_typed */
-/* 6: Attribute AIfExpr::_stype */
-/* 7: Attribute AIfExpr::_if_true_variable_ctx */
-/* 8: Attribute AIfExpr::_if_false_variable_ctx */
-/* 9: Attribute AIfExpr::_n_kwif */
-/* 10: Attribute AIfExpr::_n_expr */
-/* 11: Attribute AIfExpr::_n_then */
-/* 12: Attribute AIfExpr::_n_else */
-val_t NEW_AIfExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_AIfExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AIfExpr____n_kwif(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AIfExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AIfExpr____n_then(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AIfExpr____n_else(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AIfExpr(val_t self, char *from) {
-}
-val_t NEW_AIfExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIfExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AIfExpr(self, "parser_nodes::PNode::init for AIfExpr");
-  return self;
-}
-val_t NEW_AIfExpr_parser_prod___AIfExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIfExpr();
-  parser_prod___AIfExpr___empty_init(self, init_table);
-  CHECKNEW_AIfExpr(self, "parser_prod::AIfExpr::empty_init for AIfExpr");
-  return self;
-}
-val_t NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIfExpr();
-  parser_prod___AIfExpr___init_aifexpr(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_AIfExpr(self, "parser_prod::AIfExpr::init_aifexpr for AIfExpr");
-  return self;
-}
-const classtable_elt_t VFT_AIfexprExpr[101] = {
-  {(bigint) 4259 /* 0: Identity */},
-  {(bigint) 3 /* 1: AIfexprExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AIfexprExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AIfexprExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AIfexprExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4259 /* 6: AIfexprExpr < AIfexprExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AIfexprExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AIfexprExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AIfexprExpr___visit_all},
-  {(bigint) parser_prod___AIfexprExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AIfexprExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AIfexprExpr___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AIfexprExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AIfexprExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AIfexprExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AIfexprExpr___empty_init},
-  {(bigint) parser_prod___AIfexprExpr___init_aifexprexpr},
-  {(bigint) 4 /* 88: AIfexprExpr < AIfexprExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AIfexprExpr___n_kwif},
-  {(bigint) parser_prod___AIfexprExpr___n_kwif__eq},
-  {(bigint) parser_nodes___AIfexprExpr___n_expr},
-  {(bigint) parser_prod___AIfexprExpr___n_expr__eq},
-  {(bigint) parser_nodes___AIfexprExpr___n_kwthen},
-  {(bigint) parser_prod___AIfexprExpr___n_kwthen__eq},
-  {(bigint) parser_nodes___AIfexprExpr___n_then},
-  {(bigint) parser_prod___AIfexprExpr___n_then__eq},
-  {(bigint) parser_nodes___AIfexprExpr___n_kwelse},
-  {(bigint) parser_prod___AIfexprExpr___n_kwelse__eq},
-  {(bigint) parser_nodes___AIfexprExpr___n_else},
-  {(bigint) parser_prod___AIfexprExpr___n_else__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AIfexprExpr::_parent */
-/* 2: Attribute AIfexprExpr::_first_token */
-/* 3: Attribute AIfexprExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AIfexprExpr::_is_typed */
-/* 6: Attribute AIfexprExpr::_stype */
-/* 7: Attribute AIfexprExpr::_if_true_variable_ctx */
-/* 8: Attribute AIfexprExpr::_if_false_variable_ctx */
-/* 9: Attribute AIfexprExpr::_n_kwif */
-/* 10: Attribute AIfexprExpr::_n_expr */
-/* 11: Attribute AIfexprExpr::_n_kwthen */
-/* 12: Attribute AIfexprExpr::_n_then */
-/* 13: Attribute AIfexprExpr::_n_kwelse */
-/* 14: Attribute AIfexprExpr::_n_else */
-val_t NEW_AIfexprExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 15);
-  obj->vft = (classtable_elt_t*)VFT_AIfexprExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AIfexprExpr____n_kwif(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AIfexprExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AIfexprExpr____n_kwthen(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AIfexprExpr____n_then(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AIfexprExpr____n_kwelse(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AIfexprExpr____n_else(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AIfexprExpr(val_t self, char *from) {
-}
-val_t NEW_AIfexprExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIfexprExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AIfexprExpr(self, "parser_nodes::PNode::init for AIfexprExpr");
-  return self;
-}
-val_t NEW_AIfexprExpr_parser_prod___AIfexprExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIfexprExpr();
-  parser_prod___AIfexprExpr___empty_init(self, init_table);
-  CHECKNEW_AIfexprExpr(self, "parser_prod::AIfexprExpr::empty_init for AIfexprExpr");
-  return self;
-}
-val_t NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIfexprExpr();
-  parser_prod___AIfexprExpr___init_aifexprexpr(self, p0, p1, p2, p3, p4, p5, init_table);
-  CHECKNEW_AIfexprExpr(self, "parser_prod::AIfexprExpr::init_aifexprexpr for AIfexprExpr");
-  return self;
-}
-const classtable_elt_t VFT_AWhileExpr[100] = {
-  {(bigint) 4431 /* 0: Identity */},
-  {(bigint) 3 /* 1: AWhileExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AWhileExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AWhileExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AWhileExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4299 /* 6: AWhileExpr < AControlableBlock: superclass typecheck marker */},
-  {(bigint) 4431 /* 7: AWhileExpr < AWhileExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 1 /* 23: AWhileExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AWhileExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AWhileExpr___visit_all},
-  {(bigint) parser_prod___AWhileExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 2 /* 60: AWhileExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AWhileExpr___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 3 /* 69: AWhileExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AControlableBlock___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 4 /* 80: AWhileExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) 0 /* 86: AWhileExpr < AControlableBlock: superclass init_table position */},
-  {(bigint) compiling_methods___AWhileExpr___compile_inside_block},
-  {(bigint) typing___AWhileExpr___escapable},
-  {(bigint) parser_prod___AWhileExpr___empty_init},
-  {(bigint) parser_prod___AWhileExpr___init_awhileexpr},
-  {(bigint) 5 /* 91: AWhileExpr < AWhileExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AWhileExpr___n_kwwhile},
-  {(bigint) parser_prod___AWhileExpr___n_kwwhile__eq},
-  {(bigint) parser_nodes___AWhileExpr___n_expr},
-  {(bigint) parser_prod___AWhileExpr___n_expr__eq},
-  {(bigint) parser_nodes___AWhileExpr___n_kwdo},
-  {(bigint) parser_prod___AWhileExpr___n_kwdo__eq},
-  {(bigint) parser_nodes___AWhileExpr___n_block},
-  {(bigint) parser_prod___AWhileExpr___n_block__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AWhileExpr::_parent */
-/* 2: Attribute AWhileExpr::_first_token */
-/* 3: Attribute AWhileExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AWhileExpr::_is_typed */
-/* 6: Attribute AWhileExpr::_stype */
-/* 7: Attribute AWhileExpr::_if_true_variable_ctx */
-/* 8: Attribute AWhileExpr::_if_false_variable_ctx */
-/* 9: Attribute AWhileExpr::_escapable */
-/* 10: Attribute AWhileExpr::_n_kwwhile */
-/* 11: Attribute AWhileExpr::_n_expr */
-/* 12: Attribute AWhileExpr::_n_kwdo */
-/* 13: Attribute AWhileExpr::_n_block */
-val_t NEW_AWhileExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_AWhileExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AWhileExpr____n_kwwhile(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AWhileExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AWhileExpr____n_kwdo(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AWhileExpr____n_block(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AWhileExpr(val_t self, char *from) {
-}
-val_t NEW_AWhileExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AWhileExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AWhileExpr(self, "parser_nodes::PNode::init for AWhileExpr");
-  return self;
-}
-val_t NEW_AWhileExpr_parser_prod___AWhileExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AWhileExpr();
-  parser_prod___AWhileExpr___empty_init(self, init_table);
-  CHECKNEW_AWhileExpr(self, "parser_prod::AWhileExpr::empty_init for AWhileExpr");
-  return self;
-}
-val_t NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AWhileExpr();
-  parser_prod___AWhileExpr___init_awhileexpr(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_AWhileExpr(self, "parser_prod::AWhileExpr::init_awhileexpr for AWhileExpr");
-  return self;
-}
-const classtable_elt_t VFT_AForExpr[108] = {
-  {(bigint) 4499 /* 0: Identity */},
-  {(bigint) 3 /* 1: AForExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AForExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AForExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AForExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4299 /* 6: AForExpr < AControlableBlock: superclass typecheck marker */},
-  {(bigint) 4499 /* 7: AForExpr < AForExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 1 /* 23: AForExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AForExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AForExpr___visit_all},
-  {(bigint) parser_prod___AForExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 2 /* 60: AForExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AForExpr___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 3 /* 69: AForExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AControlableBlock___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 4 /* 80: AForExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) 0 /* 86: AForExpr < AControlableBlock: superclass init_table position */},
-  {(bigint) compiling_methods___AForExpr___compile_inside_block},
-  {(bigint) typing___AForExpr___escapable},
-  {(bigint) typing___AForExpr___meth_iterator},
-  {(bigint) typing___AForExpr___meth_is_ok},
-  {(bigint) typing___AForExpr___meth_item},
-  {(bigint) typing___AForExpr___meth_next},
-  {(bigint) syntax_base___AForExpr___variable},
-  {(bigint) syntax_base___AForExpr___variable__eq},
-  {(bigint) parser_prod___AForExpr___empty_init},
-  {(bigint) parser_prod___AForExpr___init_aforexpr},
-  {(bigint) 5 /* 97: AForExpr < AForExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AForExpr___n_kwfor},
-  {(bigint) parser_prod___AForExpr___n_kwfor__eq},
-  {(bigint) parser_nodes___AForExpr___n_id},
-  {(bigint) parser_prod___AForExpr___n_id__eq},
-  {(bigint) parser_nodes___AForExpr___n_expr},
-  {(bigint) parser_prod___AForExpr___n_expr__eq},
-  {(bigint) parser_nodes___AForExpr___n_kwdo},
-  {(bigint) parser_prod___AForExpr___n_kwdo__eq},
-  {(bigint) parser_nodes___AForExpr___n_block},
-  {(bigint) parser_prod___AForExpr___n_block__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AForExpr::_parent */
-/* 2: Attribute AForExpr::_first_token */
-/* 3: Attribute AForExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AForExpr::_is_typed */
-/* 6: Attribute AForExpr::_stype */
-/* 7: Attribute AForExpr::_if_true_variable_ctx */
-/* 8: Attribute AForExpr::_if_false_variable_ctx */
-/* 9: Attribute AForExpr::_escapable */
-/* 10: Attribute AForExpr::_meth_iterator */
-/* 11: Attribute AForExpr::_meth_is_ok */
-/* 12: Attribute AForExpr::_meth_item */
-/* 13: Attribute AForExpr::_meth_next */
-/* 14: Attribute AForExpr::_variable */
-/* 15: Attribute AForExpr::_n_kwfor */
-/* 16: Attribute AForExpr::_n_id */
-/* 17: Attribute AForExpr::_n_expr */
-/* 18: Attribute AForExpr::_n_kwdo */
-/* 19: Attribute AForExpr::_n_block */
-val_t NEW_AForExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_AForExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AForExpr____n_kwfor(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AForExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AForExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AForExpr____n_kwdo(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AForExpr____n_block(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AForExpr(val_t self, char *from) {
-}
-val_t NEW_AForExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AForExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AForExpr(self, "parser_nodes::PNode::init for AForExpr");
-  return self;
-}
-val_t NEW_AForExpr_parser_prod___AForExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AForExpr();
-  parser_prod___AForExpr___empty_init(self, init_table);
-  CHECKNEW_AForExpr(self, "parser_prod::AForExpr::empty_init for AForExpr");
-  return self;
-}
-val_t NEW_AForExpr_parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AForExpr();
-  parser_prod___AForExpr___init_aforexpr(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_AForExpr(self, "parser_prod::AForExpr::init_aforexpr for AForExpr");
-  return self;
-}
-const classtable_elt_t VFT_AAssertExpr[95] = {
-  {(bigint) 4363 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAssertExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAssertExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAssertExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AAssertExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4363 /* 6: AAssertExpr < AAssertExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAssertExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AAssertExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AAssertExpr___visit_all},
-  {(bigint) parser_prod___AAssertExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAssertExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AAssertExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAssertExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AAssertExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AAssertExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AAssertExpr___empty_init},
-  {(bigint) parser_prod___AAssertExpr___init_aassertexpr},
-  {(bigint) 4 /* 88: AAssertExpr < AAssertExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAssertExpr___n_kwassert},
-  {(bigint) parser_prod___AAssertExpr___n_kwassert__eq},
-  {(bigint) parser_nodes___AAssertExpr___n_id},
-  {(bigint) parser_prod___AAssertExpr___n_id__eq},
-  {(bigint) parser_nodes___AAssertExpr___n_expr},
-  {(bigint) parser_prod___AAssertExpr___n_expr__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AAssertExpr::_parent */
-/* 2: Attribute AAssertExpr::_first_token */
-/* 3: Attribute AAssertExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAssertExpr::_is_typed */
-/* 6: Attribute AAssertExpr::_stype */
-/* 7: Attribute AAssertExpr::_if_true_variable_ctx */
-/* 8: Attribute AAssertExpr::_if_false_variable_ctx */
-/* 9: Attribute AAssertExpr::_n_kwassert */
-/* 10: Attribute AAssertExpr::_n_id */
-/* 11: Attribute AAssertExpr::_n_expr */
-val_t NEW_AAssertExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_AAssertExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAssertExpr____n_kwassert(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssertExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssertExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAssertExpr(val_t self, char *from) {
-}
-val_t NEW_AAssertExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAssertExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAssertExpr(self, "parser_nodes::PNode::init for AAssertExpr");
-  return self;
-}
-val_t NEW_AAssertExpr_parser_prod___AAssertExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAssertExpr();
-  parser_prod___AAssertExpr___empty_init(self, init_table);
-  CHECKNEW_AAssertExpr(self, "parser_prod::AAssertExpr::empty_init for AAssertExpr");
-  return self;
-}
-val_t NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, val_t p2) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAssertExpr();
-  parser_prod___AAssertExpr___init_aassertexpr(self, p0, p1, p2, init_table);
-  CHECKNEW_AAssertExpr(self, "parser_prod::AAssertExpr::init_aassertexpr for AAssertExpr");
-  return self;
-}
-const classtable_elt_t VFT_AAssignFormExpr[96] = {
-  {(bigint) 4359 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAssignFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAssignFormExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAssignFormExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AAssignFormExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4359 /* 6: AAssignFormExpr < AAssignFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAssignFormExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAssignFormExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAssignFormExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AAssignFormExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 91: AAssignFormExpr < AAssignFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAssignFormExpr___n_assign},
-  {(bigint) parser_nodes___AAssignFormExpr___n_assign__eq},
-  {(bigint) parser_nodes___AAssignFormExpr___n_value},
-  {(bigint) parser_nodes___AAssignFormExpr___n_value__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AAssignFormExpr::_parent */
-/* 2: Attribute AAssignFormExpr::_first_token */
-/* 3: Attribute AAssignFormExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAssignFormExpr::_is_typed */
-/* 6: Attribute AAssignFormExpr::_stype */
-/* 7: Attribute AAssignFormExpr::_if_true_variable_ctx */
-/* 8: Attribute AAssignFormExpr::_if_false_variable_ctx */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 11: Attribute AAssignFormExpr::_n_assign */
-/* 12: Attribute AAssignFormExpr::_n_value */
-val_t NEW_AAssignFormExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_AAssignFormExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAssignFormExpr____n_assign(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssignFormExpr____n_value(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAssignFormExpr(val_t self, char *from) {
-}
-val_t NEW_AAssignFormExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAssignFormExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAssignFormExpr(self, "parser_nodes::PNode::init for AAssignFormExpr");
-  return self;
-}
-const classtable_elt_t VFT_AReassignFormExpr[98] = {
-  {(bigint) 4151 /* 0: Identity */},
-  {(bigint) 3 /* 1: AReassignFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AReassignFormExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AReassignFormExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AReassignFormExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4151 /* 6: AReassignFormExpr < AReassignFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AReassignFormExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AReassignFormExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AReassignFormExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AReassignFormExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) typing___AReassignFormExpr___assign_method},
-  {(bigint) 4 /* 93: AReassignFormExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op__eq},
-  {(bigint) parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) parser_nodes___AReassignFormExpr___n_value__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AReassignFormExpr::_parent */
-/* 2: Attribute AReassignFormExpr::_first_token */
-/* 3: Attribute AReassignFormExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AReassignFormExpr::_is_typed */
-/* 6: Attribute AReassignFormExpr::_stype */
-/* 7: Attribute AReassignFormExpr::_if_true_variable_ctx */
-/* 8: Attribute AReassignFormExpr::_if_false_variable_ctx */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 11: Attribute AReassignFormExpr::_assign_method */
-/* 12: Attribute AReassignFormExpr::_n_assign_op */
-/* 13: Attribute AReassignFormExpr::_n_value */
-val_t NEW_AReassignFormExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_AReassignFormExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReassignFormExpr____n_value(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AReassignFormExpr(val_t self, char *from) {
-}
-val_t NEW_AReassignFormExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AReassignFormExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AReassignFormExpr(self, "parser_nodes::PNode::init for AReassignFormExpr");
-  return self;
-}
-const classtable_elt_t VFT_AOnceExpr[95] = {
-  {(bigint) 4471 /* 0: Identity */},
-  {(bigint) 3 /* 1: AOnceExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AOnceExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AOnceExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AOnceExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4171 /* 6: AOnceExpr < AProxyExpr: superclass typecheck marker */},
-  {(bigint) 4471 /* 7: AOnceExpr < AOnceExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 1 /* 23: AOnceExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AOnceExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AOnceExpr___visit_all},
-  {(bigint) parser_prod___AOnceExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 2 /* 60: AOnceExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AOnceExpr___accept_typing},
-  {(bigint) typing___AProxyExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 3 /* 69: AOnceExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AOnceExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 4 /* 80: AOnceExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) 0 /* 86: AOnceExpr < AProxyExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AProxyExpr___n_expr},
-  {(bigint) parser_prod___AOnceExpr___n_expr__eq},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) parser_prod___AOnceExpr___empty_init},
-  {(bigint) parser_prod___AOnceExpr___init_aonceexpr},
-  {(bigint) 5 /* 92: AOnceExpr < AOnceExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AOnceExpr___n_kwonce},
-  {(bigint) parser_prod___AOnceExpr___n_kwonce__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AOnceExpr::_parent */
-/* 2: Attribute AOnceExpr::_first_token */
-/* 3: Attribute AOnceExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AOnceExpr::_is_typed */
-/* 6: Attribute AOnceExpr::_stype */
-/* 7: Attribute AOnceExpr::_if_true_variable_ctx */
-/* 8: Attribute AOnceExpr::_if_false_variable_ctx */
-/* 9: Attribute AOnceExpr::_n_expr */
-/* 10: Attribute AOnceExpr::_n_kwonce */
-val_t NEW_AOnceExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AOnceExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AProxyExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AOnceExpr____n_kwonce(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AOnceExpr(val_t self, char *from) {
-}
-val_t NEW_AOnceExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AOnceExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AOnceExpr(self, "parser_nodes::PNode::init for AOnceExpr");
-  return self;
-}
-val_t NEW_AOnceExpr_parser_prod___AOnceExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AOnceExpr();
-  parser_prod___AOnceExpr___empty_init(self, init_table);
-  CHECKNEW_AOnceExpr(self, "parser_prod::AOnceExpr::empty_init for AOnceExpr");
-  return self;
-}
-val_t NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AOnceExpr();
-  parser_prod___AOnceExpr___init_aonceexpr(self, p0, p1, init_table);
-  CHECKNEW_AOnceExpr(self, "parser_prod::AOnceExpr::init_aonceexpr for AOnceExpr");
-  return self;
-}
-const classtable_elt_t VFT_ASendExpr[122] = {
-  {(bigint) 4591 /* 0: Identity */},
-  {(bigint) 3 /* 1: ASendExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ASendExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ASendExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ASendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ASendExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ASendExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ASendExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ASendExpr < ASendExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ASendExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ASendExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ASendExpr___visit_all},
-  {(bigint) parser_prod___ASendExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ASendExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ASendExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ASendExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ASendExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ASendExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ASendExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ASendExpr___name},
-  {(bigint) typing___ASendExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ASendExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ASendExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ASendExpr::_parent */
-/* 2: Attribute ASendExpr::_first_token */
-/* 3: Attribute ASendExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ASendExpr::_is_typed */
-/* 6: Attribute ASendExpr::_stype */
-/* 7: Attribute ASendExpr::_if_true_variable_ctx */
-/* 8: Attribute ASendExpr::_if_false_variable_ctx */
-/* 9: Attribute ASendExpr::_prop_signature */
-/* 10: Attribute ASendExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ASendExpr::_prop */
-/* 15: Attribute ASendExpr::_return_type */
-/* 16: Attribute ASendExpr::_n_expr */
-/* 17: Attribute ASendExpr::_n_closure_defs */
-val_t NEW_ASendExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 18);
-  obj->vft = (classtable_elt_t*)VFT_ASendExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ASendExpr(val_t self, char *from) {
-}
-val_t NEW_ASendExpr_parser_nodes___PNode___init() {
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASendExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ASendExpr(self, "parser_nodes::PNode::init for ASendExpr");
-  return self;
-}
-val_t NEW_ASendExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASendExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ASendExpr(self, "parser_prod::ASendExpr::empty_init for ASendExpr");
-  return self;
-}
-val_t NEW_ASendExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASendExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ASendExpr(self, "parser_prod::ASendExpr::init_asendexpr for ASendExpr");
-  return self;
-}
-const classtable_elt_t VFT_ABinopExpr[127] = {
-  {(bigint) 4615 /* 0: Identity */},
-  {(bigint) 3 /* 1: ABinopExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ABinopExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ABinopExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ABinopExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ABinopExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ABinopExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ABinopExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ABinopExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: ABinopExpr < ABinopExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ABinopExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ABinopExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ABinopExpr___visit_all},
-  {(bigint) parser_prod___ABinopExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ABinopExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ABinopExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ABinopExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ABinopExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ABinopExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ABinopExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ASendExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ABinopExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ABinopExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: ABinopExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___ABinopExpr___n_expr2__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ABinopExpr::_parent */
-/* 2: Attribute ABinopExpr::_first_token */
-/* 3: Attribute ABinopExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ABinopExpr::_is_typed */
-/* 6: Attribute ABinopExpr::_stype */
-/* 7: Attribute ABinopExpr::_if_true_variable_ctx */
-/* 8: Attribute ABinopExpr::_if_false_variable_ctx */
-/* 9: Attribute ABinopExpr::_prop_signature */
-/* 10: Attribute ABinopExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ABinopExpr::_prop */
-/* 15: Attribute ABinopExpr::_return_type */
-/* 16: Attribute ABinopExpr::_n_expr */
-/* 17: Attribute ABinopExpr::_n_closure_defs */
-/* 18: Attribute ABinopExpr::_n_expr2 */
-val_t NEW_ABinopExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_ABinopExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ABinopExpr(val_t self, char *from) {
-}
-val_t NEW_ABinopExpr_parser_nodes___PNode___init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABinopExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ABinopExpr(self, "parser_nodes::PNode::init for ABinopExpr");
-  return self;
-}
-val_t NEW_ABinopExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABinopExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ABinopExpr(self, "parser_prod::ASendExpr::empty_init for ABinopExpr");
-  return self;
-}
-val_t NEW_ABinopExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABinopExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ABinopExpr(self, "parser_prod::ASendExpr::init_asendexpr for ABinopExpr");
-  return self;
-}
-val_t NEW_ABinopExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABinopExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_ABinopExpr(self, "parser_prod::ABinopExpr::empty_init for ABinopExpr");
-  return self;
-}
-val_t NEW_ABinopExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABinopExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_ABinopExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for ABinopExpr");
-  return self;
-}
-const classtable_elt_t VFT_ABoolExpr[86] = {
-  {(bigint) 4339 /* 0: Identity */},
-  {(bigint) 3 /* 1: ABoolExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ABoolExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ABoolExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: ABoolExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4339 /* 6: ABoolExpr < ABoolExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ABoolExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ABoolExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ABoolExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ABoolExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 72: ABoolExpr < ABoolExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ABoolExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ABoolExpr::_parent */
-/* 2: Attribute ABoolExpr::_first_token */
-/* 3: Attribute ABoolExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ABoolExpr::_is_typed */
-/* 6: Attribute ABoolExpr::_stype */
-/* 7: Attribute ABoolExpr::_if_true_variable_ctx */
-/* 8: Attribute ABoolExpr::_if_false_variable_ctx */
-val_t NEW_ABoolExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_ABoolExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ABoolExpr(val_t self, char *from) {
-}
-val_t NEW_ABoolExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ABoolExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ABoolExpr(self, "parser_nodes::PNode::init for ABoolExpr");
-  return self;
-}
-const classtable_elt_t VFT_AOrExpr[93] = {
-  {(bigint) 4467 /* 0: Identity */},
-  {(bigint) 3 /* 1: AOrExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AOrExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AOrExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AOrExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4339 /* 6: AOrExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 4467 /* 7: AOrExpr < AOrExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AOrExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AOrExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AOrExpr___visit_all},
-  {(bigint) parser_prod___AOrExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AOrExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AOrExpr___accept_typing},
-  {(bigint) typing___ABoolExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AOrExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 72: AOrExpr < ABoolExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AOrExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AOrExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AOrExpr___empty_init},
-  {(bigint) parser_prod___AOrExpr___init_aorexpr},
-  {(bigint) 5 /* 88: AOrExpr < AOrExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AOrExpr___n_expr},
-  {(bigint) parser_prod___AOrExpr___n_expr__eq},
-  {(bigint) parser_nodes___AOrExpr___n_expr2},
-  {(bigint) parser_prod___AOrExpr___n_expr2__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AOrExpr::_parent */
-/* 2: Attribute AOrExpr::_first_token */
-/* 3: Attribute AOrExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AOrExpr::_is_typed */
-/* 6: Attribute AOrExpr::_stype */
-/* 7: Attribute AOrExpr::_if_true_variable_ctx */
-/* 8: Attribute AOrExpr::_if_false_variable_ctx */
-/* 9: Attribute AOrExpr::_n_expr */
-/* 10: Attribute AOrExpr::_n_expr2 */
-val_t NEW_AOrExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AOrExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AOrExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AOrExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AOrExpr(val_t self, char *from) {
-}
-val_t NEW_AOrExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AOrExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AOrExpr(self, "parser_nodes::PNode::init for AOrExpr");
-  return self;
-}
-val_t NEW_AOrExpr_parser_prod___AOrExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AOrExpr();
-  parser_prod___AOrExpr___empty_init(self, init_table);
-  CHECKNEW_AOrExpr(self, "parser_prod::AOrExpr::empty_init for AOrExpr");
-  return self;
-}
-val_t NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AOrExpr();
-  parser_prod___AOrExpr___init_aorexpr(self, p0, p1, init_table);
-  CHECKNEW_AOrExpr(self, "parser_prod::AOrExpr::init_aorexpr for AOrExpr");
-  return self;
-}
-const classtable_elt_t VFT_AAndExpr[93] = {
-  {(bigint) 4551 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAndExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAndExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAndExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AAndExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4339 /* 6: AAndExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 4551 /* 7: AAndExpr < AAndExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAndExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AAndExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AAndExpr___visit_all},
-  {(bigint) parser_prod___AAndExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAndExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___AAndExpr___accept_typing},
-  {(bigint) typing___ABoolExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAndExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 72: AAndExpr < ABoolExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAndExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AAndExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AAndExpr___empty_init},
-  {(bigint) parser_prod___AAndExpr___init_aandexpr},
-  {(bigint) 5 /* 88: AAndExpr < AAndExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAndExpr___n_expr},
-  {(bigint) parser_prod___AAndExpr___n_expr__eq},
-  {(bigint) parser_nodes___AAndExpr___n_expr2},
-  {(bigint) parser_prod___AAndExpr___n_expr2__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AAndExpr::_parent */
-/* 2: Attribute AAndExpr::_first_token */
-/* 3: Attribute AAndExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAndExpr::_is_typed */
-/* 6: Attribute AAndExpr::_stype */
-/* 7: Attribute AAndExpr::_if_true_variable_ctx */
-/* 8: Attribute AAndExpr::_if_false_variable_ctx */
-/* 9: Attribute AAndExpr::_n_expr */
-/* 10: Attribute AAndExpr::_n_expr2 */
-val_t NEW_AAndExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AAndExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAndExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAndExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAndExpr(val_t self, char *from) {
-}
-val_t NEW_AAndExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAndExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAndExpr(self, "parser_nodes::PNode::init for AAndExpr");
-  return self;
-}
-val_t NEW_AAndExpr_parser_prod___AAndExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAndExpr();
-  parser_prod___AAndExpr___empty_init(self, init_table);
-  CHECKNEW_AAndExpr(self, "parser_prod::AAndExpr::empty_init for AAndExpr");
-  return self;
-}
-val_t NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAndExpr();
-  parser_prod___AAndExpr___init_aandexpr(self, p0, p1, init_table);
-  CHECKNEW_AAndExpr(self, "parser_prod::AAndExpr::init_aandexpr for AAndExpr");
-  return self;
-}
-const classtable_elt_t VFT_ANotExpr[93] = {
-  {(bigint) 4475 /* 0: Identity */},
-  {(bigint) 3 /* 1: ANotExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ANotExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ANotExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: ANotExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4339 /* 6: ANotExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 4475 /* 7: ANotExpr < ANotExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ANotExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ANotExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ANotExpr___visit_all},
-  {(bigint) parser_prod___ANotExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ANotExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ANotExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ANotExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 72: ANotExpr < ABoolExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ANotExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ANotExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___ANotExpr___empty_init},
-  {(bigint) parser_prod___ANotExpr___init_anotexpr},
-  {(bigint) 5 /* 88: ANotExpr < ANotExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ANotExpr___n_kwnot},
-  {(bigint) parser_prod___ANotExpr___n_kwnot__eq},
-  {(bigint) parser_nodes___ANotExpr___n_expr},
-  {(bigint) parser_prod___ANotExpr___n_expr__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ANotExpr::_parent */
-/* 2: Attribute ANotExpr::_first_token */
-/* 3: Attribute ANotExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ANotExpr::_is_typed */
-/* 6: Attribute ANotExpr::_stype */
-/* 7: Attribute ANotExpr::_if_true_variable_ctx */
-/* 8: Attribute ANotExpr::_if_false_variable_ctx */
-/* 9: Attribute ANotExpr::_n_kwnot */
-/* 10: Attribute ANotExpr::_n_expr */
-val_t NEW_ANotExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_ANotExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ANotExpr____n_kwnot(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ANotExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ANotExpr(val_t self, char *from) {
-}
-val_t NEW_ANotExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANotExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ANotExpr(self, "parser_nodes::PNode::init for ANotExpr");
-  return self;
-}
-val_t NEW_ANotExpr_parser_prod___ANotExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANotExpr();
-  parser_prod___ANotExpr___empty_init(self, init_table);
-  CHECKNEW_ANotExpr(self, "parser_prod::ANotExpr::empty_init for ANotExpr");
-  return self;
-}
-val_t NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANotExpr();
-  parser_prod___ANotExpr___init_anotexpr(self, p0, p1, init_table);
-  CHECKNEW_ANotExpr(self, "parser_prod::ANotExpr::init_anotexpr for ANotExpr");
-  return self;
-}
-const classtable_elt_t VFT_AEqExpr[132] = {
-  {(bigint) 4663 /* 0: Identity */},
-  {(bigint) 3 /* 1: AEqExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AEqExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AEqExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: AEqExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AEqExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: AEqExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: AEqExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: AEqExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: AEqExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4663 /* 11: AEqExpr < AEqExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: AEqExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AEqExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AEqExpr___visit_all},
-  {(bigint) parser_prod___AEqExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: AEqExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AEqExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: AEqExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: AEqExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: AEqExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: AEqExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: AEqExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___AEqExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: AEqExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___AEqExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: AEqExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___AEqExpr___n_expr2__eq},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) typing___AEqExpr___try_to_isa},
-  {(bigint) parser_prod___AEqExpr___empty_init},
-  {(bigint) parser_prod___AEqExpr___init_aeqexpr},
-  {(bigint) 9 /* 131: AEqExpr < AEqExpr: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AEqExpr::_parent */
-/* 2: Attribute AEqExpr::_first_token */
-/* 3: Attribute AEqExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AEqExpr::_is_typed */
-/* 6: Attribute AEqExpr::_stype */
-/* 7: Attribute AEqExpr::_if_true_variable_ctx */
-/* 8: Attribute AEqExpr::_if_false_variable_ctx */
-/* 9: Attribute AEqExpr::_prop_signature */
-/* 10: Attribute AEqExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AEqExpr::_prop */
-/* 15: Attribute AEqExpr::_return_type */
-/* 16: Attribute AEqExpr::_n_expr */
-/* 17: Attribute AEqExpr::_n_closure_defs */
-/* 18: Attribute AEqExpr::_n_expr2 */
-val_t NEW_AEqExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_AEqExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AEqExpr(val_t self, char *from) {
-}
-val_t NEW_AEqExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEqExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AEqExpr(self, "parser_nodes::PNode::init for AEqExpr");
-  return self;
-}
-val_t NEW_AEqExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEqExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_AEqExpr(self, "parser_prod::ASendExpr::empty_init for AEqExpr");
-  return self;
-}
-val_t NEW_AEqExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEqExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_AEqExpr(self, "parser_prod::ASendExpr::init_asendexpr for AEqExpr");
-  return self;
-}
-val_t NEW_AEqExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEqExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_AEqExpr(self, "parser_prod::ABinopExpr::empty_init for AEqExpr");
-  return self;
-}
-val_t NEW_AEqExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEqExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_AEqExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for AEqExpr");
-  return self;
-}
-val_t NEW_AEqExpr_parser_prod___AEqExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEqExpr();
-  parser_prod___AEqExpr___empty_init(self, init_table);
-  CHECKNEW_AEqExpr(self, "parser_prod::AEqExpr::empty_init for AEqExpr");
-  return self;
-}
-val_t NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEqExpr();
-  parser_prod___AEqExpr___init_aeqexpr(self, p0, p1, init_table);
-  CHECKNEW_AEqExpr(self, "parser_prod::AEqExpr::init_aeqexpr for AEqExpr");
-  return self;
-}
-const classtable_elt_t VFT_AEeExpr[93] = {
-  {(bigint) 4515 /* 0: Identity */},
-  {(bigint) 3 /* 1: AEeExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AEeExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AEeExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AEeExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4339 /* 6: AEeExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 4515 /* 7: AEeExpr < AEeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AEeExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AEeExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AEeExpr___visit_all},
-  {(bigint) parser_prod___AEeExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AEeExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ABoolExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AEeExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 72: AEeExpr < ABoolExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AEeExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AEeExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AEeExpr___empty_init},
-  {(bigint) parser_prod___AEeExpr___init_aeeexpr},
-  {(bigint) 5 /* 88: AEeExpr < AEeExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AEeExpr___n_expr},
-  {(bigint) parser_prod___AEeExpr___n_expr__eq},
-  {(bigint) parser_nodes___AEeExpr___n_expr2},
-  {(bigint) parser_prod___AEeExpr___n_expr2__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AEeExpr::_parent */
-/* 2: Attribute AEeExpr::_first_token */
-/* 3: Attribute AEeExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AEeExpr::_is_typed */
-/* 6: Attribute AEeExpr::_stype */
-/* 7: Attribute AEeExpr::_if_true_variable_ctx */
-/* 8: Attribute AEeExpr::_if_false_variable_ctx */
-/* 9: Attribute AEeExpr::_n_expr */
-/* 10: Attribute AEeExpr::_n_expr2 */
-val_t NEW_AEeExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AEeExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AEeExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AEeExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AEeExpr(val_t self, char *from) {
-}
-val_t NEW_AEeExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEeExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AEeExpr(self, "parser_nodes::PNode::init for AEeExpr");
-  return self;
-}
-val_t NEW_AEeExpr_parser_prod___AEeExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEeExpr();
-  parser_prod___AEeExpr___empty_init(self, init_table);
-  CHECKNEW_AEeExpr(self, "parser_prod::AEeExpr::empty_init for AEeExpr");
-  return self;
-}
-val_t NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEeExpr();
-  parser_prod___AEeExpr___init_aeeexpr(self, p0, p1, init_table);
-  CHECKNEW_AEeExpr(self, "parser_prod::AEeExpr::init_aeeexpr for AEeExpr");
-  return self;
-}
-const classtable_elt_t VFT_ANeExpr[132] = {
-  {(bigint) 4639 /* 0: Identity */},
-  {(bigint) 3 /* 1: ANeExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ANeExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ANeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ANeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ANeExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ANeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ANeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ANeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: ANeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4639 /* 11: ANeExpr < ANeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ANeExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ANeExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ANeExpr___visit_all},
-  {(bigint) parser_prod___ANeExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ANeExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ANeExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ANeExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ANeExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ANeExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ANeExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ANeExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ANeExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ANeExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ANeExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: ANeExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___ANeExpr___n_expr2__eq},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) typing___ANeExpr___try_to_isa},
-  {(bigint) parser_prod___ANeExpr___empty_init},
-  {(bigint) parser_prod___ANeExpr___init_aneexpr},
-  {(bigint) 9 /* 131: ANeExpr < ANeExpr: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ANeExpr::_parent */
-/* 2: Attribute ANeExpr::_first_token */
-/* 3: Attribute ANeExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ANeExpr::_is_typed */
-/* 6: Attribute ANeExpr::_stype */
-/* 7: Attribute ANeExpr::_if_true_variable_ctx */
-/* 8: Attribute ANeExpr::_if_false_variable_ctx */
-/* 9: Attribute ANeExpr::_prop_signature */
-/* 10: Attribute ANeExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ANeExpr::_prop */
-/* 15: Attribute ANeExpr::_return_type */
-/* 16: Attribute ANeExpr::_n_expr */
-/* 17: Attribute ANeExpr::_n_closure_defs */
-/* 18: Attribute ANeExpr::_n_expr2 */
-val_t NEW_ANeExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_ANeExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ANeExpr(val_t self, char *from) {
-}
-val_t NEW_ANeExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANeExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ANeExpr(self, "parser_nodes::PNode::init for ANeExpr");
-  return self;
-}
-val_t NEW_ANeExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANeExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ANeExpr(self, "parser_prod::ASendExpr::empty_init for ANeExpr");
-  return self;
-}
-val_t NEW_ANeExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANeExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ANeExpr(self, "parser_prod::ASendExpr::init_asendexpr for ANeExpr");
-  return self;
-}
-val_t NEW_ANeExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANeExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_ANeExpr(self, "parser_prod::ABinopExpr::empty_init for ANeExpr");
-  return self;
-}
-val_t NEW_ANeExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANeExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_ANeExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for ANeExpr");
-  return self;
-}
-val_t NEW_ANeExpr_parser_prod___ANeExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANeExpr();
-  parser_prod___ANeExpr___empty_init(self, init_table);
-  CHECKNEW_ANeExpr(self, "parser_prod::ANeExpr::empty_init for ANeExpr");
-  return self;
-}
-val_t NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANeExpr();
-  parser_prod___ANeExpr___init_aneexpr(self, p0, p1, init_table);
-  CHECKNEW_ANeExpr(self, "parser_prod::ANeExpr::init_aneexpr for ANeExpr");
-  return self;
-}
-const classtable_elt_t VFT_ALtExpr[130] = {
-  {(bigint) 4647 /* 0: Identity */},
-  {(bigint) 3 /* 1: ALtExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ALtExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ALtExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ALtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ALtExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ALtExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ALtExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ALtExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: ALtExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4647 /* 11: ALtExpr < ALtExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ALtExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ALtExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ALtExpr___visit_all},
-  {(bigint) parser_prod___ALtExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ALtExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ALtExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ALtExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ALtExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ALtExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ALtExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ALtExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ALtExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ALtExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: ALtExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___ALtExpr___n_expr2__eq},
-  {(bigint) parser_prod___ALtExpr___empty_init},
-  {(bigint) parser_prod___ALtExpr___init_altexpr},
-  {(bigint) 9 /* 129: ALtExpr < ALtExpr: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ALtExpr::_parent */
-/* 2: Attribute ALtExpr::_first_token */
-/* 3: Attribute ALtExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ALtExpr::_is_typed */
-/* 6: Attribute ALtExpr::_stype */
-/* 7: Attribute ALtExpr::_if_true_variable_ctx */
-/* 8: Attribute ALtExpr::_if_false_variable_ctx */
-/* 9: Attribute ALtExpr::_prop_signature */
-/* 10: Attribute ALtExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ALtExpr::_prop */
-/* 15: Attribute ALtExpr::_return_type */
-/* 16: Attribute ALtExpr::_n_expr */
-/* 17: Attribute ALtExpr::_n_closure_defs */
-/* 18: Attribute ALtExpr::_n_expr2 */
-val_t NEW_ALtExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_ALtExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ALtExpr(val_t self, char *from) {
-}
-val_t NEW_ALtExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALtExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ALtExpr(self, "parser_nodes::PNode::init for ALtExpr");
-  return self;
-}
-val_t NEW_ALtExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALtExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ALtExpr(self, "parser_prod::ASendExpr::empty_init for ALtExpr");
-  return self;
-}
-val_t NEW_ALtExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALtExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ALtExpr(self, "parser_prod::ASendExpr::init_asendexpr for ALtExpr");
-  return self;
-}
-val_t NEW_ALtExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALtExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_ALtExpr(self, "parser_prod::ABinopExpr::empty_init for ALtExpr");
-  return self;
-}
-val_t NEW_ALtExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALtExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_ALtExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for ALtExpr");
-  return self;
-}
-val_t NEW_ALtExpr_parser_prod___ALtExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALtExpr();
-  parser_prod___ALtExpr___empty_init(self, init_table);
-  CHECKNEW_ALtExpr(self, "parser_prod::ALtExpr::empty_init for ALtExpr");
-  return self;
-}
-val_t NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALtExpr();
-  parser_prod___ALtExpr___init_altexpr(self, p0, p1, init_table);
-  CHECKNEW_ALtExpr(self, "parser_prod::ALtExpr::init_altexpr for ALtExpr");
-  return self;
-}
-const classtable_elt_t VFT_ALeExpr[130] = {
-  {(bigint) 4651 /* 0: Identity */},
-  {(bigint) 3 /* 1: ALeExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ALeExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ALeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ALeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ALeExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ALeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ALeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ALeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: ALeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4651 /* 11: ALeExpr < ALeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ALeExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ALeExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ALeExpr___visit_all},
-  {(bigint) parser_prod___ALeExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ALeExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ALeExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ALeExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ALeExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ALeExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ALeExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ALeExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ALeExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ALeExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: ALeExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___ALeExpr___n_expr2__eq},
-  {(bigint) parser_prod___ALeExpr___empty_init},
-  {(bigint) parser_prod___ALeExpr___init_aleexpr},
-  {(bigint) 9 /* 129: ALeExpr < ALeExpr: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ALeExpr::_parent */
-/* 2: Attribute ALeExpr::_first_token */
-/* 3: Attribute ALeExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ALeExpr::_is_typed */
-/* 6: Attribute ALeExpr::_stype */
-/* 7: Attribute ALeExpr::_if_true_variable_ctx */
-/* 8: Attribute ALeExpr::_if_false_variable_ctx */
-/* 9: Attribute ALeExpr::_prop_signature */
-/* 10: Attribute ALeExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ALeExpr::_prop */
-/* 15: Attribute ALeExpr::_return_type */
-/* 16: Attribute ALeExpr::_n_expr */
-/* 17: Attribute ALeExpr::_n_closure_defs */
-/* 18: Attribute ALeExpr::_n_expr2 */
-val_t NEW_ALeExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_ALeExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ALeExpr(val_t self, char *from) {
-}
-val_t NEW_ALeExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALeExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ALeExpr(self, "parser_nodes::PNode::init for ALeExpr");
-  return self;
-}
-val_t NEW_ALeExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALeExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ALeExpr(self, "parser_prod::ASendExpr::empty_init for ALeExpr");
-  return self;
-}
-val_t NEW_ALeExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALeExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ALeExpr(self, "parser_prod::ASendExpr::init_asendexpr for ALeExpr");
-  return self;
-}
-val_t NEW_ALeExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALeExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_ALeExpr(self, "parser_prod::ABinopExpr::empty_init for ALeExpr");
-  return self;
-}
-val_t NEW_ALeExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALeExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_ALeExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for ALeExpr");
-  return self;
-}
-val_t NEW_ALeExpr_parser_prod___ALeExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALeExpr();
-  parser_prod___ALeExpr___empty_init(self, init_table);
-  CHECKNEW_ALeExpr(self, "parser_prod::ALeExpr::empty_init for ALeExpr");
-  return self;
-}
-val_t NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ALeExpr();
-  parser_prod___ALeExpr___init_aleexpr(self, p0, p1, init_table);
-  CHECKNEW_ALeExpr(self, "parser_prod::ALeExpr::init_aleexpr for ALeExpr");
-  return self;
-}
-const classtable_elt_t VFT_AGtExpr[130] = {
-  {(bigint) 4655 /* 0: Identity */},
-  {(bigint) 3 /* 1: AGtExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AGtExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AGtExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: AGtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AGtExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: AGtExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: AGtExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: AGtExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: AGtExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4655 /* 11: AGtExpr < AGtExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: AGtExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AGtExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AGtExpr___visit_all},
-  {(bigint) parser_prod___AGtExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: AGtExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: AGtExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: AGtExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: AGtExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: AGtExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: AGtExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___AGtExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: AGtExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___AGtExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: AGtExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___AGtExpr___n_expr2__eq},
-  {(bigint) parser_prod___AGtExpr___empty_init},
-  {(bigint) parser_prod___AGtExpr___init_agtexpr},
-  {(bigint) 9 /* 129: AGtExpr < AGtExpr: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AGtExpr::_parent */
-/* 2: Attribute AGtExpr::_first_token */
-/* 3: Attribute AGtExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AGtExpr::_is_typed */
-/* 6: Attribute AGtExpr::_stype */
-/* 7: Attribute AGtExpr::_if_true_variable_ctx */
-/* 8: Attribute AGtExpr::_if_false_variable_ctx */
-/* 9: Attribute AGtExpr::_prop_signature */
-/* 10: Attribute AGtExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AGtExpr::_prop */
-/* 15: Attribute AGtExpr::_return_type */
-/* 16: Attribute AGtExpr::_n_expr */
-/* 17: Attribute AGtExpr::_n_closure_defs */
-/* 18: Attribute AGtExpr::_n_expr2 */
-val_t NEW_AGtExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_AGtExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AGtExpr(val_t self, char *from) {
-}
-val_t NEW_AGtExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGtExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AGtExpr(self, "parser_nodes::PNode::init for AGtExpr");
-  return self;
-}
-val_t NEW_AGtExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGtExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_AGtExpr(self, "parser_prod::ASendExpr::empty_init for AGtExpr");
-  return self;
-}
-val_t NEW_AGtExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGtExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_AGtExpr(self, "parser_prod::ASendExpr::init_asendexpr for AGtExpr");
-  return self;
-}
-val_t NEW_AGtExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGtExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_AGtExpr(self, "parser_prod::ABinopExpr::empty_init for AGtExpr");
-  return self;
-}
-val_t NEW_AGtExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGtExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_AGtExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for AGtExpr");
-  return self;
-}
-val_t NEW_AGtExpr_parser_prod___AGtExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGtExpr();
-  parser_prod___AGtExpr___empty_init(self, init_table);
-  CHECKNEW_AGtExpr(self, "parser_prod::AGtExpr::empty_init for AGtExpr");
-  return self;
-}
-val_t NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGtExpr();
-  parser_prod___AGtExpr___init_agtexpr(self, p0, p1, init_table);
-  CHECKNEW_AGtExpr(self, "parser_prod::AGtExpr::init_agtexpr for AGtExpr");
-  return self;
-}
-const classtable_elt_t VFT_AGeExpr[130] = {
-  {(bigint) 4659 /* 0: Identity */},
-  {(bigint) 3 /* 1: AGeExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AGeExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AGeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: AGeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AGeExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: AGeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: AGeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: AGeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: AGeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4659 /* 11: AGeExpr < AGeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: AGeExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AGeExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AGeExpr___visit_all},
-  {(bigint) parser_prod___AGeExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: AGeExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: AGeExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: AGeExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: AGeExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: AGeExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: AGeExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___AGeExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: AGeExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___AGeExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: AGeExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___AGeExpr___n_expr2__eq},
-  {(bigint) parser_prod___AGeExpr___empty_init},
-  {(bigint) parser_prod___AGeExpr___init_ageexpr},
-  {(bigint) 9 /* 129: AGeExpr < AGeExpr: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AGeExpr::_parent */
-/* 2: Attribute AGeExpr::_first_token */
-/* 3: Attribute AGeExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AGeExpr::_is_typed */
-/* 6: Attribute AGeExpr::_stype */
-/* 7: Attribute AGeExpr::_if_true_variable_ctx */
-/* 8: Attribute AGeExpr::_if_false_variable_ctx */
-/* 9: Attribute AGeExpr::_prop_signature */
-/* 10: Attribute AGeExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AGeExpr::_prop */
-/* 15: Attribute AGeExpr::_return_type */
-/* 16: Attribute AGeExpr::_n_expr */
-/* 17: Attribute AGeExpr::_n_closure_defs */
-/* 18: Attribute AGeExpr::_n_expr2 */
-val_t NEW_AGeExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_AGeExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AGeExpr(val_t self, char *from) {
-}
-val_t NEW_AGeExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGeExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AGeExpr(self, "parser_nodes::PNode::init for AGeExpr");
-  return self;
-}
-val_t NEW_AGeExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGeExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_AGeExpr(self, "parser_prod::ASendExpr::empty_init for AGeExpr");
-  return self;
-}
-val_t NEW_AGeExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGeExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_AGeExpr(self, "parser_prod::ASendExpr::init_asendexpr for AGeExpr");
-  return self;
-}
-val_t NEW_AGeExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGeExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_AGeExpr(self, "parser_prod::ABinopExpr::empty_init for AGeExpr");
-  return self;
-}
-val_t NEW_AGeExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGeExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_AGeExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for AGeExpr");
-  return self;
-}
-val_t NEW_AGeExpr_parser_prod___AGeExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGeExpr();
-  parser_prod___AGeExpr___empty_init(self, init_table);
-  CHECKNEW_AGeExpr(self, "parser_prod::AGeExpr::empty_init for AGeExpr");
-  return self;
-}
-val_t NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AGeExpr();
-  parser_prod___AGeExpr___init_ageexpr(self, p0, p1, init_table);
-  CHECKNEW_AGeExpr(self, "parser_prod::AGeExpr::init_ageexpr for AGeExpr");
-  return self;
-}
-const classtable_elt_t VFT_AIsaExpr[93] = {
-  {(bigint) 4487 /* 0: Identity */},
-  {(bigint) 3 /* 1: AIsaExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AIsaExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AIsaExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4103 /* 4: AIsaExpr < ATypeCheckExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AIsaExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4339 /* 6: AIsaExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 4487 /* 7: AIsaExpr < AIsaExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 1 /* 23: AIsaExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AIsaExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AIsaExpr___visit_all},
-  {(bigint) parser_prod___AIsaExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 2 /* 60: AIsaExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AIsaExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 3 /* 69: AIsaExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: AIsaExpr < ATypeCheckExpr: superclass init_table position */},
-  {(bigint) typing___ATypeCheckExpr___check_expr_cast},
-  {(bigint) 5 /* 72: AIsaExpr < ABoolExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AIsaExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 4 /* 80: AIsaExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AIsaExpr___empty_init},
-  {(bigint) parser_prod___AIsaExpr___init_aisaexpr},
-  {(bigint) 6 /* 88: AIsaExpr < AIsaExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AIsaExpr___n_expr},
-  {(bigint) parser_prod___AIsaExpr___n_expr__eq},
-  {(bigint) parser_nodes___AIsaExpr___n_type},
-  {(bigint) parser_prod___AIsaExpr___n_type__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AIsaExpr::_parent */
-/* 2: Attribute AIsaExpr::_first_token */
-/* 3: Attribute AIsaExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AIsaExpr::_is_typed */
-/* 6: Attribute AIsaExpr::_stype */
-/* 7: Attribute AIsaExpr::_if_true_variable_ctx */
-/* 8: Attribute AIsaExpr::_if_false_variable_ctx */
-/* 9: Attribute AIsaExpr::_n_expr */
-/* 10: Attribute AIsaExpr::_n_type */
-val_t NEW_AIsaExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AIsaExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AIsaExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AIsaExpr____n_type(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AIsaExpr(val_t self, char *from) {
-}
-val_t NEW_AIsaExpr_parser_nodes___PNode___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AIsaExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AIsaExpr(self, "parser_nodes::PNode::init for AIsaExpr");
-  return self;
-}
-val_t NEW_AIsaExpr_parser_prod___AIsaExpr___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AIsaExpr();
-  parser_prod___AIsaExpr___empty_init(self, init_table);
-  CHECKNEW_AIsaExpr(self, "parser_prod::AIsaExpr::empty_init for AIsaExpr");
-  return self;
-}
-val_t NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr(val_t p0, val_t p1) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AIsaExpr();
-  parser_prod___AIsaExpr___init_aisaexpr(self, p0, p1, init_table);
-  CHECKNEW_AIsaExpr(self, "parser_prod::AIsaExpr::init_aisaexpr for AIsaExpr");
-  return self;
-}
-const classtable_elt_t VFT_APlusExpr[130] = {
-  {(bigint) 4631 /* 0: Identity */},
-  {(bigint) 3 /* 1: APlusExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: APlusExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: APlusExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: APlusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: APlusExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: APlusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: APlusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: APlusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: APlusExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4631 /* 11: APlusExpr < APlusExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: APlusExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___APlusExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___APlusExpr___visit_all},
-  {(bigint) parser_prod___APlusExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: APlusExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: APlusExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: APlusExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: APlusExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: APlusExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: APlusExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___APlusExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: APlusExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___APlusExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: APlusExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___APlusExpr___n_expr2__eq},
-  {(bigint) parser_prod___APlusExpr___empty_init},
-  {(bigint) parser_prod___APlusExpr___init_aplusexpr},
-  {(bigint) 9 /* 129: APlusExpr < APlusExpr: superclass init_table position */},
+  49 /* Group of ? */,
+  1431 /* Id of ReduceAction19 */,
+  4 /* Color of ReduceAction19 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1383 /* Id of ReduceAction20 */,
+  4 /* Color of ReduceAction20 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1343 /* Id of ReduceAction21 */,
+  4 /* Color of ReduceAction21 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1307 /* Id of ReduceAction22 */,
+  4 /* Color of ReduceAction22 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1287 /* Id of ReduceAction23 */,
+  4 /* Color of ReduceAction23 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1243 /* Id of ReduceAction24 */,
+  4 /* Color of ReduceAction24 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1199 /* Id of ReduceAction25 */,
+  4 /* Color of ReduceAction25 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1155 /* Id of ReduceAction26 */,
+  4 /* Color of ReduceAction26 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1111 /* Id of ReduceAction27 */,
+  4 /* Color of ReduceAction27 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1075 /* Id of ReduceAction28 */,
+  4 /* Color of ReduceAction28 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1031 /* Id of ReduceAction29 */,
+  4 /* Color of ReduceAction29 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1003 /* Id of ReduceAction30 */,
+  4 /* Color of ReduceAction30 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  967 /* Id of ReduceAction31 */,
+  4 /* Color of ReduceAction31 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  931 /* Id of ReduceAction32 */,
+  4 /* Color of ReduceAction32 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  895 /* Id of ReduceAction33 */,
+  4 /* Color of ReduceAction33 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  875 /* Id of ReduceAction34 */,
+  4 /* Color of ReduceAction34 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  835 /* Id of ReduceAction35 */,
+  4 /* Color of ReduceAction35 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  799 /* Id of ReduceAction36 */,
+  4 /* Color of ReduceAction36 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  779 /* Id of ReduceAction37 */,
+  4 /* Color of ReduceAction37 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  707 /* Id of ReduceAction39 */,
+  4 /* Color of ReduceAction39 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  699 /* Id of ReduceAction40 */,
+  4 /* Color of ReduceAction40 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  695 /* Id of ReduceAction41 */,
+  4 /* Color of ReduceAction41 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  691 /* Id of ReduceAction42 */,
+  4 /* Color of ReduceAction42 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  687 /* Id of ReduceAction43 */,
+  4 /* Color of ReduceAction43 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  683 /* Id of ReduceAction44 */,
+  4 /* Color of ReduceAction44 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  679 /* Id of ReduceAction45 */,
+  4 /* Color of ReduceAction45 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  675 /* Id of ReduceAction46 */,
+  4 /* Color of ReduceAction46 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  671 /* Id of ReduceAction47 */,
+  4 /* Color of ReduceAction47 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  667 /* Id of ReduceAction48 */,
+  4 /* Color of ReduceAction48 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  663 /* Id of ReduceAction49 */,
+  4 /* Color of ReduceAction49 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  655 /* Id of ReduceAction50 */,
+  4 /* Color of ReduceAction50 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  651 /* Id of ReduceAction51 */,
+  4 /* Color of ReduceAction51 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  647 /* Id of ReduceAction52 */,
+  4 /* Color of ReduceAction52 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  643 /* Id of ReduceAction53 */,
+  4 /* Color of ReduceAction53 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  639 /* Id of ReduceAction54 */,
+  4 /* Color of ReduceAction54 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  635 /* Id of ReduceAction55 */,
+  4 /* Color of ReduceAction55 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  631 /* Id of ReduceAction56 */,
+  4 /* Color of ReduceAction56 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  627 /* Id of ReduceAction57 */,
+  4 /* Color of ReduceAction57 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  623 /* Id of ReduceAction58 */,
+  4 /* Color of ReduceAction58 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  619 /* Id of ReduceAction59 */,
+  4 /* Color of ReduceAction59 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  611 /* Id of ReduceAction60 */,
+  4 /* Color of ReduceAction60 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  607 /* Id of ReduceAction61 */,
+  4 /* Color of ReduceAction61 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  603 /* Id of ReduceAction62 */,
+  4 /* Color of ReduceAction62 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  599 /* Id of ReduceAction63 */,
+  4 /* Color of ReduceAction63 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  583 /* Id of ReduceAction64 */,
+  4 /* Color of ReduceAction64 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  575 /* Id of ReduceAction65 */,
+  4 /* Color of ReduceAction65 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  563 /* Id of ReduceAction66 */,
+  4 /* Color of ReduceAction66 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  531 /* Id of ReduceAction67 */,
+  4 /* Color of ReduceAction67 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  499 /* Id of ReduceAction68 */,
+  4 /* Color of ReduceAction68 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  475 /* Id of ReduceAction69 */,
+  4 /* Color of ReduceAction69 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  455 /* Id of ReduceAction70 */,
+  4 /* Color of ReduceAction70 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  451 /* Id of ReduceAction71 */,
+  4 /* Color of ReduceAction71 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  447 /* Id of ReduceAction72 */,
+  4 /* Color of ReduceAction72 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  443 /* Id of ReduceAction73 */,
+  4 /* Color of ReduceAction73 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  439 /* Id of ReduceAction74 */,
+  4 /* Color of ReduceAction74 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  435 /* Id of ReduceAction75 */,
+  4 /* Color of ReduceAction75 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  431 /* Id of ReduceAction76 */,
+  4 /* Color of ReduceAction76 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  427 /* Id of ReduceAction77 */,
+  4 /* Color of ReduceAction77 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  423 /* Id of ReduceAction78 */,
+  4 /* Color of ReduceAction78 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  419 /* Id of ReduceAction79 */,
+  4 /* Color of ReduceAction79 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  411 /* Id of ReduceAction80 */,
+  4 /* Color of ReduceAction80 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  407 /* Id of ReduceAction81 */,
+  4 /* Color of ReduceAction81 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  403 /* Id of ReduceAction82 */,
+  4 /* Color of ReduceAction82 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  399 /* Id of ReduceAction83 */,
+  4 /* Color of ReduceAction83 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  395 /* Id of ReduceAction84 */,
+  4 /* Color of ReduceAction84 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  391 /* Id of ReduceAction85 */,
+  4 /* Color of ReduceAction85 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  387 /* Id of ReduceAction86 */,
+  4 /* Color of ReduceAction86 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  383 /* Id of ReduceAction87 */,
+  4 /* Color of ReduceAction87 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  379 /* Id of ReduceAction88 */,
+  4 /* Color of ReduceAction88 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  375 /* Id of ReduceAction89 */,
+  4 /* Color of ReduceAction89 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  367 /* Id of ReduceAction90 */,
+  4 /* Color of ReduceAction90 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  363 /* Id of ReduceAction91 */,
+  4 /* Color of ReduceAction91 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  359 /* Id of ReduceAction92 */,
+  4 /* Color of ReduceAction92 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  355 /* Id of ReduceAction93 */,
+  4 /* Color of ReduceAction93 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  351 /* Id of ReduceAction94 */,
+  4 /* Color of ReduceAction94 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  347 /* Id of ReduceAction95 */,
+  4 /* Color of ReduceAction95 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  343 /* Id of ReduceAction96 */,
+  4 /* Color of ReduceAction96 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  339 /* Id of ReduceAction97 */,
+  4 /* Color of ReduceAction97 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  335 /* Id of ReduceAction98 */,
+  4 /* Color of ReduceAction98 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  331 /* Id of ReduceAction99 */,
+  4 /* Color of ReduceAction99 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1823 /* Id of ReduceAction100 */,
+  4 /* Color of ReduceAction100 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1819 /* Id of ReduceAction101 */,
+  4 /* Color of ReduceAction101 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1815 /* Id of ReduceAction102 */,
+  4 /* Color of ReduceAction102 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1811 /* Id of ReduceAction103 */,
+  4 /* Color of ReduceAction103 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1807 /* Id of ReduceAction104 */,
+  4 /* Color of ReduceAction104 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1803 /* Id of ReduceAction105 */,
+  4 /* Color of ReduceAction105 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1799 /* Id of ReduceAction106 */,
+  4 /* Color of ReduceAction106 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1795 /* Id of ReduceAction107 */,
+  4 /* Color of ReduceAction107 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1791 /* Id of ReduceAction108 */,
+  4 /* Color of ReduceAction108 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1787 /* Id of ReduceAction109 */,
+  4 /* Color of ReduceAction109 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1779 /* Id of ReduceAction110 */,
+  4 /* Color of ReduceAction110 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1775 /* Id of ReduceAction111 */,
+  4 /* Color of ReduceAction111 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1771 /* Id of ReduceAction112 */,
+  4 /* Color of ReduceAction112 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1767 /* Id of ReduceAction113 */,
+  4 /* Color of ReduceAction113 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1763 /* Id of ReduceAction114 */,
+  4 /* Color of ReduceAction114 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1759 /* Id of ReduceAction115 */,
+  4 /* Color of ReduceAction115 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1755 /* Id of ReduceAction116 */,
+  4 /* Color of ReduceAction116 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1751 /* Id of ReduceAction117 */,
+  4 /* Color of ReduceAction117 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1747 /* Id of ReduceAction118 */,
+  4 /* Color of ReduceAction118 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1743 /* Id of ReduceAction119 */,
+  4 /* Color of ReduceAction119 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1735 /* Id of ReduceAction120 */,
+  4 /* Color of ReduceAction120 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1731 /* Id of ReduceAction121 */,
+  4 /* Color of ReduceAction121 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1727 /* Id of ReduceAction122 */,
+  4 /* Color of ReduceAction122 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1723 /* Id of ReduceAction123 */,
+  4 /* Color of ReduceAction123 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1719 /* Id of ReduceAction124 */,
+  4 /* Color of ReduceAction124 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1715 /* Id of ReduceAction125 */,
+  4 /* Color of ReduceAction125 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1711 /* Id of ReduceAction126 */,
+  4 /* Color of ReduceAction126 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1707 /* Id of ReduceAction127 */,
+  4 /* Color of ReduceAction127 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1703 /* Id of ReduceAction128 */,
+  4 /* Color of ReduceAction128 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1699 /* Id of ReduceAction129 */,
+  4 /* Color of ReduceAction129 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1691 /* Id of ReduceAction130 */,
+  4 /* Color of ReduceAction130 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1687 /* Id of ReduceAction131 */,
+  4 /* Color of ReduceAction131 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1683 /* Id of ReduceAction132 */,
+  4 /* Color of ReduceAction132 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1679 /* Id of ReduceAction133 */,
+  4 /* Color of ReduceAction133 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1675 /* Id of ReduceAction134 */,
+  4 /* Color of ReduceAction134 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1671 /* Id of ReduceAction135 */,
+  4 /* Color of ReduceAction135 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1667 /* Id of ReduceAction136 */,
+  4 /* Color of ReduceAction136 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1663 /* Id of ReduceAction137 */,
+  4 /* Color of ReduceAction137 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1659 /* Id of ReduceAction138 */,
+  4 /* Color of ReduceAction138 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1655 /* Id of ReduceAction139 */,
+  4 /* Color of ReduceAction139 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1647 /* Id of ReduceAction140 */,
+  4 /* Color of ReduceAction140 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1643 /* Id of ReduceAction141 */,
+  4 /* Color of ReduceAction141 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1639 /* Id of ReduceAction142 */,
+  4 /* Color of ReduceAction142 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1635 /* Id of ReduceAction143 */,
+  4 /* Color of ReduceAction143 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1631 /* Id of ReduceAction144 */,
+  4 /* Color of ReduceAction144 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1627 /* Id of ReduceAction145 */,
+  4 /* Color of ReduceAction145 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1623 /* Id of ReduceAction146 */,
+  4 /* Color of ReduceAction146 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1619 /* Id of ReduceAction147 */,
+  4 /* Color of ReduceAction147 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1615 /* Id of ReduceAction148 */,
+  4 /* Color of ReduceAction148 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1611 /* Id of ReduceAction149 */,
+  4 /* Color of ReduceAction149 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1603 /* Id of ReduceAction150 */,
+  4 /* Color of ReduceAction150 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1599 /* Id of ReduceAction151 */,
+  4 /* Color of ReduceAction151 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1595 /* Id of ReduceAction152 */,
+  4 /* Color of ReduceAction152 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1591 /* Id of ReduceAction153 */,
+  4 /* Color of ReduceAction153 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1587 /* Id of ReduceAction154 */,
+  4 /* Color of ReduceAction154 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1583 /* Id of ReduceAction155 */,
+  4 /* Color of ReduceAction155 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1579 /* Id of ReduceAction156 */,
+  4 /* Color of ReduceAction156 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1575 /* Id of ReduceAction157 */,
+  4 /* Color of ReduceAction157 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1571 /* Id of ReduceAction158 */,
+  4 /* Color of ReduceAction158 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1567 /* Id of ReduceAction159 */,
+  4 /* Color of ReduceAction159 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1559 /* Id of ReduceAction160 */,
+  4 /* Color of ReduceAction160 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1555 /* Id of ReduceAction161 */,
+  4 /* Color of ReduceAction161 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1551 /* Id of ReduceAction162 */,
+  4 /* Color of ReduceAction162 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1547 /* Id of ReduceAction163 */,
+  4 /* Color of ReduceAction163 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1543 /* Id of ReduceAction164 */,
+  4 /* Color of ReduceAction164 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1539 /* Id of ReduceAction165 */,
+  4 /* Color of ReduceAction165 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1535 /* Id of ReduceAction166 */,
+  4 /* Color of ReduceAction166 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1531 /* Id of ReduceAction167 */,
+  4 /* Color of ReduceAction167 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1527 /* Id of ReduceAction168 */,
+  4 /* Color of ReduceAction168 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1523 /* Id of ReduceAction169 */,
+  4 /* Color of ReduceAction169 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1515 /* Id of ReduceAction170 */,
+  4 /* Color of ReduceAction170 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1511 /* Id of ReduceAction171 */,
+  4 /* Color of ReduceAction171 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1507 /* Id of ReduceAction172 */,
+  4 /* Color of ReduceAction172 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1503 /* Id of ReduceAction173 */,
+  4 /* Color of ReduceAction173 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1499 /* Id of ReduceAction174 */,
+  4 /* Color of ReduceAction174 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1495 /* Id of ReduceAction175 */,
+  4 /* Color of ReduceAction175 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1491 /* Id of ReduceAction176 */,
+  4 /* Color of ReduceAction176 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1487 /* Id of ReduceAction177 */,
+  4 /* Color of ReduceAction177 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1483 /* Id of ReduceAction178 */,
+  4 /* Color of ReduceAction178 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1479 /* Id of ReduceAction179 */,
+  4 /* Color of ReduceAction179 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1471 /* Id of ReduceAction180 */,
+  4 /* Color of ReduceAction180 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1467 /* Id of ReduceAction181 */,
+  4 /* Color of ReduceAction181 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1463 /* Id of ReduceAction182 */,
+  4 /* Color of ReduceAction182 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1459 /* Id of ReduceAction183 */,
+  4 /* Color of ReduceAction183 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1455 /* Id of ReduceAction184 */,
+  4 /* Color of ReduceAction184 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1451 /* Id of ReduceAction185 */,
+  4 /* Color of ReduceAction185 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1447 /* Id of ReduceAction186 */,
+  4 /* Color of ReduceAction186 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1443 /* Id of ReduceAction187 */,
+  4 /* Color of ReduceAction187 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1439 /* Id of ReduceAction188 */,
+  4 /* Color of ReduceAction188 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1435 /* Id of ReduceAction189 */,
+  4 /* Color of ReduceAction189 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1427 /* Id of ReduceAction190 */,
+  4 /* Color of ReduceAction190 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1423 /* Id of ReduceAction191 */,
+  4 /* Color of ReduceAction191 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1419 /* Id of ReduceAction192 */,
+  4 /* Color of ReduceAction192 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1415 /* Id of ReduceAction193 */,
+  4 /* Color of ReduceAction193 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1411 /* Id of ReduceAction194 */,
+  4 /* Color of ReduceAction194 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1407 /* Id of ReduceAction195 */,
+  4 /* Color of ReduceAction195 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1403 /* Id of ReduceAction196 */,
+  4 /* Color of ReduceAction196 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1399 /* Id of ReduceAction197 */,
+  4 /* Color of ReduceAction197 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1395 /* Id of ReduceAction198 */,
+  4 /* Color of ReduceAction198 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1391 /* Id of ReduceAction199 */,
+  4 /* Color of ReduceAction199 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1379 /* Id of ReduceAction200 */,
+  4 /* Color of ReduceAction200 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1375 /* Id of ReduceAction202 */,
+  4 /* Color of ReduceAction202 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1371 /* Id of ReduceAction203 */,
+  4 /* Color of ReduceAction203 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1367 /* Id of ReduceAction204 */,
+  4 /* Color of ReduceAction204 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1363 /* Id of ReduceAction205 */,
+  4 /* Color of ReduceAction205 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1359 /* Id of ReduceAction206 */,
+  4 /* Color of ReduceAction206 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1355 /* Id of ReduceAction207 */,
+  4 /* Color of ReduceAction207 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1351 /* Id of ReduceAction208 */,
+  4 /* Color of ReduceAction208 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1347 /* Id of ReduceAction209 */,
+  4 /* Color of ReduceAction209 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1339 /* Id of ReduceAction210 */,
+  4 /* Color of ReduceAction210 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1335 /* Id of ReduceAction213 */,
+  4 /* Color of ReduceAction213 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1331 /* Id of ReduceAction214 */,
+  4 /* Color of ReduceAction214 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1327 /* Id of ReduceAction215 */,
+  4 /* Color of ReduceAction215 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1323 /* Id of ReduceAction216 */,
+  4 /* Color of ReduceAction216 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1319 /* Id of ReduceAction217 */,
+  4 /* Color of ReduceAction217 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1315 /* Id of ReduceAction218 */,
+  4 /* Color of ReduceAction218 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1311 /* Id of ReduceAction219 */,
+  4 /* Color of ReduceAction219 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1303 /* Id of ReduceAction220 */,
+  4 /* Color of ReduceAction220 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1299 /* Id of ReduceAction221 */,
+  4 /* Color of ReduceAction221 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1295 /* Id of ReduceAction222 */,
+  4 /* Color of ReduceAction222 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1291 /* Id of ReduceAction223 */,
+  4 /* Color of ReduceAction223 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1283 /* Id of ReduceAction230 */,
+  4 /* Color of ReduceAction230 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1279 /* Id of ReduceAction231 */,
+  4 /* Color of ReduceAction231 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1275 /* Id of ReduceAction232 */,
+  4 /* Color of ReduceAction232 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1271 /* Id of ReduceAction233 */,
+  4 /* Color of ReduceAction233 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1267 /* Id of ReduceAction234 */,
+  4 /* Color of ReduceAction234 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1263 /* Id of ReduceAction235 */,
+  4 /* Color of ReduceAction235 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1259 /* Id of ReduceAction236 */,
+  4 /* Color of ReduceAction236 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1255 /* Id of ReduceAction237 */,
+  4 /* Color of ReduceAction237 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1251 /* Id of ReduceAction238 */,
+  4 /* Color of ReduceAction238 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1247 /* Id of ReduceAction239 */,
+  4 /* Color of ReduceAction239 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1239 /* Id of ReduceAction240 */,
+  4 /* Color of ReduceAction240 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1235 /* Id of ReduceAction241 */,
+  4 /* Color of ReduceAction241 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1231 /* Id of ReduceAction242 */,
+  4 /* Color of ReduceAction242 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1227 /* Id of ReduceAction243 */,
+  4 /* Color of ReduceAction243 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1223 /* Id of ReduceAction244 */,
+  4 /* Color of ReduceAction244 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1219 /* Id of ReduceAction245 */,
+  4 /* Color of ReduceAction245 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1215 /* Id of ReduceAction246 */,
+  4 /* Color of ReduceAction246 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1211 /* Id of ReduceAction247 */,
+  4 /* Color of ReduceAction247 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1207 /* Id of ReduceAction248 */,
+  4 /* Color of ReduceAction248 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1203 /* Id of ReduceAction249 */,
+  4 /* Color of ReduceAction249 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1195 /* Id of ReduceAction250 */,
+  4 /* Color of ReduceAction250 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1191 /* Id of ReduceAction251 */,
+  4 /* Color of ReduceAction251 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1187 /* Id of ReduceAction252 */,
+  4 /* Color of ReduceAction252 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1183 /* Id of ReduceAction253 */,
+  4 /* Color of ReduceAction253 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1179 /* Id of ReduceAction254 */,
+  4 /* Color of ReduceAction254 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1175 /* Id of ReduceAction255 */,
+  4 /* Color of ReduceAction255 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1171 /* Id of ReduceAction256 */,
+  4 /* Color of ReduceAction256 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1167 /* Id of ReduceAction257 */,
+  4 /* Color of ReduceAction257 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1163 /* Id of ReduceAction258 */,
+  4 /* Color of ReduceAction258 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1159 /* Id of ReduceAction259 */,
+  4 /* Color of ReduceAction259 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1151 /* Id of ReduceAction260 */,
+  4 /* Color of ReduceAction260 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1147 /* Id of ReduceAction261 */,
+  4 /* Color of ReduceAction261 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1143 /* Id of ReduceAction262 */,
+  4 /* Color of ReduceAction262 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1139 /* Id of ReduceAction263 */,
+  4 /* Color of ReduceAction263 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1135 /* Id of ReduceAction264 */,
+  4 /* Color of ReduceAction264 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1131 /* Id of ReduceAction265 */,
+  4 /* Color of ReduceAction265 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1127 /* Id of ReduceAction266 */,
+  4 /* Color of ReduceAction266 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1123 /* Id of ReduceAction267 */,
+  4 /* Color of ReduceAction267 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1119 /* Id of ReduceAction268 */,
+  4 /* Color of ReduceAction268 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1115 /* Id of ReduceAction269 */,
+  4 /* Color of ReduceAction269 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1107 /* Id of ReduceAction270 */,
+  4 /* Color of ReduceAction270 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1103 /* Id of ReduceAction271 */,
+  4 /* Color of ReduceAction271 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1099 /* Id of ReduceAction272 */,
+  4 /* Color of ReduceAction272 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1095 /* Id of ReduceAction273 */,
+  4 /* Color of ReduceAction273 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1091 /* Id of ReduceAction274 */,
+  4 /* Color of ReduceAction274 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1087 /* Id of ReduceAction275 */,
+  4 /* Color of ReduceAction275 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1083 /* Id of ReduceAction276 */,
+  4 /* Color of ReduceAction276 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1079 /* Id of ReduceAction279 */,
+  4 /* Color of ReduceAction279 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1071 /* Id of ReduceAction280 */,
+  4 /* Color of ReduceAction280 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1067 /* Id of ReduceAction281 */,
+  4 /* Color of ReduceAction281 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1063 /* Id of ReduceAction282 */,
+  4 /* Color of ReduceAction282 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1059 /* Id of ReduceAction283 */,
+  4 /* Color of ReduceAction283 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1055 /* Id of ReduceAction284 */,
+  4 /* Color of ReduceAction284 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1051 /* Id of ReduceAction285 */,
+  4 /* Color of ReduceAction285 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1047 /* Id of ReduceAction286 */,
+  4 /* Color of ReduceAction286 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1043 /* Id of ReduceAction287 */,
+  4 /* Color of ReduceAction287 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1039 /* Id of ReduceAction288 */,
+  4 /* Color of ReduceAction288 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1035 /* Id of ReduceAction289 */,
+  4 /* Color of ReduceAction289 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1027 /* Id of ReduceAction293 */,
+  4 /* Color of ReduceAction293 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1023 /* Id of ReduceAction295 */,
+  4 /* Color of ReduceAction295 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1019 /* Id of ReduceAction297 */,
+  4 /* Color of ReduceAction297 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1015 /* Id of ReduceAction298 */,
+  4 /* Color of ReduceAction298 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1011 /* Id of ReduceAction299 */,
+  4 /* Color of ReduceAction299 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  999 /* Id of ReduceAction301 */,
+  4 /* Color of ReduceAction301 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  995 /* Id of ReduceAction303 */,
+  4 /* Color of ReduceAction303 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  991 /* Id of ReduceAction304 */,
+  4 /* Color of ReduceAction304 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  987 /* Id of ReduceAction305 */,
+  4 /* Color of ReduceAction305 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  983 /* Id of ReduceAction306 */,
+  4 /* Color of ReduceAction306 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  979 /* Id of ReduceAction307 */,
+  4 /* Color of ReduceAction307 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  975 /* Id of ReduceAction308 */,
+  4 /* Color of ReduceAction308 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  971 /* Id of ReduceAction309 */,
+  4 /* Color of ReduceAction309 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  963 /* Id of ReduceAction310 */,
+  4 /* Color of ReduceAction310 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  959 /* Id of ReduceAction311 */,
+  4 /* Color of ReduceAction311 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  955 /* Id of ReduceAction312 */,
+  4 /* Color of ReduceAction312 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  951 /* Id of ReduceAction313 */,
+  4 /* Color of ReduceAction313 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  947 /* Id of ReduceAction315 */,
+  4 /* Color of ReduceAction315 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  943 /* Id of ReduceAction316 */,
+  4 /* Color of ReduceAction316 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  939 /* Id of ReduceAction318 */,
+  4 /* Color of ReduceAction318 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  935 /* Id of ReduceAction319 */,
+  4 /* Color of ReduceAction319 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  927 /* Id of ReduceAction320 */,
+  4 /* Color of ReduceAction320 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  923 /* Id of ReduceAction322 */,
+  4 /* Color of ReduceAction322 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  919 /* Id of ReduceAction323 */,
+  4 /* Color of ReduceAction323 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  915 /* Id of ReduceAction325 */,
+  4 /* Color of ReduceAction325 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  911 /* Id of ReduceAction326 */,
+  4 /* Color of ReduceAction326 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  907 /* Id of ReduceAction327 */,
+  4 /* Color of ReduceAction327 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  903 /* Id of ReduceAction328 */,
+  4 /* Color of ReduceAction328 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  899 /* Id of ReduceAction329 */,
+  4 /* Color of ReduceAction329 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  891 /* Id of ReduceAction336 */,
+  4 /* Color of ReduceAction336 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  887 /* Id of ReduceAction337 */,
+  4 /* Color of ReduceAction337 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  883 /* Id of ReduceAction338 */,
+  4 /* Color of ReduceAction338 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  879 /* Id of ReduceAction339 */,
+  4 /* Color of ReduceAction339 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  871 /* Id of ReduceAction340 */,
+  4 /* Color of ReduceAction340 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  867 /* Id of ReduceAction341 */,
+  4 /* Color of ReduceAction341 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  863 /* Id of ReduceAction342 */,
+  4 /* Color of ReduceAction342 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  859 /* Id of ReduceAction343 */,
+  4 /* Color of ReduceAction343 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  855 /* Id of ReduceAction344 */,
+  4 /* Color of ReduceAction344 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  851 /* Id of ReduceAction345 */,
+  4 /* Color of ReduceAction345 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  847 /* Id of ReduceAction346 */,
+  4 /* Color of ReduceAction346 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  843 /* Id of ReduceAction347 */,
+  4 /* Color of ReduceAction347 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  839 /* Id of ReduceAction348 */,
+  4 /* Color of ReduceAction348 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  831 /* Id of ReduceAction351 */,
+  4 /* Color of ReduceAction351 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  827 /* Id of ReduceAction352 */,
+  4 /* Color of ReduceAction352 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  823 /* Id of ReduceAction353 */,
+  4 /* Color of ReduceAction353 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  819 /* Id of ReduceAction354 */,
+  4 /* Color of ReduceAction354 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  815 /* Id of ReduceAction355 */,
+  4 /* Color of ReduceAction355 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  811 /* Id of ReduceAction356 */,
+  4 /* Color of ReduceAction356 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  807 /* Id of ReduceAction358 */,
+  4 /* Color of ReduceAction358 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  803 /* Id of ReduceAction359 */,
+  4 /* Color of ReduceAction359 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  795 /* Id of ReduceAction360 */,
+  4 /* Color of ReduceAction360 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  791 /* Id of ReduceAction361 */,
+  4 /* Color of ReduceAction361 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  787 /* Id of ReduceAction363 */,
+  4 /* Color of ReduceAction363 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  783 /* Id of ReduceAction366 */,
+  4 /* Color of ReduceAction366 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  775 /* Id of ReduceAction371 */,
+  4 /* Color of ReduceAction371 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  771 /* Id of ReduceAction372 */,
+  4 /* Color of ReduceAction372 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  767 /* Id of ReduceAction373 */,
+  4 /* Color of ReduceAction373 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  763 /* Id of ReduceAction374 */,
+  4 /* Color of ReduceAction374 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  759 /* Id of ReduceAction375 */,
+  4 /* Color of ReduceAction375 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  755 /* Id of ReduceAction376 */,
+  4 /* Color of ReduceAction376 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  751 /* Id of ReduceAction377 */,
+  4 /* Color of ReduceAction377 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  747 /* Id of ReduceAction378 */,
+  4 /* Color of ReduceAction378 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  743 /* Id of ReduceAction379 */,
+  4 /* Color of ReduceAction379 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  739 /* Id of ReduceAction380 */,
+  4 /* Color of ReduceAction380 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  735 /* Id of ReduceAction381 */,
+  4 /* Color of ReduceAction381 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  731 /* Id of ReduceAction383 */,
+  4 /* Color of ReduceAction383 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  727 /* Id of ReduceAction384 */,
+  4 /* Color of ReduceAction384 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  723 /* Id of ReduceAction386 */,
+  4 /* Color of ReduceAction386 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  719 /* Id of ReduceAction387 */,
+  4 /* Color of ReduceAction387 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  715 /* Id of ReduceAction388 */,
+  4 /* Color of ReduceAction388 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  711 /* Id of ReduceAction389 */,
+  4 /* Color of ReduceAction389 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  595 /* Id of ReduceAction637 */,
+  4 /* Color of ReduceAction637 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  591 /* Id of ReduceAction638 */,
+  4 /* Color of ReduceAction638 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  587 /* Id of ReduceAction639 */,
+  4 /* Color of ReduceAction639 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  579 /* Id of ReduceAction642 */,
+  4 /* Color of ReduceAction642 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  571 /* Id of ReduceAction655 */,
+  4 /* Color of ReduceAction655 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  567 /* Id of ReduceAction656 */,
+  4 /* Color of ReduceAction656 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  559 /* Id of ReduceAction663 */,
+  4 /* Color of ReduceAction663 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  555 /* Id of ReduceAction664 */,
+  4 /* Color of ReduceAction664 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  551 /* Id of ReduceAction665 */,
+  4 /* Color of ReduceAction665 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  547 /* Id of ReduceAction666 */,
+  4 /* Color of ReduceAction666 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  543 /* Id of ReduceAction667 */,
+  4 /* Color of ReduceAction667 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  539 /* Id of ReduceAction668 */,
+  4 /* Color of ReduceAction668 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  535 /* Id of ReduceAction669 */,
+  4 /* Color of ReduceAction669 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  527 /* Id of ReduceAction670 */,
+  4 /* Color of ReduceAction670 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  523 /* Id of ReduceAction673 */,
+  4 /* Color of ReduceAction673 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  519 /* Id of ReduceAction674 */,
+  4 /* Color of ReduceAction674 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  515 /* Id of ReduceAction675 */,
+  4 /* Color of ReduceAction675 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  511 /* Id of ReduceAction676 */,
+  4 /* Color of ReduceAction676 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  507 /* Id of ReduceAction677 */,
+  4 /* Color of ReduceAction677 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  503 /* Id of ReduceAction678 */,
+  4 /* Color of ReduceAction678 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  495 /* Id of ReduceAction680 */,
+  4 /* Color of ReduceAction680 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  491 /* Id of ReduceAction682 */,
+  4 /* Color of ReduceAction682 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  487 /* Id of ReduceAction684 */,
+  4 /* Color of ReduceAction684 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  483 /* Id of ReduceAction688 */,
+  4 /* Color of ReduceAction688 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  479 /* Id of ReduceAction689 */,
+  4 /* Color of ReduceAction689 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  471 /* Id of ReduceAction690 */,
+  4 /* Color of ReduceAction690 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  467 /* Id of ReduceAction691 */,
+  4 /* Color of ReduceAction691 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  463 /* Id of ReduceAction692 */,
+  4 /* Color of ReduceAction692 */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute APlusExpr::_parent */
-/* 2: Attribute APlusExpr::_first_token */
-/* 3: Attribute APlusExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute APlusExpr::_is_typed */
-/* 6: Attribute APlusExpr::_stype */
-/* 7: Attribute APlusExpr::_if_true_variable_ctx */
-/* 8: Attribute APlusExpr::_if_false_variable_ctx */
-/* 9: Attribute APlusExpr::_prop_signature */
-/* 10: Attribute APlusExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute APlusExpr::_prop */
-/* 15: Attribute APlusExpr::_return_type */
-/* 16: Attribute APlusExpr::_n_expr */
-/* 17: Attribute APlusExpr::_n_closure_defs */
-/* 18: Attribute APlusExpr::_n_expr2 */
-val_t NEW_APlusExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_APlusExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_APlusExpr(val_t self, char *from) {
-}
-val_t NEW_APlusExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APlusExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_APlusExpr(self, "parser_nodes::PNode::init for APlusExpr");
-  return self;
-}
-val_t NEW_APlusExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APlusExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_APlusExpr(self, "parser_prod::ASendExpr::empty_init for APlusExpr");
-  return self;
-}
-val_t NEW_APlusExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APlusExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_APlusExpr(self, "parser_prod::ASendExpr::init_asendexpr for APlusExpr");
-  return self;
-}
-val_t NEW_APlusExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APlusExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_APlusExpr(self, "parser_prod::ABinopExpr::empty_init for APlusExpr");
-  return self;
-}
-val_t NEW_APlusExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APlusExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_APlusExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for APlusExpr");
-  return self;
-}
-val_t NEW_APlusExpr_parser_prod___APlusExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APlusExpr();
-  parser_prod___APlusExpr___empty_init(self, init_table);
-  CHECKNEW_APlusExpr(self, "parser_prod::APlusExpr::empty_init for APlusExpr");
-  return self;
-}
-val_t NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APlusExpr();
-  parser_prod___APlusExpr___init_aplusexpr(self, p0, p1, init_table);
-  CHECKNEW_APlusExpr(self, "parser_prod::APlusExpr::init_aplusexpr for APlusExpr");
-  return self;
-}
-const classtable_elt_t VFT_AMinusExpr[130] = {
-  {(bigint) 4643 /* 0: Identity */},
-  {(bigint) 3 /* 1: AMinusExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AMinusExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AMinusExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: AMinusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AMinusExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: AMinusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: AMinusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: AMinusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: AMinusExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4643 /* 11: AMinusExpr < AMinusExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: AMinusExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AMinusExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AMinusExpr___visit_all},
-  {(bigint) parser_prod___AMinusExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: AMinusExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: AMinusExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: AMinusExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: AMinusExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: AMinusExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: AMinusExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___AMinusExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: AMinusExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___AMinusExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: AMinusExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___AMinusExpr___n_expr2__eq},
-  {(bigint) parser_prod___AMinusExpr___empty_init},
-  {(bigint) parser_prod___AMinusExpr___init_aminusexpr},
-  {(bigint) 9 /* 129: AMinusExpr < AMinusExpr: superclass init_table position */},
+const char *LOCATE_parser_prod = "./parser//parser_prod.nit";
+const int SFT_parser_prod[140] = {
+  2 /* Group of ? */,
+  52 /* Group of ? */,
+  64 /* Group of ? */,
+  15 /* Id of Visitor */,
+  3 /* Color of Visitor */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  68 /* Group of ? */,
+  67 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  69 /* Group of ? */,
+  69 /* Group of ? */,
+  69 /* Group of ? */,
+  69 /* Group of ? */,
+  78 /* Group of ? */,
+  77 /* Group of ? */,
+  77 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  69 /* Group of ? */,
+  71 /* Group of ? */,
+  80 /* Group of ? */,
+  79 /* Group of ? */,
+  89 /* Group of ? */,
+  89 /* Group of ? */,
+  90 /* Group of ? */,
+  90 /* Group of ? */,
+  99 /* Group of ? */,
+  95 /* Group of ? */,
+  78 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  70 /* Group of ? */,
+  69 /* Group of ? */,
+  73 /* Group of ? */,
+  70 /* Group of ? */,
+  74 /* Group of ? */,
+  67 /* Group of ? */,
+  79 /* Group of ? */,
+  80 /* Group of ? */,
+  79 /* Group of ? */,
+  83 /* Group of ? */,
+  79 /* Group of ? */,
+  83 /* Group of ? */,
+  83 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  83 /* Group of ? */,
+  83 /* Group of ? */,
+  84 /* Group of ? */,
+  79 /* Group of ? */,
+  82 /* Group of ? */,
+  103 /* Group of ? */,
+  108 /* Group of ? */,
+  80 /* Group of ? */,
+  80 /* Group of ? */,
+  80 /* Group of ? */,
+  80 /* Group of ? */,
+  114 /* Group of ? */,
+  80 /* Group of ? */,
+  114 /* Group of ? */,
+  112 /* Group of ? */,
+  112 /* Group of ? */,
+  112 /* Group of ? */,
+  112 /* Group of ? */,
+  112 /* Group of ? */,
+  112 /* Group of ? */,
+  80 /* Group of ? */,
+  112 /* Group of ? */,
+  112 /* Group of ? */,
+  112 /* Group of ? */,
+  112 /* Group of ? */,
+  112 /* Group of ? */,
+  112 /* Group of ? */,
+  108 /* Group of ? */,
+  100 /* Group of ? */,
+  93 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  113 /* Group of ? */,
+  79 /* Group of ? */,
+  113 /* Group of ? */,
+  101 /* Group of ? */,
+  108 /* Group of ? */,
+  110 /* Group of ? */,
+  79 /* Group of ? */,
+  110 /* Group of ? */,
+  95 /* Group of ? */,
+  82 /* Group of ? */,
+  85 /* Group of ? */,
+  87 /* Group of ? */,
+  79 /* Group of ? */,
+  84 /* Group of ? */,
+  84 /* Group of ? */,
+  80 /* Group of ? */,
+  80 /* Group of ? */,
+  84 /* Group of ? */,
+  80 /* Group of ? */,
+  80 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
+  80 /* Group of ? */,
+  81 /* Group of ? */,
+  79 /* Group of ? */,
+  79 /* Group of ? */,
+  93 /* Group of ? */,
+  69 /* Group of ? */,
+  69 /* Group of ? */,
+  76 /* Group of ? */,
+  69 /* Group of ? */,
+  69 /* Group of ? */,
+  67 /* Group of ? */,
+  67 /* Group of ? */,
+  67 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AMinusExpr::_parent */
-/* 2: Attribute AMinusExpr::_first_token */
-/* 3: Attribute AMinusExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AMinusExpr::_is_typed */
-/* 6: Attribute AMinusExpr::_stype */
-/* 7: Attribute AMinusExpr::_if_true_variable_ctx */
-/* 8: Attribute AMinusExpr::_if_false_variable_ctx */
-/* 9: Attribute AMinusExpr::_prop_signature */
-/* 10: Attribute AMinusExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AMinusExpr::_prop */
-/* 15: Attribute AMinusExpr::_return_type */
-/* 16: Attribute AMinusExpr::_n_expr */
-/* 17: Attribute AMinusExpr::_n_closure_defs */
-/* 18: Attribute AMinusExpr::_n_expr2 */
-val_t NEW_AMinusExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_AMinusExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AMinusExpr(val_t self, char *from) {
-}
-val_t NEW_AMinusExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AMinusExpr(self, "parser_nodes::PNode::init for AMinusExpr");
-  return self;
-}
-val_t NEW_AMinusExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_AMinusExpr(self, "parser_prod::ASendExpr::empty_init for AMinusExpr");
-  return self;
-}
-val_t NEW_AMinusExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_AMinusExpr(self, "parser_prod::ASendExpr::init_asendexpr for AMinusExpr");
-  return self;
-}
-val_t NEW_AMinusExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_AMinusExpr(self, "parser_prod::ABinopExpr::empty_init for AMinusExpr");
-  return self;
-}
-val_t NEW_AMinusExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_AMinusExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for AMinusExpr");
-  return self;
-}
-val_t NEW_AMinusExpr_parser_prod___AMinusExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusExpr();
-  parser_prod___AMinusExpr___empty_init(self, init_table);
-  CHECKNEW_AMinusExpr(self, "parser_prod::AMinusExpr::empty_init for AMinusExpr");
-  return self;
-}
-val_t NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusExpr();
-  parser_prod___AMinusExpr___init_aminusexpr(self, p0, p1, init_table);
-  CHECKNEW_AMinusExpr(self, "parser_prod::AMinusExpr::init_aminusexpr for AMinusExpr");
-  return self;
-}
-const classtable_elt_t VFT_AStarshipExpr[130] = {
-  {(bigint) 4619 /* 0: Identity */},
-  {(bigint) 3 /* 1: AStarshipExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AStarshipExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AStarshipExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: AStarshipExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AStarshipExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: AStarshipExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: AStarshipExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: AStarshipExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: AStarshipExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4619 /* 11: AStarshipExpr < AStarshipExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: AStarshipExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AStarshipExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AStarshipExpr___visit_all},
-  {(bigint) parser_prod___AStarshipExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: AStarshipExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: AStarshipExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: AStarshipExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: AStarshipExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: AStarshipExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: AStarshipExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___AStarshipExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: AStarshipExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___AStarshipExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: AStarshipExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___AStarshipExpr___n_expr2__eq},
-  {(bigint) parser_prod___AStarshipExpr___empty_init},
-  {(bigint) parser_prod___AStarshipExpr___init_astarshipexpr},
-  {(bigint) 9 /* 129: AStarshipExpr < AStarshipExpr: superclass init_table position */},
+const char *LOCATE_lexer = "./parser//lexer.nit";
+const int SFT_lexer[98] = {
+  5 /* Group of ? */,
+  65 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  68 /* Group of ? */,
+  6 /* Group of ? */,
+  71 /* Group of ? */,
+  1983 /* Id of Lexer */,
+  4 /* Color of Lexer */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AStarshipExpr::_parent */
-/* 2: Attribute AStarshipExpr::_first_token */
-/* 3: Attribute AStarshipExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AStarshipExpr::_is_typed */
-/* 6: Attribute AStarshipExpr::_stype */
-/* 7: Attribute AStarshipExpr::_if_true_variable_ctx */
-/* 8: Attribute AStarshipExpr::_if_false_variable_ctx */
-/* 9: Attribute AStarshipExpr::_prop_signature */
-/* 10: Attribute AStarshipExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AStarshipExpr::_prop */
-/* 15: Attribute AStarshipExpr::_return_type */
-/* 16: Attribute AStarshipExpr::_n_expr */
-/* 17: Attribute AStarshipExpr::_n_closure_defs */
-/* 18: Attribute AStarshipExpr::_n_expr2 */
-val_t NEW_AStarshipExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_AStarshipExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AStarshipExpr(val_t self, char *from) {
-}
-val_t NEW_AStarshipExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarshipExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AStarshipExpr(self, "parser_nodes::PNode::init for AStarshipExpr");
-  return self;
-}
-val_t NEW_AStarshipExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarshipExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_AStarshipExpr(self, "parser_prod::ASendExpr::empty_init for AStarshipExpr");
-  return self;
-}
-val_t NEW_AStarshipExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarshipExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_AStarshipExpr(self, "parser_prod::ASendExpr::init_asendexpr for AStarshipExpr");
-  return self;
-}
-val_t NEW_AStarshipExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarshipExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_AStarshipExpr(self, "parser_prod::ABinopExpr::empty_init for AStarshipExpr");
-  return self;
-}
-val_t NEW_AStarshipExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarshipExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_AStarshipExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for AStarshipExpr");
-  return self;
-}
-val_t NEW_AStarshipExpr_parser_prod___AStarshipExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarshipExpr();
-  parser_prod___AStarshipExpr___empty_init(self, init_table);
-  CHECKNEW_AStarshipExpr(self, "parser_prod::AStarshipExpr::empty_init for AStarshipExpr");
-  return self;
-}
-val_t NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarshipExpr();
-  parser_prod___AStarshipExpr___init_astarshipexpr(self, p0, p1, init_table);
-  CHECKNEW_AStarshipExpr(self, "parser_prod::AStarshipExpr::init_astarshipexpr for AStarshipExpr");
-  return self;
-}
-const classtable_elt_t VFT_AStarExpr[130] = {
-  {(bigint) 4623 /* 0: Identity */},
-  {(bigint) 3 /* 1: AStarExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AStarExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AStarExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: AStarExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AStarExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: AStarExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: AStarExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: AStarExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: AStarExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4623 /* 11: AStarExpr < AStarExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: AStarExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AStarExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AStarExpr___visit_all},
-  {(bigint) parser_prod___AStarExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: AStarExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: AStarExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: AStarExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: AStarExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: AStarExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: AStarExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___AStarExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: AStarExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___AStarExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: AStarExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___AStarExpr___n_expr2__eq},
-  {(bigint) parser_prod___AStarExpr___empty_init},
-  {(bigint) parser_prod___AStarExpr___init_astarexpr},
-  {(bigint) 9 /* 129: AStarExpr < AStarExpr: superclass init_table position */},
+const char *LOCATE_parser_nodes = "./parser//parser_nodes.nit";
+const int SFT_parser_nodes[853] = {
+  275 /* Id of ANode */,
+  3 /* Color of ANode */,
+  3 /* Group of ? */,
+  58 /* Group of ? */,
+  295 /* Id of Token */,
+  4 /* Color of Token */,
+  67 /* Group of ? */,
+  1859 /* Id of Prod */,
+  4 /* Color of Prod */,
+  65 /* Group of ? */,
+  2479 /* Id of TEol */,
+  5 /* Color of TEol */,
+  69 /* Group of ? */,
+  2503 /* Id of TComment */,
+  5 /* Color of TComment */,
+  69 /* Group of ? */,
+  2339 /* Id of TKwmodule */,
+  5 /* Color of TKwmodule */,
+  69 /* Group of ? */,
+  2387 /* Id of TKwimport */,
+  5 /* Color of TKwimport */,
+  69 /* Group of ? */,
+  2427 /* Id of TKwclass */,
+  5 /* Color of TKwclass */,
+  69 /* Group of ? */,
+  2447 /* Id of TKwabstract */,
+  5 /* Color of TKwabstract */,
+  69 /* Group of ? */,
+  2375 /* Id of TKwinterface */,
+  5 /* Color of TKwinterface */,
+  69 /* Group of ? */,
+  2407 /* Id of TKwenum */,
+  5 /* Color of TKwenum */,
+  69 /* Group of ? */,
+  2287 /* Id of TKwspecial */,
+  5 /* Color of TKwspecial */,
+  69 /* Group of ? */,
+  2411 /* Id of TKwend */,
+  5 /* Color of TKwend */,
+  69 /* Group of ? */,
+  2343 /* Id of TKwmeth */,
+  5 /* Color of TKwmeth */,
+  69 /* Group of ? */,
+  2271 /* Id of TKwtype */,
+  5 /* Color of TKwtype */,
+  69 /* Group of ? */,
+  2379 /* Id of TKwinit */,
+  5 /* Color of TKwinit */,
+  69 /* Group of ? */,
+  2299 /* Id of TKwredef */,
+  5 /* Color of TKwredef */,
+  69 /* Group of ? */,
+  2363 /* Id of TKwis */,
+  5 /* Color of TKwis */,
+  69 /* Group of ? */,
+  2419 /* Id of TKwdo */,
+  5 /* Color of TKwdo */,
+  69 /* Group of ? */,
+  2303 /* Id of TKwreadable */,
+  5 /* Color of TKwreadable */,
+  69 /* Group of ? */,
+  2259 /* Id of TKwwritable */,
+  5 /* Color of TKwwritable */,
+  69 /* Group of ? */,
+  2267 /* Id of TKwvar */,
+  5 /* Color of TKwvar */,
+  69 /* Group of ? */,
+  2371 /* Id of TKwintern */,
+  5 /* Color of TKwintern */,
+  69 /* Group of ? */,
+  2403 /* Id of TKwextern */,
+  5 /* Color of TKwextern */,
+  69 /* Group of ? */,
+  2307 /* Id of TKwprotected */,
+  5 /* Color of TKwprotected */,
+  69 /* Group of ? */,
+  2311 /* Id of TKwprivate */,
+  5 /* Color of TKwprivate */,
+  69 /* Group of ? */,
+  2367 /* Id of TKwintrude */,
+  5 /* Color of TKwintrude */,
+  69 /* Group of ? */,
+  2391 /* Id of TKwif */,
+  5 /* Color of TKwif */,
+  69 /* Group of ? */,
+  2279 /* Id of TKwthen */,
+  5 /* Color of TKwthen */,
+  69 /* Group of ? */,
+  2415 /* Id of TKwelse */,
+  5 /* Color of TKwelse */,
+  69 /* Group of ? */,
+  2263 /* Id of TKwwhile */,
+  5 /* Color of TKwwhile */,
+  69 /* Group of ? */,
+  2347 /* Id of TKwloop */,
+  5 /* Color of TKwloop */,
+  69 /* Group of ? */,
+  2395 /* Id of TKwfor */,
+  5 /* Color of TKwfor */,
+  69 /* Group of ? */,
+  2383 /* Id of TKwin */,
+  5 /* Color of TKwin */,
+  69 /* Group of ? */,
+  2443 /* Id of TKwand */,
+  5 /* Color of TKwand */,
+  69 /* Group of ? */,
+  2315 /* Id of TKwor */,
+  5 /* Color of TKwor */,
+  69 /* Group of ? */,
+  2331 /* Id of TKwnot */,
+  5 /* Color of TKwnot */,
+  69 /* Group of ? */,
+  2295 /* Id of TKwreturn */,
+  5 /* Color of TKwreturn */,
+  69 /* Group of ? */,
+  2423 /* Id of TKwcontinue */,
+  5 /* Color of TKwcontinue */,
+  69 /* Group of ? */,
+  2431 /* Id of TKwbreak */,
+  5 /* Color of TKwbreak */,
+  69 /* Group of ? */,
+  2451 /* Id of TKwabort */,
+  5 /* Color of TKwabort */,
+  69 /* Group of ? */,
+  2435 /* Id of TKwassert */,
+  5 /* Color of TKwassert */,
+  69 /* Group of ? */,
+  2335 /* Id of TKwnew */,
+  5 /* Color of TKwnew */,
+  69 /* Group of ? */,
+  2359 /* Id of TKwisa */,
+  5 /* Color of TKwisa */,
+  69 /* Group of ? */,
+  2319 /* Id of TKwonce */,
+  5 /* Color of TKwonce */,
+  69 /* Group of ? */,
+  2283 /* Id of TKwsuper */,
+  5 /* Color of TKwsuper */,
+  69 /* Group of ? */,
+  2291 /* Id of TKwself */,
+  5 /* Color of TKwself */,
+  69 /* Group of ? */,
+  2275 /* Id of TKwtrue */,
+  5 /* Color of TKwtrue */,
+  69 /* Group of ? */,
+  2399 /* Id of TKwfalse */,
+  5 /* Color of TKwfalse */,
+  69 /* Group of ? */,
+  2327 /* Id of TKwnull */,
+  5 /* Color of TKwnull */,
+  69 /* Group of ? */,
+  2439 /* Id of TKwas */,
+  5 /* Color of TKwas */,
+  69 /* Group of ? */,
+  2323 /* Id of TKwnullable */,
+  5 /* Color of TKwnullable */,
+  69 /* Group of ? */,
+  2355 /* Id of TKwisset */,
+  5 /* Color of TKwisset */,
+  69 /* Group of ? */,
+  2351 /* Id of TKwlabel */,
+  5 /* Color of TKwlabel */,
+  69 /* Group of ? */,
+  2219 /* Id of TOpar */,
+  5 /* Color of TOpar */,
+  69 /* Group of ? */,
+  2499 /* Id of TCpar */,
+  5 /* Color of TCpar */,
+  69 /* Group of ? */,
+  2223 /* Id of TObra */,
+  5 /* Color of TObra */,
+  69 /* Group of ? */,
+  2523 /* Id of TCbra */,
+  5 /* Color of TCbra */,
+  69 /* Group of ? */,
+  2507 /* Id of TComma */,
+  5 /* Color of TComma */,
+  69 /* Group of ? */,
+  2511 /* Id of TColumn */,
+  5 /* Color of TColumn */,
+  69 /* Group of ? */,
+  2203 /* Id of TQuad */,
+  5 /* Color of TQuad */,
+  69 /* Group of ? */,
+  2535 /* Id of TAssign */,
+  5 /* Color of TAssign */,
+  69 /* Group of ? */,
+  2207 /* Id of TPluseq */,
+  5 /* Color of TPluseq */,
+  69 /* Group of ? */,
+  2235 /* Id of TMinuseq */,
+  5 /* Color of TMinuseq */,
+  69 /* Group of ? */,
+  2487 /* Id of TDotdotdot */,
+  5 /* Color of TDotdotdot */,
+  69 /* Group of ? */,
+  2491 /* Id of TDotdot */,
+  5 /* Color of TDotdot */,
+  69 /* Group of ? */,
+  2495 /* Id of TDot */,
+  5 /* Color of TDot */,
+  69 /* Group of ? */,
+  2211 /* Id of TPlus */,
+  5 /* Color of TPlus */,
+  69 /* Group of ? */,
+  2239 /* Id of TMinus */,
+  5 /* Color of TMinus */,
+  69 /* Group of ? */,
+  2195 /* Id of TStar */,
+  5 /* Color of TStar */,
+  69 /* Group of ? */,
+  2199 /* Id of TSlash */,
+  5 /* Color of TSlash */,
+  69 /* Group of ? */,
+  2215 /* Id of TPercent */,
+  5 /* Color of TPercent */,
+  69 /* Group of ? */,
+  2475 /* Id of TEq */,
+  5 /* Color of TEq */,
+  69 /* Group of ? */,
+  2231 /* Id of TNe */,
+  5 /* Color of TNe */,
+  69 /* Group of ? */,
+  2247 /* Id of TLt */,
+  5 /* Color of TLt */,
+  69 /* Group of ? */,
+  2255 /* Id of TLe */,
+  5 /* Color of TLe */,
+  69 /* Group of ? */,
+  2251 /* Id of TLl */,
+  5 /* Color of TLl */,
+  69 /* Group of ? */,
+  2459 /* Id of TGt */,
+  5 /* Color of TGt */,
+  69 /* Group of ? */,
+  2467 /* Id of TGe */,
+  5 /* Color of TGe */,
+  69 /* Group of ? */,
+  2463 /* Id of TGg */,
+  5 /* Color of TGg */,
+  69 /* Group of ? */,
+  2191 /* Id of TStarship */,
+  5 /* Color of TStarship */,
+  69 /* Group of ? */,
+  2527 /* Id of TBang */,
+  5 /* Color of TBang */,
+  69 /* Group of ? */,
+  2515 /* Id of TClassid */,
+  5 /* Color of TClassid */,
+  69 /* Group of ? */,
+  2455 /* Id of TId */,
+  5 /* Color of TId */,
+  69 /* Group of ? */,
+  2531 /* Id of TAttrid */,
+  5 /* Color of TAttrid */,
+  69 /* Group of ? */,
+  2227 /* Id of TNumber */,
+  5 /* Color of TNumber */,
+  69 /* Group of ? */,
+  2471 /* Id of TFloat */,
+  5 /* Color of TFloat */,
+  69 /* Group of ? */,
+  2519 /* Id of TChar */,
+  5 /* Color of TChar */,
+  69 /* Group of ? */,
+  2183 /* Id of TString */,
+  5 /* Color of TString */,
+  69 /* Group of ? */,
+  2187 /* Id of TStartString */,
+  5 /* Color of TStartString */,
+  69 /* Group of ? */,
+  2243 /* Id of TMidString */,
+  5 /* Color of TMidString */,
+  69 /* Group of ? */,
+  2483 /* Id of TEndString */,
+  5 /* Color of TEndString */,
+  69 /* Group of ? */,
+  2751 /* Id of EOF */,
+  5 /* Color of EOF */,
+  69 /* Group of ? */,
+  3171 /* Id of AError */,
+  6 /* Color of AError */,
+  73 /* Group of ? */,
+  2823 /* Id of AModule */,
+  5 /* Color of AModule */,
+  6 /* Group of ? */,
+  70 /* Group of ? */,
+  2819 /* Id of AModuledecl */,
+  5 /* Color of AModuledecl */,
+  6 /* Group of ? */,
+  69 /* Group of ? */,
+  2839 /* Id of AImport */,
+  5 /* Color of AImport */,
+  69 /* Group of ? */,
+  3015 /* Id of AStdImport */,
+  6 /* Color of AStdImport */,
+  6 /* Group of ? */,
+  72 /* Group of ? */,
+  3091 /* Id of ANoImport */,
+  6 /* Color of ANoImport */,
+  6 /* Group of ? */,
+  72 /* Group of ? */,
+  2791 /* Id of AVisibility */,
+  5 /* Color of AVisibility */,
+  68 /* Group of ? */,
+  3059 /* Id of APublicVisibility */,
+  6 /* Color of APublicVisibility */,
+  71 /* Group of ? */,
+  3071 /* Id of APrivateVisibility */,
+  6 /* Color of APrivateVisibility */,
+  6 /* Group of ? */,
+  71 /* Group of ? */,
+  3067 /* Id of AProtectedVisibility */,
+  6 /* Color of AProtectedVisibility */,
+  6 /* Group of ? */,
+  71 /* Group of ? */,
+  3127 /* Id of AIntrudeVisibility */,
+  6 /* Color of AIntrudeVisibility */,
+  6 /* Group of ? */,
+  71 /* Group of ? */,
+  2867 /* Id of AClassdef */,
+  5 /* Color of AClassdef */,
+  75 /* Group of ? */,
+  3019 /* Id of AStdClassdef */,
+  6 /* Color of AStdClassdef */,
+  8 /* Group of ? */,
+  80 /* Group of ? */,
+  3003 /* Id of ATopClassdef */,
+  6 /* Color of ATopClassdef */,
+  8 /* Group of ? */,
+  79 /* Group of ? */,
+  3111 /* Id of AMainClassdef */,
+  6 /* Color of AMainClassdef */,
+  8 /* Group of ? */,
+  79 /* Group of ? */,
+  2863 /* Id of AClasskind */,
+  5 /* Color of AClasskind */,
+  70 /* Group of ? */,
+  3183 /* Id of AConcreteClasskind */,
+  6 /* Color of AConcreteClasskind */,
+  6 /* Group of ? */,
+  73 /* Group of ? */,
+  3243 /* Id of AAbstractClasskind */,
+  6 /* Color of AAbstractClasskind */,
+  6 /* Group of ? */,
+  73 /* Group of ? */,
+  3131 /* Id of AInterfaceClasskind */,
+  6 /* Color of AInterfaceClasskind */,
+  6 /* Group of ? */,
+  73 /* Group of ? */,
+  3179 /* Id of AEnumClasskind */,
+  6 /* Color of AEnumClasskind */,
+  6 /* Group of ? */,
+  73 /* Group of ? */,
+  2843 /* Id of AFormaldef */,
+  5 /* Color of AFormaldef */,
+  7 /* Group of ? */,
+  71 /* Group of ? */,
+  2799 /* Id of ASuperclass */,
+  5 /* Color of ASuperclass */,
+  7 /* Group of ? */,
+  73 /* Group of ? */,
+  2811 /* Id of APropdef */,
+  5 /* Color of APropdef */,
+  6 /* Group of ? */,
+  72 /* Group of ? */,
+  3215 /* Id of AAttrPropdef */,
+  6 /* Color of AAttrPropdef */,
+  11 /* Group of ? */,
+  82 /* Group of ? */,
+  3107 /* Id of AMethPropdef */,
+  6 /* Color of AMethPropdef */,
+  10 /* Group of ? */,
+  81 /* Group of ? */,
+  3399 /* Id of ADeferredMethPropdef */,
+  7 /* Color of ADeferredMethPropdef */,
+  14 /* Group of ? */,
+  91 /* Group of ? */,
+  3367 /* Id of AInternMethPropdef */,
+  7 /* Color of AInternMethPropdef */,
+  14 /* Group of ? */,
+  91 /* Group of ? */,
+  3383 /* Id of AExternMethPropdef */,
+  7 /* Color of AExternMethPropdef */,
+  14 /* Group of ? */,
+  92 /* Group of ? */,
+  3411 /* Id of AConcreteMethPropdef */,
+  7 /* Color of AConcreteMethPropdef */,
+  14 /* Group of ? */,
+  92 /* Group of ? */,
+  3471 /* Id of AConcreteInitPropdef */,
+  8 /* Color of AConcreteInitPropdef */,
+  18 /* Group of ? */,
+  101 /* Group of ? */,
+  3467 /* Id of AMainMethPropdef */,
+  8 /* Color of AMainMethPropdef */,
+  97 /* Group of ? */,
+  2995 /* Id of ATypePropdef */,
+  6 /* Color of ATypePropdef */,
+  9 /* Group of ? */,
+  80 /* Group of ? */,
+  2875 /* Id of AAble */,
+  5 /* Color of AAble */,
+  6 /* Group of ? */,
+  67 /* Group of ? */,
+  3051 /* Id of AReadAble */,
+  6 /* Color of AReadAble */,
+  8 /* Group of ? */,
+  72 /* Group of ? */,
+  2983 /* Id of AWriteAble */,
+  6 /* Color of AWriteAble */,
+  8 /* Group of ? */,
+  72 /* Group of ? */,
+  2827 /* Id of AMethid */,
+  5 /* Color of AMethid */,
+  69 /* Group of ? */,
+  3147 /* Id of AIdMethid */,
+  6 /* Color of AIdMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3075 /* Id of APlusMethid */,
+  6 /* Color of APlusMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3099 /* Id of AMinusMethid */,
+  6 /* Color of AMinusMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3027 /* Id of AStarMethid */,
+  6 /* Color of AStarMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3031 /* Id of ASlashMethid */,
+  6 /* Color of ASlashMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3083 /* Id of APercentMethid */,
+  6 /* Color of APercentMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3175 /* Id of AEqMethid */,
+  6 /* Color of AEqMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3095 /* Id of ANeMethid */,
+  6 /* Color of ANeMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3123 /* Id of ALeMethid */,
+  6 /* Color of ALeMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3159 /* Id of AGeMethid */,
+  6 /* Color of AGeMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3115 /* Id of ALtMethid */,
+  6 /* Color of ALtMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3151 /* Id of AGtMethid */,
+  6 /* Color of AGtMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3119 /* Id of ALlMethid */,
+  6 /* Color of ALlMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3155 /* Id of AGgMethid */,
+  6 /* Color of AGgMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3203 /* Id of ABraMethid */,
+  6 /* Color of ABraMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3023 /* Id of AStarshipMethid */,
+  6 /* Color of AStarshipMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3223 /* Id of AAssignMethid */,
+  6 /* Color of AAssignMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  3199 /* Id of ABraassignMethid */,
+  6 /* Color of ABraassignMethid */,
+  7 /* Group of ? */,
+  72 /* Group of ? */,
+  2803 /* Id of ASignature */,
+  5 /* Color of ASignature */,
+  6 /* Group of ? */,
+  71 /* Group of ? */,
+  2815 /* Id of AParam */,
+  5 /* Color of AParam */,
+  9 /* Group of ? */,
+  75 /* Group of ? */,
+  2859 /* Id of AClosureDecl */,
+  5 /* Color of AClosureDecl */,
+  8 /* Group of ? */,
+  72 /* Group of ? */,
+  2795 /* Id of AType */,
+  5 /* Color of AType */,
+  8 /* Group of ? */,
+  76 /* Group of ? */,
+  2835 /* Id of ALabel */,
+  5 /* Color of ALabel */,
+  6 /* Group of ? */,
+  69 /* Group of ? */,
+  2847 /* Id of AExpr */,
+  6 /* Color of AExpr */,
+  72 /* Group of ? */,
+  3211 /* Id of ABlockExpr */,
+  7 /* Color of ABlockExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  2987 /* Id of AVardeclExpr */,
+  7 /* Color of AVardeclExpr */,
+  12 /* Group of ? */,
+  82 /* Group of ? */,
+  3043 /* Id of AReturnExpr */,
+  7 /* Color of AReturnExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  2831 /* Id of ALabelable */,
+  5 /* Color of ALabelable */,
+  6 /* Group of ? */,
+  67 /* Group of ? */,
+  3419 /* Id of ABreakExpr */,
+  8 /* Color of ABreakExpr */,
+  12 /* Group of ? */,
+  85 /* Group of ? */,
+  3255 /* Id of AAbortExpr */,
+  7 /* Color of AAbortExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  3407 /* Id of AContinueExpr */,
+  8 /* Color of AContinueExpr */,
+  12 /* Group of ? */,
+  85 /* Group of ? */,
+  3395 /* Id of ADoExpr */,
+  8 /* Color of ADoExpr */,
+  12 /* Group of ? */,
+  85 /* Group of ? */,
+  3143 /* Id of AIfExpr */,
+  7 /* Color of AIfExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  3139 /* Id of AIfexprExpr */,
+  7 /* Color of AIfexprExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  3299 /* Id of AWhileExpr */,
+  8 /* Color of AWhileExpr */,
+  12 /* Group of ? */,
+  85 /* Group of ? */,
+  3355 /* Id of ALoopExpr */,
+  8 /* Color of ALoopExpr */,
+  12 /* Group of ? */,
+  85 /* Group of ? */,
+  3375 /* Id of AForExpr */,
+  8 /* Color of AForExpr */,
+  13 /* Group of ? */,
+  86 /* Group of ? */,
+  3231 /* Id of AAssertExpr */,
+  7 /* Color of AAssertExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  3227 /* Id of AAssignFormExpr */,
+  7 /* Color of AAssignFormExpr */,
+  13 /* Group of ? */,
+  82 /* Group of ? */,
+  3047 /* Id of AReassignFormExpr */,
+  7 /* Color of AReassignFormExpr */,
+  14 /* Group of ? */,
+  84 /* Group of ? */,
+  3343 /* Id of AOnceExpr */,
+  8 /* Color of AOnceExpr */,
+  12 /* Group of ? */,
+  84 /* Group of ? */,
+  3479 /* Id of ASendExpr */,
+  10 /* Color of ASendExpr */,
+  18 /* Group of ? */,
+  105 /* Group of ? */,
+  3503 /* Id of ABinopExpr */,
+  11 /* Color of ABinopExpr */,
+  20 /* Group of ? */,
+  110 /* Group of ? */,
+  3207 /* Id of ABoolExpr */,
+  7 /* Color of ABoolExpr */,
+  79 /* Group of ? */,
+  3335 /* Id of AOrExpr */,
+  8 /* Color of AOrExpr */,
+  11 /* Group of ? */,
+  82 /* Group of ? */,
+  3439 /* Id of AAndExpr */,
+  8 /* Color of AAndExpr */,
+  11 /* Group of ? */,
+  82 /* Group of ? */,
+  3339 /* Id of AOrElseExpr */,
+  8 /* Color of AOrElseExpr */,
+  11 /* Group of ? */,
+  82 /* Group of ? */,
+  3347 /* Id of ANotExpr */,
+  8 /* Color of ANotExpr */,
+  11 /* Group of ? */,
+  82 /* Group of ? */,
+  3559 /* Id of AEqExpr */,
+  12 /* Color of AEqExpr */,
+  116 /* Group of ? */,
+  3391 /* Id of AEeExpr */,
+  8 /* Color of AEeExpr */,
+  11 /* Group of ? */,
+  82 /* Group of ? */,
+  3527 /* Id of ANeExpr */,
+  12 /* Color of ANeExpr */,
+  116 /* Group of ? */,
+  3535 /* Id of ALtExpr */,
+  12 /* Color of ALtExpr */,
+  114 /* Group of ? */,
+  3543 /* Id of ALeExpr */,
+  12 /* Color of ALeExpr */,
+  114 /* Group of ? */,
+  3539 /* Id of ALlExpr */,
+  12 /* Color of ALlExpr */,
+  114 /* Group of ? */,
+  3547 /* Id of AGtExpr */,
+  12 /* Color of AGtExpr */,
+  114 /* Group of ? */,
+  3555 /* Id of AGeExpr */,
+  12 /* Color of AGeExpr */,
+  114 /* Group of ? */,
+  3551 /* Id of AGgExpr */,
+  12 /* Color of AGgExpr */,
+  114 /* Group of ? */,
+  3363 /* Id of AIsaExpr */,
+  8 /* Color of AIsaExpr */,
+  11 /* Group of ? */,
+  82 /* Group of ? */,
+  3519 /* Id of APlusExpr */,
+  12 /* Color of APlusExpr */,
+  114 /* Group of ? */,
+  3531 /* Id of AMinusExpr */,
+  12 /* Color of AMinusExpr */,
+  114 /* Group of ? */,
+  3507 /* Id of AStarshipExpr */,
+  12 /* Color of AStarshipExpr */,
+  114 /* Group of ? */,
+  3511 /* Id of AStarExpr */,
+  12 /* Color of AStarExpr */,
+  114 /* Group of ? */,
+  3515 /* Id of ASlashExpr */,
+  12 /* Color of ASlashExpr */,
+  114 /* Group of ? */,
+  3523 /* Id of APercentExpr */,
+  12 /* Color of APercentExpr */,
+  114 /* Group of ? */,
+  3483 /* Id of AUminusExpr */,
+  11 /* Color of AUminusExpr */,
+  20 /* Group of ? */,
+  110 /* Group of ? */,
+  3463 /* Id of ANewExpr */,
+  9 /* Color of ANewExpr */,
+  18 /* Group of ? */,
+  102 /* Group of ? */,
+  3219 /* Id of AAttrFormExpr */,
+  5 /* Color of AAttrFormExpr */,
+  18 /* Group of ? */,
+  90 /* Group of ? */,
+  3427 /* Id of AAttrExpr */,
+  7 /* Color of AAttrExpr */,
+  95 /* Group of ? */,
+  3431 /* Id of AAttrAssignExpr */,
+  8 /* Color of AAttrAssignExpr */,
+  81 /* Group of ? */,
+  3495 /* Id of ACallFormExpr */,
+  12 /* Color of ACallFormExpr */,
+  20 /* Group of ? */,
+  110 /* Group of ? */,
+  3423 /* Id of AAttrReassignExpr */,
+  8 /* Color of AAttrReassignExpr */,
+  81 /* Group of ? */,
+  3567 /* Id of ACallExpr */,
+  13 /* Color of ACallExpr */,
+  115 /* Group of ? */,
+  3571 /* Id of ACallAssignExpr */,
+  11 /* Color of ACallAssignExpr */,
+  81 /* Group of ? */,
+  3563 /* Id of ACallReassignExpr */,
+  13 /* Color of ACallReassignExpr */,
+  115 /* Group of ? */,
+  3475 /* Id of ASuperExpr */,
+  10 /* Color of ASuperExpr */,
+  19 /* Group of ? */,
+  103 /* Group of ? */,
+  3491 /* Id of AInitExpr */,
+  11 /* Color of AInitExpr */,
+  20 /* Group of ? */,
+  110 /* Group of ? */,
+  3499 /* Id of ABraFormExpr */,
+  12 /* Color of ABraFormExpr */,
+  20 /* Group of ? */,
+  108 /* Group of ? */,
+  3579 /* Id of ABraExpr */,
+  13 /* Color of ABraExpr */,
+  112 /* Group of ? */,
+  3583 /* Id of ABraAssignExpr */,
+  11 /* Color of ABraAssignExpr */,
+  81 /* Group of ? */,
+  2991 /* Id of AVarFormExpr */,
+  5 /* Color of AVarFormExpr */,
+  12 /* Group of ? */,
+  80 /* Group of ? */,
+  3575 /* Id of ABraReassignExpr */,
+  13 /* Color of ABraReassignExpr */,
+  112 /* Group of ? */,
+  3415 /* Id of AClosureCallExpr */,
+  7 /* Color of AClosureCallExpr */,
+  14 /* Group of ? */,
+  97 /* Group of ? */,
+  3307 /* Id of AVarExpr */,
+  7 /* Color of AVarExpr */,
+  84 /* Group of ? */,
+  3311 /* Id of AVarAssignExpr */,
+  8 /* Color of AVarAssignExpr */,
+  87 /* Group of ? */,
+  3303 /* Id of AVarReassignExpr */,
+  8 /* Color of AVarReassignExpr */,
+  89 /* Group of ? */,
+  3055 /* Id of ARangeExpr */,
+  7 /* Color of ARangeExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  3403 /* Id of ACrangeExpr */,
+  8 /* Color of ACrangeExpr */,
+  86 /* Group of ? */,
+  3331 /* Id of AOrangeExpr */,
+  8 /* Color of AOrangeExpr */,
+  86 /* Group of ? */,
+  3239 /* Id of AArrayExpr */,
+  7 /* Color of AArrayExpr */,
+  11 /* Group of ? */,
+  82 /* Group of ? */,
+  3039 /* Id of ASelfExpr */,
+  7 /* Color of ASelfExpr */,
+  12 /* Group of ? */,
+  82 /* Group of ? */,
+  3371 /* Id of AImplicitSelfExpr */,
+  8 /* Color of AImplicitSelfExpr */,
+  86 /* Group of ? */,
+  3315 /* Id of ATrueExpr */,
+  8 /* Color of ATrueExpr */,
+  11 /* Group of ? */,
+  82 /* Group of ? */,
+  3379 /* Id of AFalseExpr */,
+  8 /* Color of AFalseExpr */,
+  11 /* Group of ? */,
+  82 /* Group of ? */,
+  3087 /* Id of ANullExpr */,
+  7 /* Color of ANullExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  3135 /* Id of AIntExpr */,
+  7 /* Color of AIntExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  3163 /* Id of AFloatExpr */,
+  7 /* Color of AFloatExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  3191 /* Id of ACharExpr */,
+  7 /* Color of ACharExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  3011 /* Id of AStringFormExpr */,
+  7 /* Color of AStringFormExpr */,
+  81 /* Group of ? */,
+  3319 /* Id of AStringExpr */,
+  8 /* Color of AStringExpr */,
+  13 /* Group of ? */,
+  84 /* Group of ? */,
+  3323 /* Id of AStartStringExpr */,
+  8 /* Color of AStartStringExpr */,
+  13 /* Group of ? */,
+  84 /* Group of ? */,
+  3351 /* Id of AMidStringExpr */,
+  8 /* Color of AMidStringExpr */,
+  13 /* Group of ? */,
+  84 /* Group of ? */,
+  3387 /* Id of AEndStringExpr */,
+  8 /* Color of AEndStringExpr */,
+  13 /* Group of ? */,
+  84 /* Group of ? */,
+  3007 /* Id of ASuperstringExpr */,
+  7 /* Color of ASuperstringExpr */,
+  12 /* Group of ? */,
+  82 /* Group of ? */,
+  3327 /* Id of AParExpr */,
+  8 /* Color of AParExpr */,
+  83 /* Group of ? */,
+  3063 /* Id of AProxyExpr */,
+  7 /* Color of AProxyExpr */,
+  11 /* Group of ? */,
+  79 /* Group of ? */,
+  3435 /* Id of AAsCastExpr */,
+  7 /* Color of AAsCastExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  3235 /* Id of AAsNotnullExpr */,
+  7 /* Color of AAsNotnullExpr */,
+  11 /* Group of ? */,
+  81 /* Group of ? */,
+  3359 /* Id of AIssetAttrExpr */,
+  7 /* Color of AIssetAttrExpr */,
+  20 /* Group of ? */,
+  95 /* Group of ? */,
+  2871 /* Id of AAssignOp */,
+  5 /* Color of AAssignOp */,
+  68 /* Group of ? */,
+  3079 /* Id of APlusAssignOp */,
+  6 /* Color of APlusAssignOp */,
+  6 /* Group of ? */,
+  71 /* Group of ? */,
+  3103 /* Id of AMinusAssignOp */,
+  6 /* Color of AMinusAssignOp */,
+  6 /* Group of ? */,
+  71 /* Group of ? */,
+  3187 /* Id of AClosureDef */,
+  6 /* Color of AClosureDef */,
+  12 /* Group of ? */,
+  78 /* Group of ? */,
+  2855 /* Id of AClosureId */,
+  5 /* Color of AClosureId */,
+  68 /* Group of ? */,
+  3035 /* Id of ASimpleClosureId */,
+  6 /* Color of ASimpleClosureId */,
+  6 /* Group of ? */,
+  71 /* Group of ? */,
+  3195 /* Id of ABreakClosureId */,
+  6 /* Color of ABreakClosureId */,
+  6 /* Group of ? */,
+  71 /* Group of ? */,
+  2807 /* Id of AQualified */,
+  5 /* Color of AQualified */,
+  6 /* Group of ? */,
+  69 /* Group of ? */,
+  2851 /* Id of ADoc */,
+  5 /* Color of ADoc */,
+  6 /* Group of ? */,
+  69 /* Group of ? */,
+  2539 /* Id of Start */,
+  5 /* Color of Start */,
+  6 /* Group of ? */,
+  68 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AStarExpr::_parent */
-/* 2: Attribute AStarExpr::_first_token */
-/* 3: Attribute AStarExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AStarExpr::_is_typed */
-/* 6: Attribute AStarExpr::_stype */
-/* 7: Attribute AStarExpr::_if_true_variable_ctx */
-/* 8: Attribute AStarExpr::_if_false_variable_ctx */
-/* 9: Attribute AStarExpr::_prop_signature */
-/* 10: Attribute AStarExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AStarExpr::_prop */
-/* 15: Attribute AStarExpr::_return_type */
-/* 16: Attribute AStarExpr::_n_expr */
-/* 17: Attribute AStarExpr::_n_closure_defs */
-/* 18: Attribute AStarExpr::_n_expr2 */
-val_t NEW_AStarExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_AStarExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AStarExpr(val_t self, char *from) {
-}
-val_t NEW_AStarExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AStarExpr(self, "parser_nodes::PNode::init for AStarExpr");
-  return self;
-}
-val_t NEW_AStarExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_AStarExpr(self, "parser_prod::ASendExpr::empty_init for AStarExpr");
-  return self;
-}
-val_t NEW_AStarExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_AStarExpr(self, "parser_prod::ASendExpr::init_asendexpr for AStarExpr");
-  return self;
-}
-val_t NEW_AStarExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_AStarExpr(self, "parser_prod::ABinopExpr::empty_init for AStarExpr");
-  return self;
-}
-val_t NEW_AStarExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_AStarExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for AStarExpr");
-  return self;
-}
-val_t NEW_AStarExpr_parser_prod___AStarExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarExpr();
-  parser_prod___AStarExpr___empty_init(self, init_table);
-  CHECKNEW_AStarExpr(self, "parser_prod::AStarExpr::empty_init for AStarExpr");
-  return self;
-}
-val_t NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStarExpr();
-  parser_prod___AStarExpr___init_astarexpr(self, p0, p1, init_table);
-  CHECKNEW_AStarExpr(self, "parser_prod::AStarExpr::init_astarexpr for AStarExpr");
-  return self;
-}
-const classtable_elt_t VFT_ASlashExpr[130] = {
-  {(bigint) 4627 /* 0: Identity */},
-  {(bigint) 3 /* 1: ASlashExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ASlashExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ASlashExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ASlashExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ASlashExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ASlashExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ASlashExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ASlashExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: ASlashExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4627 /* 11: ASlashExpr < ASlashExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ASlashExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ASlashExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ASlashExpr___visit_all},
-  {(bigint) parser_prod___ASlashExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ASlashExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ASlashExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ASlashExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ASlashExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ASlashExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ASlashExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ASlashExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ASlashExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ASlashExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: ASlashExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___ASlashExpr___n_expr2__eq},
-  {(bigint) parser_prod___ASlashExpr___empty_init},
-  {(bigint) parser_prod___ASlashExpr___init_aslashexpr},
-  {(bigint) 9 /* 129: ASlashExpr < ASlashExpr: superclass init_table position */},
+const char *LOCATE_location = "./location.nit";
+const int SFT_location[4] = {
+  1979 /* Id of Location */,
+  5 /* Color of Location */,
+  2 /* Group of ? */,
+  60 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ASlashExpr::_parent */
-/* 2: Attribute ASlashExpr::_first_token */
-/* 3: Attribute ASlashExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ASlashExpr::_is_typed */
-/* 6: Attribute ASlashExpr::_stype */
-/* 7: Attribute ASlashExpr::_if_true_variable_ctx */
-/* 8: Attribute ASlashExpr::_if_false_variable_ctx */
-/* 9: Attribute ASlashExpr::_prop_signature */
-/* 10: Attribute ASlashExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ASlashExpr::_prop */
-/* 15: Attribute ASlashExpr::_return_type */
-/* 16: Attribute ASlashExpr::_n_expr */
-/* 17: Attribute ASlashExpr::_n_closure_defs */
-/* 18: Attribute ASlashExpr::_n_expr2 */
-val_t NEW_ASlashExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_ASlashExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ASlashExpr(val_t self, char *from) {
-}
-val_t NEW_ASlashExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASlashExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ASlashExpr(self, "parser_nodes::PNode::init for ASlashExpr");
-  return self;
-}
-val_t NEW_ASlashExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASlashExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ASlashExpr(self, "parser_prod::ASendExpr::empty_init for ASlashExpr");
-  return self;
-}
-val_t NEW_ASlashExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASlashExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ASlashExpr(self, "parser_prod::ASendExpr::init_asendexpr for ASlashExpr");
-  return self;
-}
-val_t NEW_ASlashExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASlashExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_ASlashExpr(self, "parser_prod::ABinopExpr::empty_init for ASlashExpr");
-  return self;
-}
-val_t NEW_ASlashExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASlashExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_ASlashExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for ASlashExpr");
-  return self;
-}
-val_t NEW_ASlashExpr_parser_prod___ASlashExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASlashExpr();
-  parser_prod___ASlashExpr___empty_init(self, init_table);
-  CHECKNEW_ASlashExpr(self, "parser_prod::ASlashExpr::empty_init for ASlashExpr");
-  return self;
-}
-val_t NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASlashExpr();
-  parser_prod___ASlashExpr___init_aslashexpr(self, p0, p1, init_table);
-  CHECKNEW_ASlashExpr(self, "parser_prod::ASlashExpr::init_aslashexpr for ASlashExpr");
-  return self;
-}
-const classtable_elt_t VFT_APercentExpr[130] = {
-  {(bigint) 4635 /* 0: Identity */},
-  {(bigint) 3 /* 1: APercentExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: APercentExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: APercentExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: APercentExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: APercentExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: APercentExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: APercentExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: APercentExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4615 /* 10: APercentExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 4635 /* 11: APercentExpr < APercentExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: APercentExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___APercentExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___APercentExpr___visit_all},
-  {(bigint) parser_prod___APercentExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: APercentExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: APercentExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: APercentExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: APercentExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: APercentExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: APercentExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___APercentExpr___name},
-  {(bigint) typing___ABinopExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: APercentExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___APercentExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABinopExpr___empty_init},
-  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 124: APercentExpr < ABinopExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABinopExpr___n_expr2},
-  {(bigint) parser_prod___APercentExpr___n_expr2__eq},
-  {(bigint) parser_prod___APercentExpr___empty_init},
-  {(bigint) parser_prod___APercentExpr___init_apercentexpr},
-  {(bigint) 9 /* 129: APercentExpr < APercentExpr: superclass init_table position */},
+const char *LOCATE_standard = "./../lib/standard//standard.nit";
+const char *LOCATE_environ = "./../lib/standard//environ.nit";
+const int SFT_environ[2] = {
+  45 /* Group of ? */,
+  45 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute APercentExpr::_parent */
-/* 2: Attribute APercentExpr::_first_token */
-/* 3: Attribute APercentExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute APercentExpr::_is_typed */
-/* 6: Attribute APercentExpr::_stype */
-/* 7: Attribute APercentExpr::_if_true_variable_ctx */
-/* 8: Attribute APercentExpr::_if_false_variable_ctx */
-/* 9: Attribute APercentExpr::_prop_signature */
-/* 10: Attribute APercentExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute APercentExpr::_prop */
-/* 15: Attribute APercentExpr::_return_type */
-/* 16: Attribute APercentExpr::_n_expr */
-/* 17: Attribute APercentExpr::_n_closure_defs */
-/* 18: Attribute APercentExpr::_n_expr2 */
-val_t NEW_APercentExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_APercentExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABinopExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_APercentExpr(val_t self, char *from) {
-}
-val_t NEW_APercentExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APercentExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_APercentExpr(self, "parser_nodes::PNode::init for APercentExpr");
-  return self;
-}
-val_t NEW_APercentExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APercentExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_APercentExpr(self, "parser_prod::ASendExpr::empty_init for APercentExpr");
-  return self;
-}
-val_t NEW_APercentExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APercentExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_APercentExpr(self, "parser_prod::ASendExpr::init_asendexpr for APercentExpr");
-  return self;
-}
-val_t NEW_APercentExpr_parser_prod___ABinopExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APercentExpr();
-  parser_prod___ABinopExpr___empty_init(self, init_table);
-  CHECKNEW_APercentExpr(self, "parser_prod::ABinopExpr::empty_init for APercentExpr");
-  return self;
-}
-val_t NEW_APercentExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APercentExpr();
-  parser_prod___ABinopExpr___init_abinopexpr(self, p0, p1, init_table);
-  CHECKNEW_APercentExpr(self, "parser_prod::ABinopExpr::init_abinopexpr for APercentExpr");
-  return self;
-}
-val_t NEW_APercentExpr_parser_prod___APercentExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APercentExpr();
-  parser_prod___APercentExpr___empty_init(self, init_table);
-  CHECKNEW_APercentExpr(self, "parser_prod::APercentExpr::empty_init for APercentExpr");
-  return self;
-}
-val_t NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr(val_t p0, val_t p1) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_APercentExpr();
-  parser_prod___APercentExpr___init_apercentexpr(self, p0, p1, init_table);
-  CHECKNEW_APercentExpr(self, "parser_prod::APercentExpr::init_apercentexpr for APercentExpr");
-  return self;
-}
-const classtable_elt_t VFT_AUminusExpr[127] = {
-  {(bigint) 4595 /* 0: Identity */},
-  {(bigint) 3 /* 1: AUminusExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AUminusExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AUminusExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: AUminusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AUminusExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: AUminusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: AUminusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: AUminusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4595 /* 10: AUminusExpr < AUminusExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: AUminusExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AUminusExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AUminusExpr___visit_all},
-  {(bigint) parser_prod___AUminusExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: AUminusExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: AUminusExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: AUminusExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: AUminusExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: AUminusExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: AUminusExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___AUminusExpr___name},
-  {(bigint) typing___AUminusExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: AUminusExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___AUminusExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___AUminusExpr___empty_init},
-  {(bigint) parser_prod___AUminusExpr___init_auminusexpr},
-  {(bigint) 8 /* 124: AUminusExpr < AUminusExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AUminusExpr___n_minus},
-  {(bigint) parser_prod___AUminusExpr___n_minus__eq},
+const char *LOCATE_symbol = "./../lib/standard//symbol.nit";
+const int SFT_symbol[5] = {
+  116 /* Group of ? */,
+  31 /* Id of Symbol */,
+  3 /* Color of Symbol */,
+  2 /* Group of ? */,
+  46 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AUminusExpr::_parent */
-/* 2: Attribute AUminusExpr::_first_token */
-/* 3: Attribute AUminusExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AUminusExpr::_is_typed */
-/* 6: Attribute AUminusExpr::_stype */
-/* 7: Attribute AUminusExpr::_if_true_variable_ctx */
-/* 8: Attribute AUminusExpr::_if_false_variable_ctx */
-/* 9: Attribute AUminusExpr::_prop_signature */
-/* 10: Attribute AUminusExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AUminusExpr::_prop */
-/* 15: Attribute AUminusExpr::_return_type */
-/* 16: Attribute AUminusExpr::_n_expr */
-/* 17: Attribute AUminusExpr::_n_closure_defs */
-/* 18: Attribute AUminusExpr::_n_minus */
-val_t NEW_AUminusExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_AUminusExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AUminusExpr____n_minus(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AUminusExpr(val_t self, char *from) {
-}
-val_t NEW_AUminusExpr_parser_nodes___PNode___init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AUminusExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AUminusExpr(self, "parser_nodes::PNode::init for AUminusExpr");
-  return self;
-}
-val_t NEW_AUminusExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AUminusExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_AUminusExpr(self, "parser_prod::ASendExpr::empty_init for AUminusExpr");
-  return self;
-}
-val_t NEW_AUminusExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AUminusExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_AUminusExpr(self, "parser_prod::ASendExpr::init_asendexpr for AUminusExpr");
-  return self;
-}
-val_t NEW_AUminusExpr_parser_prod___AUminusExpr___empty_init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AUminusExpr();
-  parser_prod___AUminusExpr___empty_init(self, init_table);
-  CHECKNEW_AUminusExpr(self, "parser_prod::AUminusExpr::empty_init for AUminusExpr");
-  return self;
-}
-val_t NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr(val_t p0, val_t p1) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AUminusExpr();
-  parser_prod___AUminusExpr___init_auminusexpr(self, p0, p1, init_table);
-  CHECKNEW_AUminusExpr(self, "parser_prod::AUminusExpr::init_auminusexpr for AUminusExpr");
-  return self;
-}
-const classtable_elt_t VFT_ANewExpr[121] = {
-  {(bigint) 4575 /* 0: Identity */},
-  {(bigint) 3 /* 1: ANewExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ANewExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ANewExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ANewExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ANewExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ANewExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4575 /* 8: ANewExpr < ANewExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 2 /* 23: ANewExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ANewExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ANewExpr___visit_all},
-  {(bigint) parser_prod___ANewExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 3 /* 60: ANewExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ANewExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 4 /* 69: ANewExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ANewExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ANewExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 5 /* 80: ANewExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 1 /* 99: ANewExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 0 /* 104: ANewExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) parser_prod___ANewExpr___empty_init},
-  {(bigint) parser_prod___ANewExpr___init_anewexpr},
-  {(bigint) 6 /* 112: ANewExpr < ANewExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ANewExpr___n_kwnew},
-  {(bigint) parser_prod___ANewExpr___n_kwnew__eq},
-  {(bigint) parser_nodes___ANewExpr___n_type},
-  {(bigint) parser_prod___ANewExpr___n_type__eq},
-  {(bigint) parser_nodes___ANewExpr___n_id},
-  {(bigint) parser_prod___ANewExpr___n_id__eq},
-  {(bigint) parser_nodes___ANewExpr___n_args},
-  {(bigint) parser_nodes___ANewExpr___n_args__eq},
+const char *LOCATE_string = "./../lib/standard//string.nit";
+const int SFT_string[24] = {
+  3291 /* Id of AbstractString */,
+  13 /* Color of AbstractString */,
+  3 /* Group of ? */,
+  104 /* Group of ? */,
+  3447 /* Id of String */,
+  6 /* Color of String */,
+  117 /* Group of ? */,
+  3451 /* Id of Buffer */,
+  15 /* Color of Buffer */,
+  4 /* Group of ? */,
+  116 /* Group of ? */,
+  34 /* Group of ? */,
+  66 /* Group of ? */,
+  45 /* Group of ? */,
+  60 /* Group of ? */,
+  84 /* Group of ? */,
+  -5 /* Id of NativeString */,
+  3 /* Color of NativeString */,
+  46 /* Group of ? */,
+  35 /* Id of StringCapable */,
+  3 /* Color of StringCapable */,
+  45 /* Group of ? */,
+  2 /* Group of ? */,
+  46 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ANewExpr::_parent */
-/* 2: Attribute ANewExpr::_first_token */
-/* 3: Attribute ANewExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ANewExpr::_is_typed */
-/* 6: Attribute ANewExpr::_stype */
-/* 7: Attribute ANewExpr::_if_true_variable_ctx */
-/* 8: Attribute ANewExpr::_if_false_variable_ctx */
-/* 9: Attribute ANewExpr::_prop_signature */
-/* 10: Attribute ANewExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ANewExpr::_prop */
-/* 15: Attribute ANewExpr::_return_type */
-/* 16: Attribute ANewExpr::_n_kwnew */
-/* 17: Attribute ANewExpr::_n_type */
-/* 18: Attribute ANewExpr::_n_id */
-/* 19: Attribute ANewExpr::_n_args */
-val_t NEW_ANewExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_ANewExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ANewExpr____n_kwnew(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ANewExpr____n_type(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ANewExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ANewExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ANewExpr(val_t self, char *from) {
-}
-val_t NEW_ANewExpr_parser_nodes___PNode___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANewExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ANewExpr(self, "parser_nodes::PNode::init for ANewExpr");
-  return self;
-}
-val_t NEW_ANewExpr_parser_prod___ANewExpr___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANewExpr();
-  parser_prod___ANewExpr___empty_init(self, init_table);
-  CHECKNEW_ANewExpr(self, "parser_prod::ANewExpr::empty_init for ANewExpr");
-  return self;
-}
-val_t NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ANewExpr();
-  parser_prod___ANewExpr___init_anewexpr(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_ANewExpr(self, "parser_prod::ANewExpr::init_anewexpr for ANewExpr");
-  return self;
-}
-const classtable_elt_t VFT_AAttrFormExpr[106] = {
-  {(bigint) 4351 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAttrFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAttrFormExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAttrFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4351 /* 4: AAttrFormExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AAttrFormExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAttrFormExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAttrFormExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAttrFormExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AAttrFormExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) typing___AAttrFormExpr___prop},
-  {(bigint) typing___AAttrFormExpr___attr_type},
-  {(bigint) typing___AAttrFormExpr___do_typing},
-  {(bigint) 4 /* 101: AAttrFormExpr < AAttrFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAttrFormExpr___n_expr},
-  {(bigint) parser_nodes___AAttrFormExpr___n_expr__eq},
-  {(bigint) parser_nodes___AAttrFormExpr___n_id},
-  {(bigint) parser_nodes___AAttrFormExpr___n_id__eq},
+const char *LOCATE_collection = "./../lib/standard//collection//collection.nit";
+const char *LOCATE_range = "./../lib/standard//collection//range.nit";
+const int SFT_range[8] = {
+  1843 /* Id of Range */,
+  6 /* Color of Range */,
+  2 /* Group of ? */,
+  71 /* Group of ? */,
+  1987 /* Id of IteratorRange */,
+  4 /* Color of IteratorRange */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+};
+const char *LOCATE_abstract_collection = "./../lib/standard//collection//abstract_collection.nit";
+const int SFT_abstract_collection[55] = {
+  251 /* Id of Collection */,
+  5 /* Color of Collection */,
+  62 /* Group of ? */,
+  1895 /* Id of NaiveCollection */,
+  6 /* Color of NaiveCollection */,
+  71 /* Group of ? */,
+  175 /* Id of Iterator */,
+  3 /* Color of Iterator */,
+  46 /* Group of ? */,
+  2091 /* Id of Container */,
+  6 /* Color of Container */,
+  2 /* Group of ? */,
+  71 /* Group of ? */,
+  2087 /* Id of ContainerIterator */,
+  4 /* Color of ContainerIterator */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  327 /* Id of RemovableCollection */,
+  6 /* Color of RemovableCollection */,
+  71 /* Group of ? */,
+  2543 /* Id of SimpleCollection */,
+  8 /* Color of SimpleCollection */,
+  78 /* Group of ? */,
+  2911 /* Id of Set */,
+  7 /* Color of Set */,
+  57 /* Group of ? */,
+  1915 /* Id of MapRead */,
+  7 /* Color of MapRead */,
+  75 /* Group of ? */,
+  2587 /* Id of Map */,
+  10 /* Color of Map */,
+  85 /* Group of ? */,
+  1919 /* Id of MapIterator */,
+  4 /* Color of MapIterator */,
+  50 /* Group of ? */,
+  2547 /* Id of SequenceRead */,
+  9 /* Color of SequenceRead */,
+  81 /* Group of ? */,
+  2915 /* Id of Sequence */,
+  11 /* Color of Sequence */,
+  89 /* Group of ? */,
+  2627 /* Id of IndexedIterator */,
+  5 /* Color of IndexedIterator */,
+  52 /* Group of ? */,
+  2971 /* Id of CoupleMap */,
+  11 /* Color of CoupleMap */,
+  89 /* Group of ? */,
+  2755 /* Id of CoupleMapIterator */,
+  5 /* Color of CoupleMapIterator */,
+  2 /* Group of ? */,
+  52 /* Group of ? */,
+  235 /* Id of Couple */,
+  3 /* Color of Couple */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AAttrFormExpr::_parent */
-/* 2: Attribute AAttrFormExpr::_first_token */
-/* 3: Attribute AAttrFormExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAttrFormExpr::_is_typed */
-/* 6: Attribute AAttrFormExpr::_stype */
-/* 7: Attribute AAttrFormExpr::_if_true_variable_ctx */
-/* 8: Attribute AAttrFormExpr::_if_false_variable_ctx */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AAttrFormExpr::_prop */
-/* 15: Attribute AAttrFormExpr::_attr_type */
-/* 16: Attribute AAttrFormExpr::_n_expr */
-/* 17: Attribute AAttrFormExpr::_n_id */
-val_t NEW_AAttrFormExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 18);
-  obj->vft = (classtable_elt_t*)VFT_AAttrFormExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAttrFormExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAttrFormExpr(val_t self, char *from) {
-}
-val_t NEW_AAttrFormExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrFormExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAttrFormExpr(self, "parser_nodes::PNode::init for AAttrFormExpr");
-  return self;
-}
-const classtable_elt_t VFT_AAttrExpr[109] = {
-  {(bigint) 4539 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAttrExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAttrExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAttrExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4351 /* 4: AAttrExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AAttrExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4539 /* 6: AAttrExpr < AAttrExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAttrExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AAttrExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AAttrExpr___visit_all},
-  {(bigint) parser_prod___AAttrExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAttrExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AAttrExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAttrExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAttrExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AAttrExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) typing___AAttrFormExpr___prop},
-  {(bigint) typing___AAttrFormExpr___attr_type},
-  {(bigint) typing___AAttrFormExpr___do_typing},
-  {(bigint) 4 /* 101: AAttrExpr < AAttrFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAttrFormExpr___n_expr},
-  {(bigint) parser_prod___AAttrExpr___n_expr__eq},
-  {(bigint) parser_nodes___AAttrFormExpr___n_id},
-  {(bigint) parser_prod___AAttrExpr___n_id__eq},
-  {(bigint) parser_prod___AAttrExpr___empty_init},
-  {(bigint) parser_prod___AAttrExpr___init_aattrexpr},
-  {(bigint) 5 /* 108: AAttrExpr < AAttrExpr: superclass init_table position */},
+const char *LOCATE_kernel = "./../lib/standard//kernel.nit";
+const int SFT_kernel[27] = {
+  3 /* Id of Object */,
+  2 /* Color of Object */,
+  19 /* Group of ? */,
+  27 /* Id of Sys */,
+  3 /* Color of Sys */,
+  50 /* Group of ? */,
+  243 /* Id of Comparable */,
+  4 /* Color of Comparable */,
+  51 /* Group of ? */,
+  2067 /* Id of Discrete */,
+  5 /* Color of Discrete */,
+  60 /* Group of ? */,
+  -13 /* Id of Bool */,
+  3 /* Color of Bool */,
+  45 /* Group of ? */,
+  -9 /* Id of Float */,
+  3 /* Color of Float */,
+  46 /* Group of ? */,
+  -29 /* Id of Int */,
+  6 /* Color of Int */,
+  69 /* Group of ? */,
+  -33 /* Id of Char */,
+  6 /* Color of Char */,
+  66 /* Group of ? */,
+  -1 /* Id of Pointer */,
+  3 /* Color of Pointer */,
+  45 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AAttrExpr::_parent */
-/* 2: Attribute AAttrExpr::_first_token */
-/* 3: Attribute AAttrExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAttrExpr::_is_typed */
-/* 6: Attribute AAttrExpr::_stype */
-/* 7: Attribute AAttrExpr::_if_true_variable_ctx */
-/* 8: Attribute AAttrExpr::_if_false_variable_ctx */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AAttrExpr::_prop */
-/* 15: Attribute AAttrExpr::_attr_type */
-/* 16: Attribute AAttrExpr::_n_expr */
-/* 17: Attribute AAttrExpr::_n_id */
-val_t NEW_AAttrExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 18);
-  obj->vft = (classtable_elt_t*)VFT_AAttrExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAttrFormExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAttrExpr(val_t self, char *from) {
-}
-val_t NEW_AAttrExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAttrExpr(self, "parser_nodes::PNode::init for AAttrExpr");
-  return self;
-}
-val_t NEW_AAttrExpr_parser_prod___AAttrExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrExpr();
-  parser_prod___AAttrExpr___empty_init(self, init_table);
-  CHECKNEW_AAttrExpr(self, "parser_prod::AAttrExpr::empty_init for AAttrExpr");
-  return self;
-}
-val_t NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrExpr();
-  parser_prod___AAttrExpr___init_aattrexpr(self, p0, p1, init_table);
-  CHECKNEW_AAttrExpr(self, "parser_prod::AAttrExpr::init_aattrexpr for AAttrExpr");
-  return self;
-}
-const classtable_elt_t VFT_AAttrAssignExpr[106] = {
-  {(bigint) 4543 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAttrAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAttrAssignExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAttrAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4351 /* 4: AAttrAssignExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AAttrAssignExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4359 /* 6: AAttrAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 4543 /* 7: AAttrAssignExpr < AAttrAssignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAttrAssignExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AAttrAssignExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AAttrAssignExpr___visit_all},
-  {(bigint) parser_prod___AAttrAssignExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAttrAssignExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AAttrAssignExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAttrAssignExpr < Prod: superclass init_table position */},
-  {(bigint) parser_prod___AAttrAssignExpr___empty_init},
-  {(bigint) parser_prod___AAttrAssignExpr___init_aattrassignexpr},
-  {(bigint) 6 /* 72: AAttrAssignExpr < AAttrAssignExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AAttrAssignExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AAttrAssignExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 5 /* 91: AAttrAssignExpr < AAssignFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAssignFormExpr___n_assign},
-  {(bigint) parser_prod___AAttrAssignExpr___n_assign__eq},
-  {(bigint) parser_nodes___AAssignFormExpr___n_value},
-  {(bigint) parser_prod___AAttrAssignExpr___n_value__eq},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) typing___AAttrFormExpr___prop},
-  {(bigint) typing___AAttrFormExpr___attr_type},
-  {(bigint) typing___AAttrFormExpr___do_typing},
-  {(bigint) 4 /* 101: AAttrAssignExpr < AAttrFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAttrFormExpr___n_expr},
-  {(bigint) parser_prod___AAttrAssignExpr___n_expr__eq},
-  {(bigint) parser_nodes___AAttrFormExpr___n_id},
-  {(bigint) parser_prod___AAttrAssignExpr___n_id__eq},
+const char *LOCATE_list = "./../lib/standard//collection//list.nit";
+const int SFT_list[12] = {
+  3275 /* Id of List */,
+  12 /* Color of List */,
+  2 /* Group of ? */,
+  97 /* Group of ? */,
+  2931 /* Id of ListIterator */,
+  6 /* Color of ListIterator */,
+  2 /* Group of ? */,
+  54 /* Group of ? */,
+  2623 /* Id of ListNode */,
+  7 /* Color of ListNode */,
+  3 /* Group of ? */,
+  75 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AAttrAssignExpr::_parent */
-/* 2: Attribute AAttrAssignExpr::_first_token */
-/* 3: Attribute AAttrAssignExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAttrAssignExpr::_is_typed */
-/* 6: Attribute AAttrAssignExpr::_stype */
-/* 7: Attribute AAttrAssignExpr::_if_true_variable_ctx */
-/* 8: Attribute AAttrAssignExpr::_if_false_variable_ctx */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 11: Attribute AAttrAssignExpr::_n_assign */
-/* 12: Attribute AAttrAssignExpr::_n_value */
-/* Instance Hole :( */
-/* 14: Attribute AAttrAssignExpr::_prop */
-/* 15: Attribute AAttrAssignExpr::_attr_type */
-/* 16: Attribute AAttrAssignExpr::_n_expr */
-/* 17: Attribute AAttrAssignExpr::_n_id */
-val_t NEW_AAttrAssignExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 18);
-  obj->vft = (classtable_elt_t*)VFT_AAttrAssignExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAttrFormExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssignFormExpr____n_value(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAttrAssignExpr(val_t self, char *from) {
-}
-val_t NEW_AAttrAssignExpr_parser_nodes___PNode___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrAssignExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAttrAssignExpr(self, "parser_nodes::PNode::init for AAttrAssignExpr");
-  return self;
-}
-val_t NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrAssignExpr();
-  parser_prod___AAttrAssignExpr___empty_init(self, init_table);
-  CHECKNEW_AAttrAssignExpr(self, "parser_prod::AAttrAssignExpr::empty_init for AAttrAssignExpr");
-  return self;
-}
-val_t NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrAssignExpr();
-  parser_prod___AAttrAssignExpr___init_aattrassignexpr(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_AAttrAssignExpr(self, "parser_prod::AAttrAssignExpr::init_aattrassignexpr for AAttrAssignExpr");
-  return self;
-}
-const classtable_elt_t VFT_ACallFormExpr[129] = {
-  {(bigint) 4607 /* 0: Identity */},
-  {(bigint) 3 /* 1: ACallFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ACallFormExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ACallFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ACallFormExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ACallFormExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ACallFormExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ACallFormExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ACallFormExpr < ASendExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4607 /* 11: ACallFormExpr < ACallFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ACallFormExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ASendExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ASendExpr___visit_all},
-  {(bigint) parser_prod___ASendExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ACallFormExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ACallFormExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ACallFormExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ACallFormExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ACallFormExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ACallFormExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ACallFormExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ASendExpr___name},
-  {(bigint) typing___ASendExpr___raw_arguments},
-  {(bigint) typing___ACallFormExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ACallFormExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ASendExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) typing___ACallFormExpr___variable_create},
-  {(bigint) 8 /* 124: ACallFormExpr < ACallFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ACallFormExpr___n_id},
-  {(bigint) parser_nodes___ACallFormExpr___n_id__eq},
-  {(bigint) parser_nodes___ACallFormExpr___n_args},
-  {(bigint) parser_nodes___ACallFormExpr___n_args__eq},
+const char *LOCATE_sorter = "./../lib/standard//collection//sorter.nit";
+const int SFT_sorter[6] = {
+  267 /* Id of AbstractSorter */,
+  3 /* Color of AbstractSorter */,
+  45 /* Group of ? */,
+  2103 /* Id of ComparableSorter */,
+  4 /* Color of ComparableSorter */,
+  52 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ACallFormExpr::_parent */
-/* 2: Attribute ACallFormExpr::_first_token */
-/* 3: Attribute ACallFormExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ACallFormExpr::_is_typed */
-/* 6: Attribute ACallFormExpr::_stype */
-/* 7: Attribute ACallFormExpr::_if_true_variable_ctx */
-/* 8: Attribute ACallFormExpr::_if_false_variable_ctx */
-/* 9: Attribute ACallFormExpr::_prop_signature */
-/* 10: Attribute ACallFormExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ACallFormExpr::_prop */
-/* 15: Attribute ACallFormExpr::_return_type */
-/* 16: Attribute ACallFormExpr::_n_expr */
-/* 17: Attribute ACallFormExpr::_n_closure_defs */
-/* 18: Attribute ACallFormExpr::_n_id */
-/* 19: Attribute ACallFormExpr::_n_args */
-val_t NEW_ACallFormExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_ACallFormExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ACallFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ACallFormExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ACallFormExpr(val_t self, char *from) {
-}
-val_t NEW_ACallFormExpr_parser_nodes___PNode___init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallFormExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ACallFormExpr(self, "parser_nodes::PNode::init for ACallFormExpr");
-  return self;
-}
-val_t NEW_ACallFormExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallFormExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ACallFormExpr(self, "parser_prod::ASendExpr::empty_init for ACallFormExpr");
-  return self;
-}
-val_t NEW_ACallFormExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallFormExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ACallFormExpr(self, "parser_prod::ASendExpr::init_asendexpr for ACallFormExpr");
-  return self;
-}
-const classtable_elt_t VFT_AAttrReassignExpr[106] = {
-  {(bigint) 4535 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAttrReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAttrReassignExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAttrReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4351 /* 4: AAttrReassignExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AAttrReassignExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4151 /* 6: AAttrReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 4535 /* 7: AAttrReassignExpr < AAttrReassignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAttrReassignExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AAttrReassignExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AAttrReassignExpr___visit_all},
-  {(bigint) parser_prod___AAttrReassignExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAttrReassignExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AAttrReassignExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAttrReassignExpr < Prod: superclass init_table position */},
-  {(bigint) parser_prod___AAttrReassignExpr___empty_init},
-  {(bigint) parser_prod___AAttrReassignExpr___init_aattrreassignexpr},
-  {(bigint) 6 /* 72: AAttrReassignExpr < AAttrReassignExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AAttrReassignExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AAttrReassignExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) typing___AReassignFormExpr___assign_method},
-  {(bigint) 5 /* 93: AAttrReassignExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser_prod___AAttrReassignExpr___n_assign_op__eq},
-  {(bigint) parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) parser_prod___AAttrReassignExpr___n_value__eq},
-  {(bigint) typing___AAttrFormExpr___prop},
-  {(bigint) typing___AAttrFormExpr___attr_type},
-  {(bigint) typing___AAttrFormExpr___do_typing},
-  {(bigint) 4 /* 101: AAttrReassignExpr < AAttrFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAttrFormExpr___n_expr},
-  {(bigint) parser_prod___AAttrReassignExpr___n_expr__eq},
-  {(bigint) parser_nodes___AAttrFormExpr___n_id},
-  {(bigint) parser_prod___AAttrReassignExpr___n_id__eq},
+const char *LOCATE_array = "./../lib/standard//collection//array.nit";
+const int SFT_array[35] = {
+  2979 /* Id of AbstractArrayRead */,
+  12 /* Color of AbstractArrayRead */,
+  2 /* Group of ? */,
+  97 /* Group of ? */,
+  3295 /* Id of AbstractArray */,
+  14 /* Color of AbstractArray */,
+  48 /* Group of ? */,
+  3455 /* Id of Array */,
+  4 /* Color of Array */,
+  3 /* Group of ? */,
+  51 /* Group of ? */,
+  2975 /* Id of ArrayIterator */,
+  6 /* Color of ArrayIterator */,
+  2 /* Group of ? */,
+  54 /* Group of ? */,
+  3283 /* Id of ArraySet */,
+  9 /* Color of ArraySet */,
+  2 /* Group of ? */,
+  81 /* Group of ? */,
+  2131 /* Id of ArraySetIterator */,
+  4 /* Color of ArraySetIterator */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  3287 /* Id of ArrayMap */,
+  12 /* Color of ArrayMap */,
+  2 /* Group of ? */,
+  91 /* Group of ? */,
+  45 /* Group of ? */,
+  61 /* Group of ? */,
+  263 /* Id of ArrayCapable */,
+  3 /* Color of ArrayCapable */,
+  45 /* Group of ? */,
+  119 /* Id of NativeArray */,
+  3 /* Color of NativeArray */,
+  45 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AAttrReassignExpr::_parent */
-/* 2: Attribute AAttrReassignExpr::_first_token */
-/* 3: Attribute AAttrReassignExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAttrReassignExpr::_is_typed */
-/* 6: Attribute AAttrReassignExpr::_stype */
-/* 7: Attribute AAttrReassignExpr::_if_true_variable_ctx */
-/* 8: Attribute AAttrReassignExpr::_if_false_variable_ctx */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 11: Attribute AAttrReassignExpr::_assign_method */
-/* 12: Attribute AAttrReassignExpr::_n_assign_op */
-/* 13: Attribute AAttrReassignExpr::_n_value */
-/* 14: Attribute AAttrReassignExpr::_prop */
-/* 15: Attribute AAttrReassignExpr::_attr_type */
-/* 16: Attribute AAttrReassignExpr::_n_expr */
-/* 17: Attribute AAttrReassignExpr::_n_id */
-val_t NEW_AAttrReassignExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 18);
-  obj->vft = (classtable_elt_t*)VFT_AAttrReassignExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAttrFormExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReassignFormExpr____n_value(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAttrReassignExpr(val_t self, char *from) {
-}
-val_t NEW_AAttrReassignExpr_parser_nodes___PNode___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrReassignExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAttrReassignExpr(self, "parser_nodes::PNode::init for AAttrReassignExpr");
-  return self;
-}
-val_t NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrReassignExpr();
-  parser_prod___AAttrReassignExpr___empty_init(self, init_table);
-  CHECKNEW_AAttrReassignExpr(self, "parser_prod::AAttrReassignExpr::empty_init for AAttrReassignExpr");
-  return self;
-}
-val_t NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAttrReassignExpr();
-  parser_prod___AAttrReassignExpr___init_aattrreassignexpr(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_AAttrReassignExpr(self, "parser_prod::AAttrReassignExpr::init_aattrreassignexpr for AAttrReassignExpr");
-  return self;
-}
-const classtable_elt_t VFT_ACallExpr[132] = {
-  {(bigint) 4671 /* 0: Identity */},
-  {(bigint) 3 /* 1: ACallExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ACallExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ACallExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ACallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ACallExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ACallExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ACallExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ACallExpr < ASendExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4607 /* 11: ACallExpr < ACallFormExpr: superclass typecheck marker */},
-  {(bigint) 4671 /* 12: ACallExpr < ACallExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ACallExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ACallExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ACallExpr___visit_all},
-  {(bigint) parser_prod___ACallExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ACallExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ACallFormExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ACallExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ACallExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ACallExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ACallExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ACallExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ACallExpr___name},
-  {(bigint) typing___ACallExpr___raw_arguments},
-  {(bigint) typing___ACallFormExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ACallExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ACallExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) typing___ACallExpr___variable_create},
-  {(bigint) 8 /* 124: ACallExpr < ACallFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ACallFormExpr___n_id},
-  {(bigint) parser_prod___ACallExpr___n_id__eq},
-  {(bigint) parser_nodes___ACallFormExpr___n_args},
-  {(bigint) parser_nodes___ACallFormExpr___n_args__eq},
-  {(bigint) parser_prod___ACallExpr___empty_init},
-  {(bigint) parser_prod___ACallExpr___init_acallexpr},
-  {(bigint) 9 /* 131: ACallExpr < ACallExpr: superclass init_table position */},
+const char *LOCATE_hash_collection = "./../lib/standard//collection//hash_collection.nit";
+const int SFT_hash_collection[29] = {
+  2043 /* Id of HashCollection */,
+  4 /* Color of HashCollection */,
+  2 /* Group of ? */,
+  47 /* Group of ? */,
+  227 /* Id of HashNode */,
+  3 /* Color of HashNode */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  2963 /* Id of HashMap */,
+  8 /* Color of HashMap */,
+  57 /* Group of ? */,
+  2039 /* Id of HashMapNode */,
+  4 /* Color of HashMapNode */,
+  7 /* Group of ? */,
+  51 /* Group of ? */,
+  2735 /* Id of HashMapIterator */,
+  5 /* Color of HashMapIterator */,
+  2 /* Group of ? */,
+  52 /* Group of ? */,
+  3279 /* Id of HashSet */,
+  9 /* Color of HashSet */,
+  58 /* Group of ? */,
+  2031 /* Id of HashSetNode */,
+  4 /* Color of HashSetNode */,
+  51 /* Group of ? */,
+  2035 /* Id of HashSetIterator */,
+  4 /* Color of HashSetIterator */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+};
+const char *LOCATE_hash = "./../lib/standard//hash.nit";
+const int SFT_hash[1] = {
+  38 /* Group of ? */,
+};
+const char *LOCATE_time = "./../lib/standard//time.nit";
+const int SFT_time[1] = {
+  18 /* Group of ? */,
+};
+const char *LOCATE_file = "./../lib/standard//file.nit";
+const int SFT_file[33] = {
+  27 /* Group of ? */,
+  2055 /* Id of FStream */,
+  7 /* Color of FStream */,
+  2 /* Group of ? */,
+  51 /* Group of ? */,
+  2955 /* Id of IFStream */,
+  8 /* Color of IFStream */,
+  6 /* Group of ? */,
+  71 /* Group of ? */,
+  2579 /* Id of OFStream */,
+  6 /* Color of OFStream */,
+  4 /* Group of ? */,
+  60 /* Group of ? */,
+  3259 /* Id of Stdin */,
+  9 /* Color of Stdin */,
+  76 /* Group of ? */,
+  2903 /* Id of Stdout */,
+  8 /* Color of Stdout */,
+  65 /* Group of ? */,
+  2907 /* Id of Stderr */,
+  8 /* Color of Stderr */,
+  65 /* Group of ? */,
+  123 /* Group of ? */,
+  53 /* Group of ? */,
+  -25 /* Id of FileStat */,
+  4 /* Color of FileStat */,
+  46 /* Group of ? */,
+  -21 /* Id of NativeFile */,
+  4 /* Color of NativeFile */,
+  46 /* Group of ? */,
+  115 /* Id of NativeFileCapable */,
+  3 /* Color of NativeFileCapable */,
+  45 /* Group of ? */,
+};
+const char *LOCATE_stream = "./../lib/standard//stream.nit";
+const int SFT_stream[31] = {
+  191 /* Id of IOS */,
+  4 /* Color of IOS */,
+  54 /* Group of ? */,
+  2003 /* Id of IStream */,
+  6 /* Color of IStream */,
+  60 /* Group of ? */,
+  1891 /* Id of OStream */,
+  5 /* Color of OStream */,
+  57 /* Group of ? */,
+  2779 /* Id of BufferedIStream */,
+  5 /* Color of BufferedIStream */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
+  2651 /* Id of IOStream */,
+  9 /* Color of IOStream */,
+  73 /* Group of ? */,
+  2059 /* Id of FDStream */,
+  3 /* Color of FDStream */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  2743 /* Id of FDIStream */,
+  8 /* Color of FDIStream */,
+  4 /* Group of ? */,
+  67 /* Group of ? */,
+  2739 /* Id of FDOStream */,
+  7 /* Color of FDOStream */,
+  3 /* Group of ? */,
+  51 /* Group of ? */,
+  2967 /* Id of FDIOStream */,
+  10 /* Color of FDIOStream */,
+  69 /* Group of ? */,
+};
+const char *LOCATE_string_search = "./../lib/standard//string_search.nit";
+const int SFT_string_search[12] = {
+  99 /* Id of Pattern */,
+  3 /* Color of Pattern */,
+  45 /* Group of ? */,
+  2123 /* Id of BM_Pattern */,
+  4 /* Color of BM_Pattern */,
+  2 /* Group of ? */,
+  51 /* Group of ? */,
+  127 /* Id of Match */,
+  3 /* Color of Match */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  131 /* Group of ? */,
+};
+const char *LOCATE_exec = "./../lib/standard//exec.nit";
+const int SFT_exec[20] = {
+  91 /* Id of Process */,
+  3 /* Color of Process */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  2643 /* Id of IProcess */,
+  8 /* Color of IProcess */,
+  4 /* Group of ? */,
+  70 /* Group of ? */,
+  2575 /* Id of OProcess */,
+  7 /* Color of OProcess */,
+  3 /* Group of ? */,
+  67 /* Group of ? */,
+  2943 /* Id of IOProcess */,
+  10 /* Color of IOProcess */,
+  74 /* Group of ? */,
+  45 /* Group of ? */,
+  57 /* Group of ? */,
+  -17 /* Id of NativeProcess */,
+  4 /* Color of NativeProcess */,
+  46 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ACallExpr::_parent */
-/* 2: Attribute ACallExpr::_first_token */
-/* 3: Attribute ACallExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ACallExpr::_is_typed */
-/* 6: Attribute ACallExpr::_stype */
-/* 7: Attribute ACallExpr::_if_true_variable_ctx */
-/* 8: Attribute ACallExpr::_if_false_variable_ctx */
-/* 9: Attribute ACallExpr::_prop_signature */
-/* 10: Attribute ACallExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ACallExpr::_prop */
-/* 15: Attribute ACallExpr::_return_type */
-/* 16: Attribute ACallExpr::_n_expr */
-/* 17: Attribute ACallExpr::_n_closure_defs */
-/* 18: Attribute ACallExpr::_n_id */
-/* 19: Attribute ACallExpr::_n_args */
-val_t NEW_ACallExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_ACallExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ACallFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ACallFormExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ACallExpr(val_t self, char *from) {
-}
-val_t NEW_ACallExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ACallExpr(self, "parser_nodes::PNode::init for ACallExpr");
-  return self;
-}
-val_t NEW_ACallExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ACallExpr(self, "parser_prod::ASendExpr::empty_init for ACallExpr");
-  return self;
-}
-val_t NEW_ACallExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ACallExpr(self, "parser_prod::ASendExpr::init_asendexpr for ACallExpr");
-  return self;
-}
-val_t NEW_ACallExpr_parser_prod___ACallExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallExpr();
-  parser_prod___ACallExpr___empty_init(self, init_table);
-  CHECKNEW_ACallExpr(self, "parser_prod::ACallExpr::empty_init for ACallExpr");
-  return self;
-}
-val_t NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallExpr();
-  parser_prod___ACallExpr___init_acallexpr(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_ACallExpr(self, "parser_prod::ACallExpr::init_acallexpr for ACallExpr");
-  return self;
-}
-const classtable_elt_t VFT_ACallAssignExpr[129] = {
-  {(bigint) 4675 /* 0: Identity */},
-  {(bigint) 3 /* 1: ACallAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ACallAssignExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ACallAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ACallAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ACallAssignExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4359 /* 6: ACallAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 4555 /* 7: ACallAssignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ACallAssignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ACallAssignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4675 /* 10: ACallAssignExpr < ACallAssignExpr: superclass typecheck marker */},
-  {(bigint) 4607 /* 11: ACallAssignExpr < ACallFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ACallAssignExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ACallAssignExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ACallAssignExpr___visit_all},
-  {(bigint) parser_prod___ACallAssignExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ACallAssignExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ACallFormExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ACallAssignExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ACallAssignExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ACallAssignExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___ACallAssignExpr___empty_init},
-  {(bigint) parser_prod___ACallAssignExpr___init_acallassignexpr},
-  {(bigint) 10 /* 88: ACallAssignExpr < ACallAssignExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 9 /* 91: ACallAssignExpr < AAssignFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAssignFormExpr___n_assign},
-  {(bigint) parser_prod___ACallAssignExpr___n_assign__eq},
-  {(bigint) parser_nodes___AAssignFormExpr___n_value},
-  {(bigint) parser_prod___ACallAssignExpr___n_value__eq},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ACallAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ACallAssignExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ACallAssignExpr___name},
-  {(bigint) typing___ACallAssignExpr___raw_arguments},
-  {(bigint) typing___ACallFormExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ACallAssignExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ACallAssignExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) typing___ACallAssignExpr___variable_create},
-  {(bigint) 8 /* 124: ACallAssignExpr < ACallFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ACallFormExpr___n_id},
-  {(bigint) parser_prod___ACallAssignExpr___n_id__eq},
-  {(bigint) parser_nodes___ACallFormExpr___n_args},
-  {(bigint) parser_nodes___ACallFormExpr___n_args__eq},
+const char *LOCATE_math = "./../lib/standard//math.nit";
+const int SFT_math[3] = {
+  82 /* Group of ? */,
+  57 /* Group of ? */,
+  39 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ACallAssignExpr::_parent */
-/* 2: Attribute ACallAssignExpr::_first_token */
-/* 3: Attribute ACallAssignExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ACallAssignExpr::_is_typed */
-/* 6: Attribute ACallAssignExpr::_stype */
-/* 7: Attribute ACallAssignExpr::_if_true_variable_ctx */
-/* 8: Attribute ACallAssignExpr::_if_false_variable_ctx */
-/* 9: Attribute ACallAssignExpr::_prop_signature */
-/* 10: Attribute ACallAssignExpr::_arguments */
-/* 11: Attribute ACallAssignExpr::_n_assign */
-/* 12: Attribute ACallAssignExpr::_n_value */
-/* Instance Hole :( */
-/* 14: Attribute ACallAssignExpr::_prop */
-/* 15: Attribute ACallAssignExpr::_return_type */
-/* 16: Attribute ACallAssignExpr::_n_expr */
-/* 17: Attribute ACallAssignExpr::_n_closure_defs */
-/* 18: Attribute ACallAssignExpr::_n_id */
-/* 19: Attribute ACallAssignExpr::_n_args */
-val_t NEW_ACallAssignExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_ACallAssignExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ACallFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ACallFormExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssignFormExpr____n_value(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ACallAssignExpr(val_t self, char *from) {
-}
-val_t NEW_ACallAssignExpr_parser_nodes___PNode___init() {
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallAssignExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ACallAssignExpr(self, "parser_nodes::PNode::init for ACallAssignExpr");
-  return self;
-}
-val_t NEW_ACallAssignExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallAssignExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ACallAssignExpr(self, "parser_prod::ASendExpr::empty_init for ACallAssignExpr");
-  return self;
-}
-val_t NEW_ACallAssignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallAssignExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ACallAssignExpr(self, "parser_prod::ASendExpr::init_asendexpr for ACallAssignExpr");
-  return self;
-}
-val_t NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___empty_init() {
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallAssignExpr();
-  parser_prod___ACallAssignExpr___empty_init(self, init_table);
-  CHECKNEW_ACallAssignExpr(self, "parser_prod::ACallAssignExpr::empty_init for ACallAssignExpr");
-  return self;
-}
-val_t NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallAssignExpr();
-  parser_prod___ACallAssignExpr___init_acallassignexpr(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_ACallAssignExpr(self, "parser_prod::ACallAssignExpr::init_acallassignexpr for ACallAssignExpr");
-  return self;
-}
-const classtable_elt_t VFT_ACallReassignExpr[129] = {
-  {(bigint) 4667 /* 0: Identity */},
-  {(bigint) 3 /* 1: ACallReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ACallReassignExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ACallReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ACallReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ACallReassignExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4151 /* 6: ACallReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 4555 /* 7: ACallReassignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ACallReassignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ACallReassignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4599 /* 10: ACallReassignExpr < ASendReassignExpr: superclass typecheck marker */},
-  {(bigint) 4607 /* 11: ACallReassignExpr < ACallFormExpr: superclass typecheck marker */},
-  {(bigint) 4667 /* 12: ACallReassignExpr < ACallReassignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 5 /* 23: ACallReassignExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ACallReassignExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ACallReassignExpr___visit_all},
-  {(bigint) parser_prod___ACallReassignExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 6 /* 60: ACallReassignExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ACallFormExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 7 /* 69: ACallReassignExpr < Prod: superclass init_table position */},
-  {(bigint) 1 /* 70: ACallReassignExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 72: ACallReassignExpr < ASendReassignExpr: superclass init_table position */},
-  {(bigint) typing___ASendReassignExpr___read_prop},
-  {(bigint) compiling_methods___ASendReassignExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendReassignExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 8 /* 80: ACallReassignExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___ACallReassignExpr___empty_init},
-  {(bigint) parser_prod___ACallReassignExpr___init_acallreassignexpr},
-  {(bigint) 11 /* 88: ACallReassignExpr < ACallReassignExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) typing___AReassignFormExpr___assign_method},
-  {(bigint) 9 /* 93: ACallReassignExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser_prod___ACallReassignExpr___n_assign_op__eq},
-  {(bigint) parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) parser_prod___ACallReassignExpr___n_value__eq},
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 3 /* 99: ACallReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 104: ACallReassignExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ACallReassignExpr___name},
-  {(bigint) typing___ACallReassignExpr___raw_arguments},
-  {(bigint) typing___ACallFormExpr___closure_defs},
-  {(bigint) typing___ASendReassignExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 4 /* 117: ACallReassignExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ACallReassignExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) typing___ACallReassignExpr___variable_create},
-  {(bigint) 10 /* 124: ACallReassignExpr < ACallFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ACallFormExpr___n_id},
-  {(bigint) parser_prod___ACallReassignExpr___n_id__eq},
-  {(bigint) parser_nodes___ACallFormExpr___n_args},
-  {(bigint) parser_nodes___ACallFormExpr___n_args__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ACallReassignExpr::_parent */
-/* 2: Attribute ACallReassignExpr::_first_token */
-/* 3: Attribute ACallReassignExpr::_last_token */
-/* 4: Attribute ACallReassignExpr::_read_prop */
-/* 5: Attribute ACallReassignExpr::_is_typed */
-/* 6: Attribute ACallReassignExpr::_stype */
-/* 7: Attribute ACallReassignExpr::_if_true_variable_ctx */
-/* 8: Attribute ACallReassignExpr::_if_false_variable_ctx */
-/* 9: Attribute ACallReassignExpr::_prop_signature */
-/* 10: Attribute ACallReassignExpr::_arguments */
-/* 11: Attribute ACallReassignExpr::_assign_method */
-/* 12: Attribute ACallReassignExpr::_n_assign_op */
-/* 13: Attribute ACallReassignExpr::_n_value */
-/* 14: Attribute ACallReassignExpr::_prop */
-/* 15: Attribute ACallReassignExpr::_return_type */
-/* 16: Attribute ACallReassignExpr::_n_expr */
-/* 17: Attribute ACallReassignExpr::_n_closure_defs */
-/* 18: Attribute ACallReassignExpr::_n_id */
-/* 19: Attribute ACallReassignExpr::_n_args */
-val_t NEW_ACallReassignExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_ACallReassignExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ACallFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ACallFormExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReassignFormExpr____n_value(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ACallReassignExpr(val_t self, char *from) {
-}
-val_t NEW_ACallReassignExpr_parser_nodes___PNode___init() {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallReassignExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ACallReassignExpr(self, "parser_nodes::PNode::init for ACallReassignExpr");
-  return self;
-}
-val_t NEW_ACallReassignExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallReassignExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ACallReassignExpr(self, "parser_prod::ASendExpr::empty_init for ACallReassignExpr");
-  return self;
-}
-val_t NEW_ACallReassignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallReassignExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ACallReassignExpr(self, "parser_prod::ASendExpr::init_asendexpr for ACallReassignExpr");
-  return self;
-}
-val_t NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___empty_init() {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallReassignExpr();
-  parser_prod___ACallReassignExpr___empty_init(self, init_table);
-  CHECKNEW_ACallReassignExpr(self, "parser_prod::ACallReassignExpr::empty_init for ACallReassignExpr");
-  return self;
-}
-val_t NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACallReassignExpr();
-  parser_prod___ACallReassignExpr___init_acallreassignexpr(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_ACallReassignExpr(self, "parser_prod::ACallReassignExpr::init_acallreassignexpr for ACallReassignExpr");
-  return self;
-}
-const classtable_elt_t VFT_ASuperExpr[121] = {
-  {(bigint) 4587 /* 0: Identity */},
-  {(bigint) 3 /* 1: ASuperExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ASuperExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ASuperExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ASuperExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ASuperExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ASuperExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ASuperExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4587 /* 9: ASuperExpr < ASuperExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ASuperExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ASuperExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ASuperExpr___visit_all},
-  {(bigint) parser_prod___ASuperExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ASuperExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASuperExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ASuperExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ASuperExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASuperExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASuperExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ASuperExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ASuperExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ASuperExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASuperExpr___intern_compile_call},
-  {(bigint) typing___ASuperExpr___init_in_superclass},
-  {(bigint) parser_prod___ASuperExpr___empty_init},
-  {(bigint) parser_prod___ASuperExpr___init_asuperexpr},
-  {(bigint) 7 /* 114: ASuperExpr < ASuperExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASuperExpr___n_qualified},
-  {(bigint) parser_prod___ASuperExpr___n_qualified__eq},
-  {(bigint) parser_nodes___ASuperExpr___n_kwsuper},
-  {(bigint) parser_prod___ASuperExpr___n_kwsuper__eq},
-  {(bigint) parser_nodes___ASuperExpr___n_args},
-  {(bigint) parser_nodes___ASuperExpr___n_args__eq},
+const char *LOCATE_tables = "./parser//tables.nit";
+const int SFT_tables[3] = {
+  23 /* Id of TablesCapable */,
+  3 /* Color of TablesCapable */,
+  45 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ASuperExpr::_parent */
-/* 2: Attribute ASuperExpr::_first_token */
-/* 3: Attribute ASuperExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ASuperExpr::_is_typed */
-/* 6: Attribute ASuperExpr::_stype */
-/* 7: Attribute ASuperExpr::_if_true_variable_ctx */
-/* 8: Attribute ASuperExpr::_if_false_variable_ctx */
-/* 9: Attribute ASuperExpr::_prop_signature */
-/* 10: Attribute ASuperExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ASuperExpr::_prop */
-/* 15: Attribute ASuperExpr::_return_type */
-/* 16: Attribute ASuperExpr::_init_in_superclass */
-/* 17: Attribute ASuperExpr::_n_qualified */
-/* 18: Attribute ASuperExpr::_n_kwsuper */
-/* 19: Attribute ASuperExpr::_n_args */
-val_t NEW_ASuperExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_ASuperExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASuperExpr____n_qualified(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASuperExpr____n_kwsuper(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASuperExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ASuperExpr(val_t self, char *from) {
-}
-val_t NEW_ASuperExpr_parser_nodes___PNode___init() {
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASuperExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ASuperExpr(self, "parser_nodes::PNode::init for ASuperExpr");
-  return self;
-}
-val_t NEW_ASuperExpr_parser_prod___ASuperExpr___empty_init() {
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASuperExpr();
-  parser_prod___ASuperExpr___empty_init(self, init_table);
-  CHECKNEW_ASuperExpr(self, "parser_prod::ASuperExpr::empty_init for ASuperExpr");
-  return self;
-}
-val_t NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val_t p2) {
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASuperExpr();
-  parser_prod___ASuperExpr___init_asuperexpr(self, p0, p1, p2, init_table);
-  CHECKNEW_ASuperExpr(self, "parser_prod::ASuperExpr::init_asuperexpr for ASuperExpr");
-  return self;
-}
-const classtable_elt_t VFT_AInitExpr[129] = {
-  {(bigint) 4603 /* 0: Identity */},
-  {(bigint) 3 /* 1: AInitExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AInitExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AInitExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: AInitExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AInitExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: AInitExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: AInitExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: AInitExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4603 /* 10: AInitExpr < AInitExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: AInitExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AInitExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AInitExpr___visit_all},
-  {(bigint) parser_prod___AInitExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: AInitExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: AInitExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: AInitExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: AInitExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: AInitExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: AInitExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___AInitExpr___name},
-  {(bigint) typing___AInitExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: AInitExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___AInitExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___AInitExpr___empty_init},
-  {(bigint) parser_prod___AInitExpr___init_ainitexpr},
-  {(bigint) 8 /* 124: AInitExpr < AInitExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AInitExpr___n_kwinit},
-  {(bigint) parser_prod___AInitExpr___n_kwinit__eq},
-  {(bigint) parser_nodes___AInitExpr___n_args},
-  {(bigint) parser_nodes___AInitExpr___n_args__eq},
+const char *LOCATE_mmloader = "./mmloader.nit";
+const int SFT_mmloader[12] = {
+  1907 /* Id of Message */,
+  5 /* Color of Message */,
+  2 /* Group of ? */,
+  60 /* Group of ? */,
+  291 /* Id of ToolContext */,
+  4 /* Color of ToolContext */,
+  12 /* Group of ? */,
+  65 /* Group of ? */,
+  123 /* Id of ModuleLoader */,
+  3 /* Color of ModuleLoader */,
+  45 /* Group of ? */,
+  48 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AInitExpr::_parent */
-/* 2: Attribute AInitExpr::_first_token */
-/* 3: Attribute AInitExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AInitExpr::_is_typed */
-/* 6: Attribute AInitExpr::_stype */
-/* 7: Attribute AInitExpr::_if_true_variable_ctx */
-/* 8: Attribute AInitExpr::_if_false_variable_ctx */
-/* 9: Attribute AInitExpr::_prop_signature */
-/* 10: Attribute AInitExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AInitExpr::_prop */
-/* 15: Attribute AInitExpr::_return_type */
-/* 16: Attribute AInitExpr::_n_expr */
-/* 17: Attribute AInitExpr::_n_closure_defs */
-/* 18: Attribute AInitExpr::_n_kwinit */
-/* 19: Attribute AInitExpr::_n_args */
-val_t NEW_AInitExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_AInitExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AInitExpr____n_kwinit(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AInitExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AInitExpr(val_t self, char *from) {
-}
-val_t NEW_AInitExpr_parser_nodes___PNode___init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AInitExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AInitExpr(self, "parser_nodes::PNode::init for AInitExpr");
-  return self;
-}
-val_t NEW_AInitExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AInitExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_AInitExpr(self, "parser_prod::ASendExpr::empty_init for AInitExpr");
-  return self;
-}
-val_t NEW_AInitExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AInitExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_AInitExpr(self, "parser_prod::ASendExpr::init_asendexpr for AInitExpr");
-  return self;
-}
-val_t NEW_AInitExpr_parser_prod___AInitExpr___empty_init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AInitExpr();
-  parser_prod___AInitExpr___empty_init(self, init_table);
-  CHECKNEW_AInitExpr(self, "parser_prod::AInitExpr::empty_init for AInitExpr");
-  return self;
-}
-val_t NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr(val_t p0, val_t p1, val_t p2) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AInitExpr();
-  parser_prod___AInitExpr___init_ainitexpr(self, p0, p1, p2, init_table);
-  CHECKNEW_AInitExpr(self, "parser_prod::AInitExpr::init_ainitexpr for AInitExpr");
-  return self;
-}
-const classtable_elt_t VFT_ABraFormExpr[122] = {
-  {(bigint) 4611 /* 0: Identity */},
-  {(bigint) 3 /* 1: ABraFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ABraFormExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ABraFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ABraFormExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ABraFormExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ABraFormExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ABraFormExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ABraFormExpr < ASendExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4611 /* 11: ABraFormExpr < ABraFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ABraFormExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ASendExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ASendExpr___visit_all},
-  {(bigint) parser_prod___ASendExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ABraFormExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ABraFormExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ABraFormExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ABraFormExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) 8 /* 86: ABraFormExpr < ABraFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABraFormExpr___n_args},
-  {(bigint) parser_nodes___ABraFormExpr___n_args__eq},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ABraFormExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ABraFormExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ASendExpr___name},
-  {(bigint) typing___ASendExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ABraFormExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ASendExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
+const char *LOCATE_metamodel = "./metamodel//metamodel.nit";
+const char *LOCATE_vararg = "./metamodel//vararg.nit";
+const int SFT_vararg[2] = {
+  2 /* Group of ? */,
+  47 /* Group of ? */,
+};
+const char *LOCATE_genericity = "./metamodel//genericity.nit";
+const int SFT_genericity[11] = {
+  2 /* Group of ? */,
+  48 /* Group of ? */,
+  50 /* Group of ? */,
+  2599 /* Id of MMTypeGeneric */,
+  5 /* Color of MMTypeGeneric */,
+  4 /* Group of ? */,
+  68 /* Group of ? */,
+  2603 /* Id of MMTypeFormalParameter */,
+  5 /* Color of MMTypeFormalParameter */,
+  5 /* Group of ? */,
+  70 /* Group of ? */,
+};
+const char *LOCATE_type_formal = "./metamodel//type_formal.nit";
+const int SFT_type_formal[5] = {
+  51 /* Group of ? */,
+  1931 /* Id of MMTypeFormal */,
+  4 /* Color of MMTypeFormal */,
+  3 /* Group of ? */,
+  66 /* Group of ? */,
+};
+const char *LOCATE_inheritance = "./metamodel//inheritance.nit";
+const int SFT_inheritance[18] = {
+  49 /* Group of ? */,
+  4 /* Group of ? */,
+  54 /* Group of ? */,
+  48 /* Group of ? */,
+  45 /* Group of ? */,
+  1963 /* Id of MMImplicitLocalClass */,
+  4 /* Color of MMImplicitLocalClass */,
+  113 /* Group of ? */,
+  1951 /* Id of MMRefineAncestor */,
+  4 /* Color of MMRefineAncestor */,
+  4 /* Group of ? */,
+  55 /* Group of ? */,
+  1947 /* Id of MMSpecAncestor */,
+  4 /* Color of MMSpecAncestor */,
+  55 /* Group of ? */,
+  1967 /* Id of MMDefaultAncestor */,
+  4 /* Color of MMDefaultAncestor */,
+  55 /* Group of ? */,
+};
+const char *LOCATE_static_type = "./metamodel//static_type.nit";
+const int SFT_static_type[37] = {
+  7 /* Group of ? */,
+  70 /* Group of ? */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  135 /* Id of MMSignature */,
+  3 /* Color of MMSignature */,
+  3 /* Group of ? */,
+  53 /* Group of ? */,
+  167 /* Id of MMClosure */,
+  3 /* Color of MMClosure */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  171 /* Id of MMAncestor */,
+  3 /* Color of MMAncestor */,
+  2 /* Group of ? */,
+  46 /* Group of ? */,
+  131 /* Id of MMType */,
+  3 /* Color of MMType */,
+  2 /* Group of ? */,
+  52 /* Group of ? */,
+  1955 /* Id of MMNullableType */,
+  4 /* Color of MMNullableType */,
+  3 /* Group of ? */,
+  66 /* Group of ? */,
+  1935 /* Id of MMTypeClass */,
+  4 /* Color of MMTypeClass */,
+  3 /* Group of ? */,
+  66 /* Group of ? */,
+  2595 /* Id of MMTypeSimpleClass */,
+  5 /* Color of MMTypeSimpleClass */,
+  68 /* Group of ? */,
+  1927 /* Id of MMTypeNone */,
+  4 /* Color of MMTypeNone */,
+  3 /* Group of ? */,
+  66 /* Group of ? */,
+  2 /* Group of ? */,
+  52 /* Group of ? */,
+};
+const char *LOCATE_abstractmetamodel = "./metamodel//abstractmetamodel.nit";
+const int SFT_abstractmetamodel[37] = {
+  163 /* Id of MMContext */,
+  3 /* Color of MMContext */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  159 /* Id of MMDirectory */,
+  3 /* Color of MMDirectory */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  139 /* Id of MMModule */,
+  3 /* Color of MMModule */,
+  3 /* Group of ? */,
+  54 /* Group of ? */,
+  155 /* Id of MMGlobalClass */,
+  3 /* Color of MMGlobalClass */,
+  2 /* Group of ? */,
+  46 /* Group of ? */,
+  147 /* Id of MMLocalClass */,
+  3 /* Color of MMLocalClass */,
+  9 /* Group of ? */,
+  74 /* Group of ? */,
+  151 /* Id of MMGlobalProperty */,
+  3 /* Color of MMGlobalProperty */,
+  2 /* Group of ? */,
+  47 /* Group of ? */,
+  143 /* Id of MMLocalProperty */,
+  3 /* Color of MMLocalProperty */,
+  4 /* Group of ? */,
+  52 /* Group of ? */,
+  1975 /* Id of MMAttribute */,
+  4 /* Color of MMAttribute */,
+  68 /* Group of ? */,
+  1959 /* Id of MMMethod */,
+  4 /* Color of MMMethod */,
+  69 /* Group of ? */,
+  1971 /* Id of MMConcreteClass */,
+  4 /* Color of MMConcreteClass */,
+  117 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ABraFormExpr::_parent */
-/* 2: Attribute ABraFormExpr::_first_token */
-/* 3: Attribute ABraFormExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ABraFormExpr::_is_typed */
-/* 6: Attribute ABraFormExpr::_stype */
-/* 7: Attribute ABraFormExpr::_if_true_variable_ctx */
-/* 8: Attribute ABraFormExpr::_if_false_variable_ctx */
-/* 9: Attribute ABraFormExpr::_prop_signature */
-/* 10: Attribute ABraFormExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ABraFormExpr::_prop */
-/* 15: Attribute ABraFormExpr::_return_type */
-/* 16: Attribute ABraFormExpr::_n_expr */
-/* 17: Attribute ABraFormExpr::_n_closure_defs */
-/* 18: Attribute ABraFormExpr::_n_args */
-val_t NEW_ABraFormExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_ABraFormExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABraFormExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ABraFormExpr(val_t self, char *from) {
-}
-val_t NEW_ABraFormExpr_parser_nodes___PNode___init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraFormExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ABraFormExpr(self, "parser_nodes::PNode::init for ABraFormExpr");
-  return self;
-}
-val_t NEW_ABraFormExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraFormExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ABraFormExpr(self, "parser_prod::ASendExpr::empty_init for ABraFormExpr");
-  return self;
-}
-val_t NEW_ABraFormExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraFormExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ABraFormExpr(self, "parser_prod::ASendExpr::init_asendexpr for ABraFormExpr");
-  return self;
-}
-const classtable_elt_t VFT_ABraExpr[125] = {
-  {(bigint) 4683 /* 0: Identity */},
-  {(bigint) 3 /* 1: ABraExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ABraExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ABraExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ABraExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ABraExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ABraExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ABraExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ABraExpr < ASendExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 4611 /* 11: ABraExpr < ABraFormExpr: superclass typecheck marker */},
-  {(bigint) 4683 /* 12: ABraExpr < ABraExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ABraExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ABraExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ABraExpr___visit_all},
-  {(bigint) parser_prod___ABraExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ABraExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ABraExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ABraExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ABraExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) 8 /* 86: ABraExpr < ABraFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABraFormExpr___n_args},
-  {(bigint) parser_nodes___ABraFormExpr___n_args__eq},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ABraExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ABraExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ABraExpr___name},
-  {(bigint) typing___ABraExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ABraExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ABraExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABraExpr___empty_init},
-  {(bigint) parser_prod___ABraExpr___init_abraexpr},
-  {(bigint) 9 /* 124: ABraExpr < ABraExpr: superclass init_table position */},
+const char *LOCATE_partial_order = "./metamodel//partial_order.nit";
+const int SFT_partial_order[8] = {
+  1863 /* Id of PartialOrder */,
+  6 /* Color of PartialOrder */,
+  2 /* Group of ? */,
+  71 /* Group of ? */,
+  103 /* Id of PartialOrderElement */,
+  3 /* Color of PartialOrderElement */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ABraExpr::_parent */
-/* 2: Attribute ABraExpr::_first_token */
-/* 3: Attribute ABraExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ABraExpr::_is_typed */
-/* 6: Attribute ABraExpr::_stype */
-/* 7: Attribute ABraExpr::_if_true_variable_ctx */
-/* 8: Attribute ABraExpr::_if_false_variable_ctx */
-/* 9: Attribute ABraExpr::_prop_signature */
-/* 10: Attribute ABraExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ABraExpr::_prop */
-/* 15: Attribute ABraExpr::_return_type */
-/* 16: Attribute ABraExpr::_n_expr */
-/* 17: Attribute ABraExpr::_n_closure_defs */
-/* 18: Attribute ABraExpr::_n_args */
-val_t NEW_ABraExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_ABraExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABraFormExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ABraExpr(val_t self, char *from) {
-}
-val_t NEW_ABraExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ABraExpr(self, "parser_nodes::PNode::init for ABraExpr");
-  return self;
-}
-val_t NEW_ABraExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ABraExpr(self, "parser_prod::ASendExpr::empty_init for ABraExpr");
-  return self;
-}
-val_t NEW_ABraExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ABraExpr(self, "parser_prod::ASendExpr::init_asendexpr for ABraExpr");
-  return self;
-}
-val_t NEW_ABraExpr_parser_prod___ABraExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraExpr();
-  parser_prod___ABraExpr___empty_init(self, init_table);
-  CHECKNEW_ABraExpr(self, "parser_prod::ABraExpr::empty_init for ABraExpr");
-  return self;
-}
-val_t NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p2) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraExpr();
-  parser_prod___ABraExpr___init_abraexpr(self, p0, p1, p2, init_table);
-  CHECKNEW_ABraExpr(self, "parser_prod::ABraExpr::init_abraexpr for ABraExpr");
-  return self;
-}
-const classtable_elt_t VFT_ABraAssignExpr[125] = {
-  {(bigint) 4687 /* 0: Identity */},
-  {(bigint) 3 /* 1: ABraAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ABraAssignExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ABraAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ABraAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ABraAssignExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4359 /* 6: ABraAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 4555 /* 7: ABraAssignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ABraAssignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ABraAssignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4687 /* 10: ABraAssignExpr < ABraAssignExpr: superclass typecheck marker */},
-  {(bigint) 4611 /* 11: ABraAssignExpr < ABraFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ABraAssignExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ABraAssignExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ABraAssignExpr___visit_all},
-  {(bigint) parser_prod___ABraAssignExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ABraAssignExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ABraAssignExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ABraAssignExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASendExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ABraAssignExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) 8 /* 86: ABraAssignExpr < ABraFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABraFormExpr___n_args},
-  {(bigint) parser_nodes___ABraFormExpr___n_args__eq},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 9 /* 91: ABraAssignExpr < AAssignFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAssignFormExpr___n_assign},
-  {(bigint) parser_prod___ABraAssignExpr___n_assign__eq},
-  {(bigint) parser_nodes___AAssignFormExpr___n_value},
-  {(bigint) parser_prod___ABraAssignExpr___n_value__eq},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ABraAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ABraAssignExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ABraAssignExpr___name},
-  {(bigint) typing___ABraAssignExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ABraAssignExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ABraAssignExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABraAssignExpr___empty_init},
-  {(bigint) parser_prod___ABraAssignExpr___init_abraassignexpr},
-  {(bigint) 10 /* 124: ABraAssignExpr < ABraAssignExpr: superclass init_table position */},
+const char *LOCATE_virtualtype = "./metamodel//virtualtype.nit";
+const int SFT_virtualtype[10] = {
+  46 /* Group of ? */,
+  1923 /* Id of MMTypeProperty */,
+  4 /* Color of MMTypeProperty */,
+  10 /* Group of ? */,
+  67 /* Group of ? */,
+  2591 /* Id of MMVirtualType */,
+  5 /* Color of MMVirtualType */,
+  5 /* Group of ? */,
+  70 /* Group of ? */,
+  101 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ABraAssignExpr::_parent */
-/* 2: Attribute ABraAssignExpr::_first_token */
-/* 3: Attribute ABraAssignExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ABraAssignExpr::_is_typed */
-/* 6: Attribute ABraAssignExpr::_stype */
-/* 7: Attribute ABraAssignExpr::_if_true_variable_ctx */
-/* 8: Attribute ABraAssignExpr::_if_false_variable_ctx */
-/* 9: Attribute ABraAssignExpr::_prop_signature */
-/* 10: Attribute ABraAssignExpr::_arguments */
-/* 11: Attribute ABraAssignExpr::_n_assign */
-/* 12: Attribute ABraAssignExpr::_n_value */
-/* Instance Hole :( */
-/* 14: Attribute ABraAssignExpr::_prop */
-/* 15: Attribute ABraAssignExpr::_return_type */
-/* 16: Attribute ABraAssignExpr::_n_expr */
-/* 17: Attribute ABraAssignExpr::_n_closure_defs */
-/* 18: Attribute ABraAssignExpr::_n_args */
-val_t NEW_ABraAssignExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_ABraAssignExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABraFormExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssignFormExpr____n_value(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ABraAssignExpr(val_t self, char *from) {
-}
-val_t NEW_ABraAssignExpr_parser_nodes___PNode___init() {
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraAssignExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ABraAssignExpr(self, "parser_nodes::PNode::init for ABraAssignExpr");
-  return self;
-}
-val_t NEW_ABraAssignExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraAssignExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ABraAssignExpr(self, "parser_prod::ASendExpr::empty_init for ABraAssignExpr");
-  return self;
-}
-val_t NEW_ABraAssignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraAssignExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ABraAssignExpr(self, "parser_prod::ASendExpr::init_asendexpr for ABraAssignExpr");
-  return self;
-}
-val_t NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___empty_init() {
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraAssignExpr();
-  parser_prod___ABraAssignExpr___empty_init(self, init_table);
-  CHECKNEW_ABraAssignExpr(self, "parser_prod::ABraAssignExpr::empty_init for ABraAssignExpr");
-  return self;
-}
-val_t NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraAssignExpr();
-  parser_prod___ABraAssignExpr___init_abraassignexpr(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_ABraAssignExpr(self, "parser_prod::ABraAssignExpr::init_abraassignexpr for ABraAssignExpr");
-  return self;
-}
-const classtable_elt_t VFT_AVarFormExpr[91] = {
-  {(bigint) 4091 /* 0: Identity */},
-  {(bigint) 3 /* 1: AVarFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AVarFormExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AVarFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4091 /* 4: AVarFormExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AVarFormExpr < PExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AVarFormExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AVarFormExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AVarFormExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AVarFormExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) syntax_base___AVarFormExpr___variable},
-  {(bigint) syntax_base___AVarFormExpr___variable__eq},
-  {(bigint) 4 /* 88: AVarFormExpr < AVarFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AVarFormExpr___n_id},
-  {(bigint) parser_nodes___AVarFormExpr___n_id__eq},
+const char *LOCATE_opts = "./../lib/opts.nit";
+const int SFT_opts[34] = {
+  111 /* Id of Option */,
+  3 /* Color of Option */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  1875 /* Id of OptionText */,
+  4 /* Color of OptionText */,
+  59 /* Group of ? */,
+  1887 /* Id of OptionBool */,
+  4 /* Color of OptionBool */,
+  59 /* Group of ? */,
+  1883 /* Id of OptionCount */,
+  4 /* Color of OptionCount */,
+  59 /* Group of ? */,
+  1879 /* Id of OptionParameter */,
+  4 /* Color of OptionParameter */,
+  59 /* Group of ? */,
+  2559 /* Id of OptionString */,
+  5 /* Color of OptionString */,
+  62 /* Group of ? */,
+  2567 /* Id of OptionEnum */,
+  5 /* Color of OptionEnum */,
+  7 /* Group of ? */,
+  62 /* Group of ? */,
+  2563 /* Id of OptionInt */,
+  5 /* Color of OptionInt */,
+  62 /* Group of ? */,
+  2571 /* Id of OptionArray */,
+  5 /* Color of OptionArray */,
+  7 /* Group of ? */,
+  62 /* Group of ? */,
+  107 /* Id of OptionContext */,
+  3 /* Color of OptionContext */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AVarFormExpr::_parent */
-/* 2: Attribute AVarFormExpr::_first_token */
-/* 3: Attribute AVarFormExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AVarFormExpr::_is_typed */
-/* 6: Attribute AVarFormExpr::_stype */
-/* 7: Attribute AVarFormExpr::_if_true_variable_ctx */
-/* 8: Attribute AVarFormExpr::_if_false_variable_ctx */
-/* 9: Attribute AVarFormExpr::_variable */
-/* 10: Attribute AVarFormExpr::_n_id */
-val_t NEW_AVarFormExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AVarFormExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AVarFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AVarFormExpr(val_t self, char *from) {
-}
-val_t NEW_AVarFormExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AVarFormExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AVarFormExpr(self, "parser_nodes::PNode::init for AVarFormExpr");
-  return self;
-}
-const classtable_elt_t VFT_ABraReassignExpr[125] = {
-  {(bigint) 4679 /* 0: Identity */},
-  {(bigint) 3 /* 1: ABraReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ABraReassignExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ABraReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ABraReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ABraReassignExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4151 /* 6: ABraReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 4555 /* 7: ABraReassignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ABraReassignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ABraReassignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4599 /* 10: ABraReassignExpr < ASendReassignExpr: superclass typecheck marker */},
-  {(bigint) 4611 /* 11: ABraReassignExpr < ABraFormExpr: superclass typecheck marker */},
-  {(bigint) 4679 /* 12: ABraReassignExpr < ABraReassignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 5 /* 23: ABraReassignExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ABraReassignExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ABraReassignExpr___visit_all},
-  {(bigint) parser_prod___ABraReassignExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 6 /* 60: ABraReassignExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 7 /* 69: ABraReassignExpr < Prod: superclass init_table position */},
-  {(bigint) 1 /* 70: ABraReassignExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 72: ABraReassignExpr < ASendReassignExpr: superclass init_table position */},
-  {(bigint) typing___ASendReassignExpr___read_prop},
-  {(bigint) compiling_methods___ASendReassignExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendReassignExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 8 /* 80: ABraReassignExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) 10 /* 86: ABraReassignExpr < ABraFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ABraFormExpr___n_args},
-  {(bigint) parser_nodes___ABraFormExpr___n_args__eq},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) typing___AReassignFormExpr___assign_method},
-  {(bigint) 9 /* 93: ABraReassignExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser_prod___ABraReassignExpr___n_assign_op__eq},
-  {(bigint) parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) parser_prod___ABraReassignExpr___n_value__eq},
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 3 /* 99: ABraReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 104: ABraReassignExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ABraReassignExpr___name},
-  {(bigint) typing___ABraReassignExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendReassignExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 4 /* 117: ABraReassignExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ABraReassignExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-  {(bigint) parser_prod___ABraReassignExpr___empty_init},
-  {(bigint) parser_prod___ABraReassignExpr___init_abrareassignexpr},
-  {(bigint) 11 /* 124: ABraReassignExpr < ABraReassignExpr: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ABraReassignExpr::_parent */
-/* 2: Attribute ABraReassignExpr::_first_token */
-/* 3: Attribute ABraReassignExpr::_last_token */
-/* 4: Attribute ABraReassignExpr::_read_prop */
-/* 5: Attribute ABraReassignExpr::_is_typed */
-/* 6: Attribute ABraReassignExpr::_stype */
-/* 7: Attribute ABraReassignExpr::_if_true_variable_ctx */
-/* 8: Attribute ABraReassignExpr::_if_false_variable_ctx */
-/* 9: Attribute ABraReassignExpr::_prop_signature */
-/* 10: Attribute ABraReassignExpr::_arguments */
-/* 11: Attribute ABraReassignExpr::_assign_method */
-/* 12: Attribute ABraReassignExpr::_n_assign_op */
-/* 13: Attribute ABraReassignExpr::_n_value */
-/* 14: Attribute ABraReassignExpr::_prop */
-/* 15: Attribute ABraReassignExpr::_return_type */
-/* 16: Attribute ABraReassignExpr::_n_expr */
-/* 17: Attribute ABraReassignExpr::_n_closure_defs */
-/* 18: Attribute ABraReassignExpr::_n_args */
-val_t NEW_ABraReassignExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_ABraReassignExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ABraFormExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReassignFormExpr____n_value(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ABraReassignExpr(val_t self, char *from) {
-}
-val_t NEW_ABraReassignExpr_parser_nodes___PNode___init() {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraReassignExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ABraReassignExpr(self, "parser_nodes::PNode::init for ABraReassignExpr");
-  return self;
-}
-val_t NEW_ABraReassignExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraReassignExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ABraReassignExpr(self, "parser_prod::ASendExpr::empty_init for ABraReassignExpr");
-  return self;
-}
-val_t NEW_ABraReassignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraReassignExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ABraReassignExpr(self, "parser_prod::ASendExpr::init_asendexpr for ABraReassignExpr");
-  return self;
-}
-val_t NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___empty_init() {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraReassignExpr();
-  parser_prod___ABraReassignExpr___empty_init(self, init_table);
-  CHECKNEW_ABraReassignExpr(self, "parser_prod::ABraReassignExpr::empty_init for ABraReassignExpr");
-  return self;
-}
-val_t NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ABraReassignExpr();
-  parser_prod___ABraReassignExpr___init_abrareassignexpr(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_ABraReassignExpr(self, "parser_prod::ABraReassignExpr::init_abrareassignexpr for ABraReassignExpr");
-  return self;
-}
-const classtable_elt_t VFT_AClosureCallExpr[116] = {
-  {(bigint) 4531 /* 0: Identity */},
-  {(bigint) 3 /* 1: AClosureCallExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AClosureCallExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AClosureCallExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: AClosureCallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AClosureCallExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4531 /* 6: AClosureCallExpr < AClosureCallExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 1 /* 23: AClosureCallExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AClosureCallExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AClosureCallExpr___visit_all},
-  {(bigint) parser_prod___AClosureCallExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 2 /* 60: AClosureCallExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AClosureCallExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 3 /* 69: AClosureCallExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AClosureCallExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AClosureCallExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 4 /* 80: AClosureCallExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 0 /* 99: AClosureCallExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) compiling_methods___AClosureCallExpr___intern_compile_call},
-  {(bigint) syntax_base___AClosureCallExpr___variable},
-  {(bigint) syntax_base___AClosureCallExpr___variable__eq},
-  {(bigint) parser_prod___AClosureCallExpr___empty_init},
-  {(bigint) parser_prod___AClosureCallExpr___init_aclosurecallexpr},
-  {(bigint) 5 /* 109: AClosureCallExpr < AClosureCallExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AClosureCallExpr___n_id},
-  {(bigint) parser_prod___AClosureCallExpr___n_id__eq},
-  {(bigint) parser_nodes___AClosureCallExpr___n_args},
-  {(bigint) parser_nodes___AClosureCallExpr___n_args__eq},
-  {(bigint) parser_nodes___AClosureCallExpr___n_closure_defs},
-  {(bigint) parser_nodes___AClosureCallExpr___n_closure_defs__eq},
+const char *LOCATE_icode_generation = "./syntax//icode_generation.nit";
+const int SFT_icode_generation[25] = {
+  2143 /* Id of A2IContext */,
+  4 /* Color of A2IContext */,
+  6 /* Group of ? */,
+  69 /* Group of ? */,
+  4 /* Group of ? */,
+  50 /* Group of ? */,
+  89 /* Group of ? */,
+  10 /* Group of ? */,
+  69 /* Group of ? */,
+  10 /* Group of ? */,
+  74 /* Group of ? */,
+  2879 /* Id of A2IVisitor */,
+  5 /* Color of A2IVisitor */,
+  7 /* Group of ? */,
+  80 /* Group of ? */,
+  61 /* Group of ? */,
+  92 /* Group of ? */,
+  86 /* Group of ? */,
+  75 /* Group of ? */,
+  73 /* Group of ? */,
+  11 /* Group of ? */,
+  79 /* Group of ? */,
+  87 /* Group of ? */,
+  7 /* Group of ? */,
+  69 /* Group of ? */,
+};
+const char *LOCATE_icode = "./icode//icode.nit";
+const char *LOCATE_icode_tools = "./icode//icode_tools.nit";
+const int SFT_icode_tools[12] = {
+  199 /* Id of ICodeVisitor */,
+  3 /* Color of ICodeVisitor */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  45 /* Group of ? */,
+  203 /* Id of ICodeDupContext */,
+  3 /* Color of ICodeDupContext */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  51 /* Group of ? */,
+  62 /* Group of ? */,
+  67 /* Group of ? */,
+};
+const char *LOCATE_icode_builder = "./icode//icode_builder.nit";
+const int SFT_icode_builder[5] = {
+  211 /* Id of ICodeBuilder */,
+  3 /* Color of ICodeBuilder */,
+  2 /* Group of ? */,
+  46 /* Group of ? */,
+  45 /* Group of ? */,
+};
+const char *LOCATE_icode_base = "./icode//icode_base.nit";
+const int SFT_icode_base[148] = {
+  187 /* Id of IRegister */,
+  3 /* Color of IRegister */,
+  9 /* Group of ? */,
+  53 /* Group of ? */,
+  195 /* Id of IEscapeMark */,
+  3 /* Color of IEscapeMark */,
+  45 /* Group of ? */,
+  219 /* Id of IClosureDecl */,
+  3 /* Color of IClosureDecl */,
+  2 /* Group of ? */,
+  46 /* Group of ? */,
+  183 /* Id of IRoutine */,
+  3 /* Color of IRoutine */,
+  4 /* Group of ? */,
+  53 /* Group of ? */,
+  2027 /* Id of IClosureDef */,
+  4 /* Color of IClosureDef */,
+  67 /* Group of ? */,
+  215 /* Id of ICode */,
+  3 /* Color of ICode */,
+  2 /* Group of ? */,
+  53 /* Group of ? */,
+  2023 /* Id of ICode0 */,
+  4 /* Color of ICode0 */,
+  61 /* Group of ? */,
+  2019 /* Id of ICode1 */,
+  4 /* Color of ICode1 */,
+  4 /* Group of ? */,
+  61 /* Group of ? */,
+  2015 /* Id of ICode2 */,
+  4 /* Color of ICode2 */,
+  4 /* Group of ? */,
+  61 /* Group of ? */,
+  2011 /* Id of ICodeN */,
+  4 /* Color of ICodeN */,
+  4 /* Group of ? */,
+  62 /* Group of ? */,
+  2639 /* Id of ISeq */,
+  5 /* Color of ISeq */,
+  4 /* Group of ? */,
+  63 /* Group of ? */,
+  2951 /* Id of ILoop */,
+  6 /* Color of ILoop */,
+  68 /* Group of ? */,
+  2679 /* Id of IIf */,
+  5 /* Color of IIf */,
+  5 /* Group of ? */,
+  64 /* Group of ? */,
+  2691 /* Id of IEscape */,
+  5 /* Color of IEscape */,
+  4 /* Group of ? */,
+  62 /* Group of ? */,
+  2731 /* Id of IAbort */,
+  5 /* Color of IAbort */,
+  4 /* Group of ? */,
+  62 /* Group of ? */,
+  2727 /* Id of IAbsCall */,
+  5 /* Color of IAbsCall */,
+  6 /* Group of ? */,
+  68 /* Group of ? */,
+  2959 /* Id of ICall */,
+  6 /* Color of ICall */,
+  71 /* Group of ? */,
+  2935 /* Id of ISuper */,
+  6 /* Color of ISuper */,
+  71 /* Group of ? */,
+  2947 /* Id of INew */,
+  6 /* Color of INew */,
+  7 /* Group of ? */,
+  71 /* Group of ? */,
+  2723 /* Id of IAllocateInstance */,
+  5 /* Color of IAllocateInstance */,
+  4 /* Group of ? */,
+  62 /* Group of ? */,
+  2939 /* Id of IStaticCall */,
+  6 /* Color of IStaticCall */,
+  71 /* Group of ? */,
+  2699 /* Id of ICheckInstance */,
+  5 /* Color of ICheckInstance */,
+  5 /* Group of ? */,
+  64 /* Group of ? */,
+  2675 /* Id of IInitAttributes */,
+  5 /* Color of IInitAttributes */,
+  5 /* Group of ? */,
+  64 /* Group of ? */,
+  2695 /* Id of IClosCall */,
+  5 /* Color of IClosCall */,
+  6 /* Group of ? */,
+  68 /* Group of ? */,
+  2659 /* Id of INative */,
+  5 /* Color of INative */,
+  6 /* Group of ? */,
+  69 /* Group of ? */,
+  2671 /* Id of IIntValue */,
+  5 /* Color of IIntValue */,
+  4 /* Group of ? */,
+  62 /* Group of ? */,
+  2707 /* Id of IBoolValue */,
+  5 /* Color of IBoolValue */,
+  4 /* Group of ? */,
+  62 /* Group of ? */,
+  2635 /* Id of IStringValue */,
+  5 /* Color of IStringValue */,
+  4 /* Group of ? */,
+  62 /* Group of ? */,
+  2687 /* Id of IFloatValue */,
+  5 /* Color of IFloatValue */,
+  4 /* Group of ? */,
+  62 /* Group of ? */,
+  2703 /* Id of ICharValue */,
+  5 /* Color of ICharValue */,
+  4 /* Group of ? */,
+  62 /* Group of ? */,
+  2663 /* Id of IMove */,
+  5 /* Color of IMove */,
+  64 /* Group of ? */,
+  2715 /* Id of IAttrRead */,
+  5 /* Color of IAttrRead */,
+  5 /* Group of ? */,
+  64 /* Group of ? */,
+  2711 /* Id of IAttrWrite */,
+  5 /* Color of IAttrWrite */,
+  6 /* Group of ? */,
+  65 /* Group of ? */,
+  2719 /* Id of IAttrIsset */,
+  5 /* Color of IAttrIsset */,
+  5 /* Group of ? */,
+  64 /* Group of ? */,
+  2631 /* Id of ITypeCheck */,
+  5 /* Color of ITypeCheck */,
+  5 /* Group of ? */,
+  64 /* Group of ? */,
+  2667 /* Id of IIs */,
+  5 /* Color of IIs */,
+  65 /* Group of ? */,
+  2655 /* Id of INot */,
+  5 /* Color of INot */,
+  64 /* Group of ? */,
+  2647 /* Id of IOnce */,
+  5 /* Color of IOnce */,
+  4 /* Group of ? */,
+  62 /* Group of ? */,
+  2683 /* Id of IHasClos */,
+  5 /* Color of IHasClos */,
+  4 /* Group of ? */,
+  62 /* Group of ? */,
+  67 /* Group of ? */,
+  68 /* Group of ? */,
+};
+const char *LOCATE_typing = "./syntax//typing.nit";
+const int SFT_typing[51] = {
+  90 /* Group of ? */,
+  2147 /* Id of TypingVisitor */,
+  5 /* Color of TypingVisitor */,
+  7 /* Group of ? */,
+  80 /* Group of ? */,
+  62 /* Group of ? */,
+  76 /* Group of ? */,
+  7 /* Group of ? */,
+  93 /* Group of ? */,
+  88 /* Group of ? */,
+  89 /* Group of ? */,
+  95 /* Group of ? */,
+  13 /* Group of ? */,
+  78 /* Group of ? */,
+  11 /* Group of ? */,
+  7 /* Group of ? */,
+  74 /* Group of ? */,
+  11 /* Group of ? */,
+  3247 /* Id of AAbsControl */,
+  7 /* Color of AAbsControl */,
+  11 /* Group of ? */,
+  79 /* Group of ? */,
+  12 /* Group of ? */,
+  11 /* Group of ? */,
+  13 /* Group of ? */,
+  82 /* Group of ? */,
+  67 /* Group of ? */,
+  11 /* Group of ? */,
+  11 /* Group of ? */,
+  79 /* Group of ? */,
+  18 /* Group of ? */,
+  16 /* Group of ? */,
+  87 /* Group of ? */,
+  11 /* Group of ? */,
+  88 /* Group of ? */,
+  16 /* Group of ? */,
+  94 /* Group of ? */,
+  67 /* Group of ? */,
+  100 /* Group of ? */,
+  6 /* Group of ? */,
+  112 /* Group of ? */,
+  112 /* Group of ? */,
+  108 /* Group of ? */,
+  13 /* Group of ? */,
+  67 /* Group of ? */,
+  8 /* Group of ? */,
+  70 /* Group of ? */,
+  2999 /* Id of ATypeCheckExpr */,
+  5 /* Color of ATypeCheckExpr */,
+  67 /* Group of ? */,
+  81 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AClosureCallExpr::_parent */
-/* 2: Attribute AClosureCallExpr::_first_token */
-/* 3: Attribute AClosureCallExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AClosureCallExpr::_is_typed */
-/* 6: Attribute AClosureCallExpr::_stype */
-/* 7: Attribute AClosureCallExpr::_if_true_variable_ctx */
-/* 8: Attribute AClosureCallExpr::_if_false_variable_ctx */
-/* 9: Attribute AClosureCallExpr::_prop_signature */
-/* 10: Attribute AClosureCallExpr::_arguments */
-/* 11: Attribute AClosureCallExpr::_variable */
-/* 12: Attribute AClosureCallExpr::_n_id */
-/* 13: Attribute AClosureCallExpr::_n_args */
-/* 14: Attribute AClosureCallExpr::_n_closure_defs */
-val_t NEW_AClosureCallExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 15);
-  obj->vft = (classtable_elt_t*)VFT_AClosureCallExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AClosureCallExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClosureCallExpr____n_args(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AClosureCallExpr(val_t self, char *from) {
-}
-val_t NEW_AClosureCallExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AClosureCallExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AClosureCallExpr(self, "parser_nodes::PNode::init for AClosureCallExpr");
-  return self;
-}
-val_t NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AClosureCallExpr();
-  parser_prod___AClosureCallExpr___empty_init(self, init_table);
-  CHECKNEW_AClosureCallExpr(self, "parser_prod::AClosureCallExpr::empty_init for AClosureCallExpr");
-  return self;
-}
-val_t NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, val_t p1, val_t p2) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AClosureCallExpr();
-  parser_prod___AClosureCallExpr___init_aclosurecallexpr(self, p0, p1, p2, init_table);
-  CHECKNEW_AClosureCallExpr(self, "parser_prod::AClosureCallExpr::init_aclosurecallexpr for AClosureCallExpr");
-  return self;
-}
-const classtable_elt_t VFT_AVarExpr[94] = {
-  {(bigint) 4439 /* 0: Identity */},
-  {(bigint) 3 /* 1: AVarExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AVarExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AVarExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4091 /* 4: AVarExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AVarExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4439 /* 6: AVarExpr < AVarExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AVarExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AVarExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AVarExpr___visit_all},
-  {(bigint) parser_prod___AVarExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AVarExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AVarExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AVarExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AVarExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AVarExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___AVarExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) syntax_base___AVarFormExpr___variable},
-  {(bigint) syntax_base___AVarFormExpr___variable__eq},
-  {(bigint) 4 /* 88: AVarExpr < AVarFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AVarFormExpr___n_id},
-  {(bigint) parser_prod___AVarExpr___n_id__eq},
-  {(bigint) parser_prod___AVarExpr___empty_init},
-  {(bigint) parser_prod___AVarExpr___init_avarexpr},
-  {(bigint) 5 /* 93: AVarExpr < AVarExpr: superclass init_table position */},
+const char *LOCATE_scope = "./syntax//scope.nit";
+const int SFT_scope[23] = {
+  51 /* Id of ScopeContext */,
+  3 /* Color of ScopeContext */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  55 /* Id of ScopeBlock */,
+  3 /* Color of ScopeBlock */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  2063 /* Id of EscapableBlock */,
+  4 /* Color of EscapableBlock */,
+  8 /* Group of ? */,
+  58 /* Group of ? */,
+  2783 /* Id of BreakOnlyEscapableBlock */,
+  5 /* Color of BreakOnlyEscapableBlock */,
+  65 /* Group of ? */,
+  2747 /* Id of EscapableClosure */,
+  5 /* Color of EscapableClosure */,
+  10 /* Group of ? */,
+  65 /* Group of ? */,
+  3167 /* Id of AEscapeExpr */,
+  7 /* Color of AEscapeExpr */,
+  11 /* Group of ? */,
+  79 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AVarExpr::_parent */
-/* 2: Attribute AVarExpr::_first_token */
-/* 3: Attribute AVarExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AVarExpr::_is_typed */
-/* 6: Attribute AVarExpr::_stype */
-/* 7: Attribute AVarExpr::_if_true_variable_ctx */
-/* 8: Attribute AVarExpr::_if_false_variable_ctx */
-/* 9: Attribute AVarExpr::_variable */
-/* 10: Attribute AVarExpr::_n_id */
-val_t NEW_AVarExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AVarExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AVarFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AVarExpr(val_t self, char *from) {
-}
-val_t NEW_AVarExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AVarExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AVarExpr(self, "parser_nodes::PNode::init for AVarExpr");
-  return self;
-}
-val_t NEW_AVarExpr_parser_prod___AVarExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AVarExpr();
-  parser_prod___AVarExpr___empty_init(self, init_table);
-  CHECKNEW_AVarExpr(self, "parser_prod::AVarExpr::empty_init for AVarExpr");
-  return self;
-}
-val_t NEW_AVarExpr_parser_prod___AVarExpr___init_avarexpr(val_t p0) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AVarExpr();
-  parser_prod___AVarExpr___init_avarexpr(self, p0, init_table);
-  CHECKNEW_AVarExpr(self, "parser_prod::AVarExpr::init_avarexpr for AVarExpr");
-  return self;
-}
-const classtable_elt_t VFT_AVarAssignExpr[96] = {
-  {(bigint) 4443 /* 0: Identity */},
-  {(bigint) 3 /* 1: AVarAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AVarAssignExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AVarAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4091 /* 4: AVarAssignExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AVarAssignExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4359 /* 6: AVarAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 4443 /* 7: AVarAssignExpr < AVarAssignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AVarAssignExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AVarAssignExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AVarAssignExpr___visit_all},
-  {(bigint) parser_prod___AVarAssignExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AVarAssignExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AVarAssignExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AVarAssignExpr < Prod: superclass init_table position */},
-  {(bigint) parser_prod___AVarAssignExpr___empty_init},
-  {(bigint) parser_prod___AVarAssignExpr___init_avarassignexpr},
-  {(bigint) 6 /* 72: AVarAssignExpr < AVarAssignExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AVarAssignExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AVarAssignExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) syntax_base___AVarFormExpr___variable},
-  {(bigint) syntax_base___AVarFormExpr___variable__eq},
-  {(bigint) 4 /* 88: AVarAssignExpr < AVarFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AVarFormExpr___n_id},
-  {(bigint) parser_prod___AVarAssignExpr___n_id__eq},
-  {(bigint) 5 /* 91: AVarAssignExpr < AAssignFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAssignFormExpr___n_assign},
-  {(bigint) parser_prod___AVarAssignExpr___n_assign__eq},
-  {(bigint) parser_nodes___AAssignFormExpr___n_value},
-  {(bigint) parser_prod___AVarAssignExpr___n_value__eq},
+const char *LOCATE_flow = "./syntax//flow.nit";
+const int SFT_flow[20] = {
+  231 /* Id of FlowContext */,
+  3 /* Color of FlowContext */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  323 /* Id of RootFlowContext */,
+  4 /* Color of RootFlowContext */,
+  60 /* Group of ? */,
+  307 /* Id of SubFlowContext */,
+  4 /* Color of SubFlowContext */,
+  7 /* Group of ? */,
+  60 /* Group of ? */,
+  2775 /* Id of CastFlowContext */,
+  5 /* Color of CastFlowContext */,
+  8 /* Group of ? */,
+  63 /* Group of ? */,
+  1911 /* Id of MergeFlowContext */,
+  4 /* Color of MergeFlowContext */,
+  7 /* Group of ? */,
+  60 /* Group of ? */,
+  45 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AVarAssignExpr::_parent */
-/* 2: Attribute AVarAssignExpr::_first_token */
-/* 3: Attribute AVarAssignExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AVarAssignExpr::_is_typed */
-/* 6: Attribute AVarAssignExpr::_stype */
-/* 7: Attribute AVarAssignExpr::_if_true_variable_ctx */
-/* 8: Attribute AVarAssignExpr::_if_false_variable_ctx */
-/* 9: Attribute AVarAssignExpr::_variable */
-/* 10: Attribute AVarAssignExpr::_n_id */
-/* 11: Attribute AVarAssignExpr::_n_assign */
-/* 12: Attribute AVarAssignExpr::_n_value */
-val_t NEW_AVarAssignExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_AVarAssignExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AVarFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssignFormExpr____n_assign(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAssignFormExpr____n_value(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AVarAssignExpr(val_t self, char *from) {
-}
-val_t NEW_AVarAssignExpr_parser_nodes___PNode___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AVarAssignExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AVarAssignExpr(self, "parser_nodes::PNode::init for AVarAssignExpr");
-  return self;
-}
-val_t NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AVarAssignExpr();
-  parser_prod___AVarAssignExpr___empty_init(self, init_table);
-  CHECKNEW_AVarAssignExpr(self, "parser_prod::AVarAssignExpr::empty_init for AVarAssignExpr");
-  return self;
-}
-val_t NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___init_avarassignexpr(val_t p0, val_t p1, val_t p2) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AVarAssignExpr();
-  parser_prod___AVarAssignExpr___init_avarassignexpr(self, p0, p1, p2, init_table);
-  CHECKNEW_AVarAssignExpr(self, "parser_prod::AVarAssignExpr::init_avarassignexpr for AVarAssignExpr");
-  return self;
-}
-const classtable_elt_t VFT_AVarReassignExpr[98] = {
-  {(bigint) 4435 /* 0: Identity */},
-  {(bigint) 3 /* 1: AVarReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AVarReassignExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AVarReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4091 /* 4: AVarReassignExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AVarReassignExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4151 /* 6: AVarReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 4435 /* 7: AVarReassignExpr < AVarReassignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AVarReassignExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AVarReassignExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AVarReassignExpr___visit_all},
-  {(bigint) parser_prod___AVarReassignExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AVarReassignExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AVarReassignExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AVarReassignExpr < Prod: superclass init_table position */},
-  {(bigint) parser_prod___AVarReassignExpr___empty_init},
-  {(bigint) parser_prod___AVarReassignExpr___init_avarreassignexpr},
-  {(bigint) 6 /* 72: AVarReassignExpr < AVarReassignExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AVarReassignExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AVarReassignExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) syntax_base___AVarFormExpr___variable},
-  {(bigint) syntax_base___AVarFormExpr___variable__eq},
-  {(bigint) 4 /* 88: AVarReassignExpr < AVarFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AVarFormExpr___n_id},
-  {(bigint) parser_prod___AVarReassignExpr___n_id__eq},
-  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) typing___AReassignFormExpr___assign_method},
-  {(bigint) 5 /* 93: AVarReassignExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser_prod___AVarReassignExpr___n_assign_op__eq},
-  {(bigint) parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) parser_prod___AVarReassignExpr___n_value__eq},
+const char *LOCATE_primitive_info = "./primitive_info.nit";
+const int SFT_primitive_info[7] = {
+  20 /* Group of ? */,
+  103 /* Group of ? */,
+  95 /* Id of PrimitiveInfo */,
+  3 /* Color of PrimitiveInfo */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  45 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AVarReassignExpr::_parent */
-/* 2: Attribute AVarReassignExpr::_first_token */
-/* 3: Attribute AVarReassignExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AVarReassignExpr::_is_typed */
-/* 6: Attribute AVarReassignExpr::_stype */
-/* 7: Attribute AVarReassignExpr::_if_true_variable_ctx */
-/* 8: Attribute AVarReassignExpr::_if_false_variable_ctx */
-/* 9: Attribute AVarReassignExpr::_variable */
-/* 10: Attribute AVarReassignExpr::_n_id */
-/* 11: Attribute AVarReassignExpr::_assign_method */
-/* 12: Attribute AVarReassignExpr::_n_assign_op */
-/* 13: Attribute AVarReassignExpr::_n_value */
-val_t NEW_AVarReassignExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_AVarReassignExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AVarFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReassignFormExpr____n_value(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AVarReassignExpr(val_t self, char *from) {
-}
-val_t NEW_AVarReassignExpr_parser_nodes___PNode___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AVarReassignExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AVarReassignExpr(self, "parser_nodes::PNode::init for AVarReassignExpr");
-  return self;
-}
-val_t NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___empty_init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AVarReassignExpr();
-  parser_prod___AVarReassignExpr___empty_init(self, init_table);
-  CHECKNEW_AVarReassignExpr(self, "parser_prod::AVarReassignExpr::empty_init for AVarReassignExpr");
-  return self;
-}
-val_t NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t p0, val_t p1, val_t p2) {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AVarReassignExpr();
-  parser_prod___AVarReassignExpr___init_avarreassignexpr(self, p0, p1, p2, init_table);
-  CHECKNEW_AVarReassignExpr(self, "parser_prod::AVarReassignExpr::init_avarreassignexpr for AVarReassignExpr");
-  return self;
-}
-const classtable_elt_t VFT_ARangeExpr[94] = {
-  {(bigint) 4159 /* 0: Identity */},
-  {(bigint) 3 /* 1: ARangeExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ARangeExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ARangeExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: ARangeExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4159 /* 6: ARangeExpr < ARangeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ARangeExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ARangeExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ARangeExpr___visit_all},
-  {(bigint) parser_prod___ARangeExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ARangeExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ARangeExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ARangeExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ARangeExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ARangeExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) typing___ARangeExpr___meth_init},
-  {(bigint) parser_prod___ARangeExpr___empty_init},
-  {(bigint) parser_prod___ARangeExpr___init_arangeexpr},
-  {(bigint) 4 /* 89: ARangeExpr < ARangeExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ARangeExpr___n_expr},
-  {(bigint) parser_prod___ARangeExpr___n_expr__eq},
-  {(bigint) parser_nodes___ARangeExpr___n_expr2},
-  {(bigint) parser_prod___ARangeExpr___n_expr2__eq},
+const char *LOCATE_nit_version = "./nit_version.nit";
+const int SFT_nit_version[1] = {
+  17 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ARangeExpr::_parent */
-/* 2: Attribute ARangeExpr::_first_token */
-/* 3: Attribute ARangeExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ARangeExpr::_is_typed */
-/* 6: Attribute ARangeExpr::_stype */
-/* 7: Attribute ARangeExpr::_if_true_variable_ctx */
-/* 8: Attribute ARangeExpr::_if_false_variable_ctx */
-/* 9: Attribute ARangeExpr::_meth_init */
-/* 10: Attribute ARangeExpr::_n_expr */
-/* 11: Attribute ARangeExpr::_n_expr2 */
-val_t NEW_ARangeExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_ARangeExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ARangeExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ARangeExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ARangeExpr(val_t self, char *from) {
-}
-val_t NEW_ARangeExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ARangeExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ARangeExpr(self, "parser_nodes::PNode::init for ARangeExpr");
-  return self;
-}
-val_t NEW_ARangeExpr_parser_prod___ARangeExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ARangeExpr();
-  parser_prod___ARangeExpr___empty_init(self, init_table);
-  CHECKNEW_ARangeExpr(self, "parser_prod::ARangeExpr::empty_init for ARangeExpr");
-  return self;
-}
-val_t NEW_ARangeExpr_parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ARangeExpr();
-  parser_prod___ARangeExpr___init_arangeexpr(self, p0, p1, init_table);
-  CHECKNEW_ARangeExpr(self, "parser_prod::ARangeExpr::init_arangeexpr for ARangeExpr");
-  return self;
-}
-const classtable_elt_t VFT_ACrangeExpr[98] = {
-  {(bigint) 4523 /* 0: Identity */},
-  {(bigint) 3 /* 1: ACrangeExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ACrangeExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ACrangeExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: ACrangeExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4159 /* 6: ACrangeExpr < ARangeExpr: superclass typecheck marker */},
-  {(bigint) 4523 /* 7: ACrangeExpr < ACrangeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ACrangeExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ACrangeExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ACrangeExpr___visit_all},
-  {(bigint) parser_prod___ACrangeExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ACrangeExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ACrangeExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ACrangeExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ARangeExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ACrangeExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) typing___ARangeExpr___meth_init},
-  {(bigint) parser_prod___ARangeExpr___empty_init},
-  {(bigint) parser_prod___ARangeExpr___init_arangeexpr},
-  {(bigint) 4 /* 89: ACrangeExpr < ARangeExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ARangeExpr___n_expr},
-  {(bigint) parser_prod___ACrangeExpr___n_expr__eq},
-  {(bigint) parser_nodes___ARangeExpr___n_expr2},
-  {(bigint) parser_prod___ACrangeExpr___n_expr2__eq},
-  {(bigint) typing___ARangeExpr___after_typing},
-  {(bigint) parser_prod___ACrangeExpr___empty_init},
-  {(bigint) parser_prod___ACrangeExpr___init_acrangeexpr},
-  {(bigint) 5 /* 97: ACrangeExpr < ACrangeExpr: superclass init_table position */},
+const char *LOCATE_compiling = "./compiling//compiling.nit";
+const int SFT_compiling[3] = {
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  74 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ACrangeExpr::_parent */
-/* 2: Attribute ACrangeExpr::_first_token */
-/* 3: Attribute ACrangeExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ACrangeExpr::_is_typed */
-/* 6: Attribute ACrangeExpr::_stype */
-/* 7: Attribute ACrangeExpr::_if_true_variable_ctx */
-/* 8: Attribute ACrangeExpr::_if_false_variable_ctx */
-/* 9: Attribute ACrangeExpr::_meth_init */
-/* 10: Attribute ACrangeExpr::_n_expr */
-/* 11: Attribute ACrangeExpr::_n_expr2 */
-val_t NEW_ACrangeExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_ACrangeExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ARangeExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ARangeExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ACrangeExpr(val_t self, char *from) {
-}
-val_t NEW_ACrangeExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACrangeExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ACrangeExpr(self, "parser_nodes::PNode::init for ACrangeExpr");
-  return self;
-}
-val_t NEW_ACrangeExpr_parser_prod___ARangeExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACrangeExpr();
-  parser_prod___ARangeExpr___empty_init(self, init_table);
-  CHECKNEW_ACrangeExpr(self, "parser_prod::ARangeExpr::empty_init for ACrangeExpr");
-  return self;
-}
-val_t NEW_ACrangeExpr_parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACrangeExpr();
-  parser_prod___ARangeExpr___init_arangeexpr(self, p0, p1, init_table);
-  CHECKNEW_ACrangeExpr(self, "parser_prod::ARangeExpr::init_arangeexpr for ACrangeExpr");
-  return self;
-}
-val_t NEW_ACrangeExpr_parser_prod___ACrangeExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACrangeExpr();
-  parser_prod___ACrangeExpr___empty_init(self, init_table);
-  CHECKNEW_ACrangeExpr(self, "parser_prod::ACrangeExpr::empty_init for ACrangeExpr");
-  return self;
-}
-val_t NEW_ACrangeExpr_parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ACrangeExpr();
-  parser_prod___ACrangeExpr___init_acrangeexpr(self, p0, p1, init_table);
-  CHECKNEW_ACrangeExpr(self, "parser_prod::ACrangeExpr::init_acrangeexpr for ACrangeExpr");
-  return self;
-}
-const classtable_elt_t VFT_AOrangeExpr[98] = {
-  {(bigint) 4463 /* 0: Identity */},
-  {(bigint) 3 /* 1: AOrangeExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AOrangeExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AOrangeExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AOrangeExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4159 /* 6: AOrangeExpr < ARangeExpr: superclass typecheck marker */},
-  {(bigint) 4463 /* 7: AOrangeExpr < AOrangeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AOrangeExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AOrangeExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AOrangeExpr___visit_all},
-  {(bigint) parser_prod___AOrangeExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AOrangeExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AOrangeExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AOrangeExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ARangeExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AOrangeExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) typing___ARangeExpr___meth_init},
-  {(bigint) parser_prod___ARangeExpr___empty_init},
-  {(bigint) parser_prod___ARangeExpr___init_arangeexpr},
-  {(bigint) 4 /* 89: AOrangeExpr < ARangeExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ARangeExpr___n_expr},
-  {(bigint) parser_prod___AOrangeExpr___n_expr__eq},
-  {(bigint) parser_nodes___ARangeExpr___n_expr2},
-  {(bigint) parser_prod___AOrangeExpr___n_expr2__eq},
-  {(bigint) typing___ARangeExpr___after_typing},
-  {(bigint) parser_prod___AOrangeExpr___empty_init},
-  {(bigint) parser_prod___AOrangeExpr___init_aorangeexpr},
-  {(bigint) 5 /* 97: AOrangeExpr < AOrangeExpr: superclass init_table position */},
+const char *LOCATE_icode_generator = "./compiling//icode_generator.nit";
+const int SFT_icode_generator[7] = {
+  50 /* Group of ? */,
+  2051 /* Id of FileICodeDumper */,
+  4 /* Color of FileICodeDumper */,
+  10 /* Group of ? */,
+  59 /* Group of ? */,
+  105 /* Group of ? */,
+  67 /* Group of ? */,
+};
+const char *LOCATE_compiling_base = "./compiling//compiling_base.nit";
+const int SFT_compiling_base[14] = {
+  34 /* Group of ? */,
+  97 /* Group of ? */,
+  259 /* Id of CProgram */,
+  3 /* Color of CProgram */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  239 /* Id of CompilerVisitor */,
+  3 /* Color of CompilerVisitor */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  60 /* Group of ? */,
+  64 /* Group of ? */,
+  9 /* Group of ? */,
+  65 /* Group of ? */,
+};
+const char *LOCATE_utils = "./utils.nit";
+const int SFT_utils[1] = {
+  43 /* Group of ? */,
+};
+const char *LOCATE_program = "./program.nit";
+const int SFT_program[8] = {
+  32 /* Group of ? */,
+  93 /* Group of ? */,
+  87 /* Id of Program */,
+  3 /* Color of Program */,
+  4 /* Group of ? */,
+  60 /* Group of ? */,
+  22 /* Group of ? */,
+  106 /* Group of ? */,
+};
+const char *LOCATE_compiling_writer = "./compiling//compiling_writer.nit";
+const int SFT_compiling_writer[16] = {
+  11 /* Id of Writer */,
+  3 /* Color of Writer */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  7 /* Id of WriterNode */,
+  3 /* Color of WriterNode */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  283 /* Id of WriterCoreNode */,
+  4 /* Color of WriterCoreNode */,
+  3 /* Group of ? */,
+  48 /* Group of ? */,
+  279 /* Id of WriterStrings */,
+  4 /* Color of WriterStrings */,
+  3 /* Group of ? */,
+  48 /* Group of ? */,
+};
+const char *LOCATE_analysis = "./analysis//analysis.nit";
+const int SFT_analysis[4] = {
+  6 /* Group of ? */,
+  53 /* Group of ? */,
+  51 /* Group of ? */,
+  48 /* Group of ? */,
+};
+const char *LOCATE_icode_dump = "./analysis//icode_dump.nit";
+const int SFT_icode_dump[8] = {
+  49 /* Group of ? */,
+  45 /* Group of ? */,
+  207 /* Id of ICodeDumper */,
+  3 /* Color of ICodeDumper */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  49 /* Group of ? */,
+  61 /* Group of ? */,
+};
+const char *LOCATE_allocate_iregister_slots = "./analysis//allocate_iregister_slots.nit";
+const int SFT_allocate_iregister_slots[12] = {
+  2007 /* Id of IRegisterSlotAllocationVisitor */,
+  4 /* Color of IRegisterSlotAllocationVisitor */,
+  3 /* Group of ? */,
+  53 /* Group of ? */,
+  43 /* Id of SlotGroup */,
+  3 /* Color of SlotGroup */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+};
+const char *LOCATE_inline_methods = "./analysis//inline_methods.nit";
+const int SFT_inline_methods[6] = {
+  1995 /* Id of InlineMethodVisitor */,
+  4 /* Color of InlineMethodVisitor */,
+  3 /* Group of ? */,
+  53 /* Group of ? */,
+  73 /* Group of ? */,
+  64 /* Group of ? */,
+};
+const char *LOCATE_cha_analysis = "./analysis//cha_analysis.nit";
+const int SFT_cha_analysis[12] = {
+  2115 /* Id of ChaContext */,
+  4 /* Color of ChaContext */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  255 /* Id of ChaBuilder */,
+  3 /* Color of ChaBuilder */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  2111 /* Id of ChaVisitor */,
+  4 /* Color of ChaVisitor */,
+  3 /* Group of ? */,
+  53 /* Group of ? */,
+};
+const char *LOCATE_reachable_method_analysis = "./analysis//reachable_method_analysis.nit";
+const int SFT_reachable_method_analysis[8] = {
+  11 /* Group of ? */,
+  79 /* Group of ? */,
+  67 /* Id of ReachableMethodAnalysis */,
+  3 /* Color of ReachableMethodAnalysis */,
+  45 /* Group of ? */,
+  2071 /* Id of DefaultReachableMethodAnalysis */,
+  4 /* Color of DefaultReachableMethodAnalysis */,
+  49 /* Group of ? */,
+};
+const char *LOCATE_rta_analysis = "./analysis//rta_analysis.nit";
+const int SFT_rta_analysis[12] = {
+  319 /* Id of RtaContext */,
+  5 /* Color of RtaContext */,
+  2 /* Group of ? */,
+  52 /* Group of ? */,
+  59 /* Id of RtaBuilder */,
+  3 /* Color of RtaBuilder */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  315 /* Id of RtaVisitor */,
+  4 /* Color of RtaVisitor */,
+  3 /* Group of ? */,
+  53 /* Group of ? */,
+};
+const char *LOCATE_instantiated_type_analysis = "./analysis//instantiated_type_analysis.nit";
+const int SFT_instantiated_type_analysis[8] = {
+  3 /* Group of ? */,
+  56 /* Group of ? */,
+  179 /* Id of InstantiatedTypeAnalysis */,
+  4 /* Color of InstantiatedTypeAnalysis */,
+  49 /* Group of ? */,
+  2083 /* Id of DefaultInstantiatedTypeAnalysis */,
+  5 /* Color of DefaultInstantiatedTypeAnalysis */,
+  52 /* Group of ? */,
+};
+const char *LOCATE_reachable_as_init_impl = "./analysis//reachable_as_init_impl.nit";
+const int SFT_reachable_as_init_impl[12] = {
+  75 /* Id of ReachableAsInitBuilder */,
+  3 /* Color of ReachableAsInitBuilder */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  1839 /* Id of ReachableAsInitAnalysisImpl */,
+  4 /* Color of ReachableAsInitAnalysisImpl */,
+  2 /* Group of ? */,
+  48 /* Group of ? */,
+  1855 /* Id of RAIVisitor */,
+  4 /* Color of RAIVisitor */,
+  3 /* Group of ? */,
+  53 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AOrangeExpr::_parent */
-/* 2: Attribute AOrangeExpr::_first_token */
-/* 3: Attribute AOrangeExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AOrangeExpr::_is_typed */
-/* 6: Attribute AOrangeExpr::_stype */
-/* 7: Attribute AOrangeExpr::_if_true_variable_ctx */
-/* 8: Attribute AOrangeExpr::_if_false_variable_ctx */
-/* 9: Attribute AOrangeExpr::_meth_init */
-/* 10: Attribute AOrangeExpr::_n_expr */
-/* 11: Attribute AOrangeExpr::_n_expr2 */
-val_t NEW_AOrangeExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_AOrangeExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ARangeExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ARangeExpr____n_expr2(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AOrangeExpr(val_t self, char *from) {
-}
-val_t NEW_AOrangeExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AOrangeExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AOrangeExpr(self, "parser_nodes::PNode::init for AOrangeExpr");
-  return self;
-}
-val_t NEW_AOrangeExpr_parser_prod___ARangeExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AOrangeExpr();
-  parser_prod___ARangeExpr___empty_init(self, init_table);
-  CHECKNEW_AOrangeExpr(self, "parser_prod::ARangeExpr::empty_init for AOrangeExpr");
-  return self;
-}
-val_t NEW_AOrangeExpr_parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AOrangeExpr();
-  parser_prod___ARangeExpr___init_arangeexpr(self, p0, p1, init_table);
-  CHECKNEW_AOrangeExpr(self, "parser_prod::ARangeExpr::init_arangeexpr for AOrangeExpr");
-  return self;
-}
-val_t NEW_AOrangeExpr_parser_prod___AOrangeExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AOrangeExpr();
-  parser_prod___AOrangeExpr___empty_init(self, init_table);
-  CHECKNEW_AOrangeExpr(self, "parser_prod::AOrangeExpr::empty_init for AOrangeExpr");
-  return self;
-}
-val_t NEW_AOrangeExpr_parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AOrangeExpr();
-  parser_prod___AOrangeExpr___init_aorangeexpr(self, p0, p1, init_table);
-  CHECKNEW_AOrangeExpr(self, "parser_prod::AOrangeExpr::init_aorangeexpr for AOrangeExpr");
-  return self;
-}
-const classtable_elt_t VFT_AArrayExpr[94] = {
-  {(bigint) 4371 /* 0: Identity */},
-  {(bigint) 3 /* 1: AArrayExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AArrayExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AArrayExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AArrayExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4371 /* 6: AArrayExpr < AArrayExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AArrayExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AArrayExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AArrayExpr___visit_all},
-  {(bigint) parser_prod___AArrayExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AArrayExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AArrayExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AArrayExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AArrayExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AArrayExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) typing___AArrayExpr___meth_with_capacity},
-  {(bigint) typing___AArrayExpr___meth_add},
-  {(bigint) typing___AArrayExpr___do_typing},
-  {(bigint) parser_prod___AArrayExpr___empty_init},
-  {(bigint) parser_prod___AArrayExpr___init_aarrayexpr},
-  {(bigint) 4 /* 91: AArrayExpr < AArrayExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AArrayExpr___n_exprs},
-  {(bigint) parser_nodes___AArrayExpr___n_exprs__eq},
+const char *LOCATE_reachable_as_init = "./analysis//reachable_as_init.nit";
+const int SFT_reachable_as_init[8] = {
+  8 /* Group of ? */,
+  72 /* Group of ? */,
+  79 /* Id of ReachableAsInitAnalysis */,
+  3 /* Color of ReachableAsInitAnalysis */,
+  45 /* Group of ? */,
+  2079 /* Id of DefaultReachableAsInitAnalysis */,
+  4 /* Color of DefaultReachableAsInitAnalysis */,
+  48 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AArrayExpr::_parent */
-/* 2: Attribute AArrayExpr::_first_token */
-/* 3: Attribute AArrayExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AArrayExpr::_is_typed */
-/* 6: Attribute AArrayExpr::_stype */
-/* 7: Attribute AArrayExpr::_if_true_variable_ctx */
-/* 8: Attribute AArrayExpr::_if_false_variable_ctx */
-/* 9: Attribute AArrayExpr::_meth_with_capacity */
-/* 10: Attribute AArrayExpr::_meth_add */
-/* 11: Attribute AArrayExpr::_n_exprs */
-val_t NEW_AArrayExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_AArrayExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AArrayExpr____n_exprs(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AArrayExpr(val_t self, char *from) {
-}
-val_t NEW_AArrayExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AArrayExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AArrayExpr(self, "parser_nodes::PNode::init for AArrayExpr");
-  return self;
-}
-val_t NEW_AArrayExpr_parser_prod___AArrayExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AArrayExpr();
-  parser_prod___AArrayExpr___empty_init(self, init_table);
-  CHECKNEW_AArrayExpr(self, "parser_prod::AArrayExpr::empty_init for AArrayExpr");
-  return self;
-}
-val_t NEW_AArrayExpr_parser_prod___AArrayExpr___init_aarrayexpr(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AArrayExpr();
-  parser_prod___AArrayExpr___init_aarrayexpr(self, p0, init_table);
-  CHECKNEW_AArrayExpr(self, "parser_prod::AArrayExpr::init_aarrayexpr for AArrayExpr");
-  return self;
-}
-const classtable_elt_t VFT_ASelfExpr[93] = {
-  {(bigint) 4143 /* 0: Identity */},
-  {(bigint) 3 /* 1: ASelfExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ASelfExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ASelfExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: ASelfExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4143 /* 6: ASelfExpr < ASelfExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ASelfExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ASelfExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ASelfExpr___visit_all},
-  {(bigint) parser_prod___ASelfExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ASelfExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASelfExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ASelfExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASelfExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ASelfExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___ASelfExpr___is_self},
-  {(bigint) typing___ASelfExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) syntax_base___ASelfExpr___variable},
-  {(bigint) syntax_base___ASelfExpr___variable__eq},
-  {(bigint) parser_prod___ASelfExpr___empty_init},
-  {(bigint) parser_prod___ASelfExpr___init_aselfexpr},
-  {(bigint) 4 /* 90: ASelfExpr < ASelfExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASelfExpr___n_kwself},
-  {(bigint) parser_prod___ASelfExpr___n_kwself__eq},
+const char *LOCATE_reachable_from_init_method_analysis_impl = "./analysis//reachable_from_init_method_analysis_impl.nit";
+const int SFT_reachable_from_init_method_analysis_impl[12] = {
+  83 /* Id of RFIMABuilder */,
+  3 /* Color of RFIMABuilder */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  1851 /* Id of RFIMAContext */,
+  4 /* Color of RFIMAContext */,
+  2 /* Group of ? */,
+  49 /* Group of ? */,
+  1847 /* Id of RFIMAVisitor */,
+  4 /* Color of RFIMAVisitor */,
+  3 /* Group of ? */,
+  53 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ASelfExpr::_parent */
-/* 2: Attribute ASelfExpr::_first_token */
-/* 3: Attribute ASelfExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ASelfExpr::_is_typed */
-/* 6: Attribute ASelfExpr::_stype */
-/* 7: Attribute ASelfExpr::_if_true_variable_ctx */
-/* 8: Attribute ASelfExpr::_if_false_variable_ctx */
-/* 9: Attribute ASelfExpr::_variable */
-/* 10: Attribute ASelfExpr::_n_kwself */
-val_t NEW_ASelfExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_ASelfExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASelfExpr____n_kwself(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ASelfExpr(val_t self, char *from) {
-}
-val_t NEW_ASelfExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASelfExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ASelfExpr(self, "parser_nodes::PNode::init for ASelfExpr");
-  return self;
-}
-val_t NEW_ASelfExpr_parser_prod___ASelfExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASelfExpr();
-  parser_prod___ASelfExpr___empty_init(self, init_table);
-  CHECKNEW_ASelfExpr(self, "parser_prod::ASelfExpr::empty_init for ASelfExpr");
-  return self;
-}
-val_t NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASelfExpr();
-  parser_prod___ASelfExpr___init_aselfexpr(self, p0, init_table);
-  CHECKNEW_ASelfExpr(self, "parser_prod::ASelfExpr::init_aselfexpr for ASelfExpr");
-  return self;
-}
-const classtable_elt_t VFT_AImplicitSelfExpr[96] = {
-  {(bigint) 4495 /* 0: Identity */},
-  {(bigint) 3 /* 1: AImplicitSelfExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AImplicitSelfExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AImplicitSelfExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AImplicitSelfExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4143 /* 6: AImplicitSelfExpr < ASelfExpr: superclass typecheck marker */},
-  {(bigint) 4495 /* 7: AImplicitSelfExpr < AImplicitSelfExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AImplicitSelfExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AImplicitSelfExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AImplicitSelfExpr___visit_all},
-  {(bigint) parser_prod___AImplicitSelfExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AImplicitSelfExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASelfExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AImplicitSelfExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASelfExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AImplicitSelfExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___AImplicitSelfExpr___is_implicit_self},
-  {(bigint) typing___ASelfExpr___is_self},
-  {(bigint) typing___ASelfExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) syntax_base___ASelfExpr___variable},
-  {(bigint) syntax_base___ASelfExpr___variable__eq},
-  {(bigint) parser_prod___ASelfExpr___empty_init},
-  {(bigint) parser_prod___ASelfExpr___init_aselfexpr},
-  {(bigint) 4 /* 90: AImplicitSelfExpr < ASelfExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASelfExpr___n_kwself},
-  {(bigint) parser_prod___ASelfExpr___n_kwself__eq},
-  {(bigint) parser_prod___AImplicitSelfExpr___empty_init},
-  {(bigint) parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr},
-  {(bigint) 5 /* 95: AImplicitSelfExpr < AImplicitSelfExpr: superclass init_table position */},
+const char *LOCATE_reachable_from_init_method_analysis = "./analysis//reachable_from_init_method_analysis.nit";
+const int SFT_reachable_from_init_method_analysis[8] = {
+  14 /* Group of ? */,
+  88 /* Group of ? */,
+  71 /* Id of ReachableFromInitMethodAnalysis */,
+  3 /* Color of ReachableFromInitMethodAnalysis */,
+  45 /* Group of ? */,
+  2075 /* Id of DefaultReachableFromInitMethodAnalysis */,
+  4 /* Color of DefaultReachableFromInitMethodAnalysis */,
+  49 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AImplicitSelfExpr::_parent */
-/* 2: Attribute AImplicitSelfExpr::_first_token */
-/* 3: Attribute AImplicitSelfExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AImplicitSelfExpr::_is_typed */
-/* 6: Attribute AImplicitSelfExpr::_stype */
-/* 7: Attribute AImplicitSelfExpr::_if_true_variable_ctx */
-/* 8: Attribute AImplicitSelfExpr::_if_false_variable_ctx */
-/* 9: Attribute AImplicitSelfExpr::_variable */
-/* 10: Attribute AImplicitSelfExpr::_n_kwself */
-val_t NEW_AImplicitSelfExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AImplicitSelfExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASelfExpr____n_kwself(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AImplicitSelfExpr(val_t self, char *from) {
-}
-val_t NEW_AImplicitSelfExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AImplicitSelfExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AImplicitSelfExpr(self, "parser_nodes::PNode::init for AImplicitSelfExpr");
-  return self;
-}
-val_t NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AImplicitSelfExpr();
-  parser_prod___ASelfExpr___empty_init(self, init_table);
-  CHECKNEW_AImplicitSelfExpr(self, "parser_prod::ASelfExpr::empty_init for AImplicitSelfExpr");
-  return self;
-}
-val_t NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___init_aselfexpr(val_t p0) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AImplicitSelfExpr();
-  parser_prod___ASelfExpr___init_aselfexpr(self, p0, init_table);
-  CHECKNEW_AImplicitSelfExpr(self, "parser_prod::ASelfExpr::init_aselfexpr for AImplicitSelfExpr");
-  return self;
-}
-val_t NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AImplicitSelfExpr();
-  parser_prod___AImplicitSelfExpr___empty_init(self, init_table);
-  CHECKNEW_AImplicitSelfExpr(self, "parser_prod::AImplicitSelfExpr::empty_init for AImplicitSelfExpr");
-  return self;
-}
-val_t NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AImplicitSelfExpr();
-  parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(self, init_table);
-  CHECKNEW_AImplicitSelfExpr(self, "parser_prod::AImplicitSelfExpr::init_aimplicitselfexpr for AImplicitSelfExpr");
-  return self;
-}
-const classtable_elt_t VFT_ATrueExpr[91] = {
-  {(bigint) 4447 /* 0: Identity */},
-  {(bigint) 3 /* 1: ATrueExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ATrueExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ATrueExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: ATrueExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4339 /* 6: ATrueExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 4447 /* 7: ATrueExpr < ATrueExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ATrueExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ATrueExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ATrueExpr___visit_all},
-  {(bigint) parser_prod___ATrueExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ATrueExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ABoolExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ATrueExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 72: ATrueExpr < ABoolExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ATrueExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ATrueExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___ATrueExpr___empty_init},
-  {(bigint) parser_prod___ATrueExpr___init_atrueexpr},
-  {(bigint) 5 /* 88: ATrueExpr < ATrueExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ATrueExpr___n_kwtrue},
-  {(bigint) parser_prod___ATrueExpr___n_kwtrue__eq},
+const char *LOCATE_dead_method_removal = "./analysis//dead_method_removal.nit";
+const int SFT_dead_method_removal[3] = {
+  9 /* Group of ? */,
+  75 /* Group of ? */,
+  65 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ATrueExpr::_parent */
-/* 2: Attribute ATrueExpr::_first_token */
-/* 3: Attribute ATrueExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ATrueExpr::_is_typed */
-/* 6: Attribute ATrueExpr::_stype */
-/* 7: Attribute ATrueExpr::_if_true_variable_ctx */
-/* 8: Attribute ATrueExpr::_if_false_variable_ctx */
-/* 9: Attribute ATrueExpr::_n_kwtrue */
-val_t NEW_ATrueExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_ATrueExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ATrueExpr____n_kwtrue(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ATrueExpr(val_t self, char *from) {
-}
-val_t NEW_ATrueExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ATrueExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ATrueExpr(self, "parser_nodes::PNode::init for ATrueExpr");
-  return self;
-}
-val_t NEW_ATrueExpr_parser_prod___ATrueExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ATrueExpr();
-  parser_prod___ATrueExpr___empty_init(self, init_table);
-  CHECKNEW_ATrueExpr(self, "parser_prod::ATrueExpr::empty_init for ATrueExpr");
-  return self;
-}
-val_t NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr(val_t p0) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ATrueExpr();
-  parser_prod___ATrueExpr___init_atrueexpr(self, p0, init_table);
-  CHECKNEW_ATrueExpr(self, "parser_prod::ATrueExpr::init_atrueexpr for ATrueExpr");
-  return self;
-}
-const classtable_elt_t VFT_AFalseExpr[91] = {
-  {(bigint) 4503 /* 0: Identity */},
-  {(bigint) 3 /* 1: AFalseExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AFalseExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AFalseExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AFalseExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4339 /* 6: AFalseExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 4503 /* 7: AFalseExpr < AFalseExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AFalseExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AFalseExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AFalseExpr___visit_all},
-  {(bigint) parser_prod___AFalseExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AFalseExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ABoolExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AFalseExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 72: AFalseExpr < ABoolExpr: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AFalseExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AFalseExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AFalseExpr___empty_init},
-  {(bigint) parser_prod___AFalseExpr___init_afalseexpr},
-  {(bigint) 5 /* 88: AFalseExpr < AFalseExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AFalseExpr___n_kwfalse},
-  {(bigint) parser_prod___AFalseExpr___n_kwfalse__eq},
+const char *LOCATE_inline_get_and_set = "./analysis//inline_get_and_set.nit";
+const int SFT_inline_get_and_set[6] = {
+  12 /* Group of ? */,
+  83 /* Group of ? */,
+  1999 /* Id of InlineGetSetVisitor */,
+  4 /* Color of InlineGetSetVisitor */,
+  3 /* Group of ? */,
+  53 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AFalseExpr::_parent */
-/* 2: Attribute AFalseExpr::_first_token */
-/* 3: Attribute AFalseExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AFalseExpr::_is_typed */
-/* 6: Attribute AFalseExpr::_stype */
-/* 7: Attribute AFalseExpr::_if_true_variable_ctx */
-/* 8: Attribute AFalseExpr::_if_false_variable_ctx */
-/* 9: Attribute AFalseExpr::_n_kwfalse */
-val_t NEW_AFalseExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_AFalseExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AFalseExpr____n_kwfalse(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AFalseExpr(val_t self, char *from) {
-}
-val_t NEW_AFalseExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AFalseExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AFalseExpr(self, "parser_nodes::PNode::init for AFalseExpr");
-  return self;
-}
-val_t NEW_AFalseExpr_parser_prod___AFalseExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AFalseExpr();
-  parser_prod___AFalseExpr___empty_init(self, init_table);
-  CHECKNEW_AFalseExpr(self, "parser_prod::AFalseExpr::empty_init for AFalseExpr");
-  return self;
-}
-val_t NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr(val_t p0) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AFalseExpr();
-  parser_prod___AFalseExpr___init_afalseexpr(self, p0, init_table);
-  CHECKNEW_AFalseExpr(self, "parser_prod::AFalseExpr::init_afalseexpr for AFalseExpr");
-  return self;
-}
-const classtable_elt_t VFT_ANullExpr[91] = {
-  {(bigint) 4203 /* 0: Identity */},
-  {(bigint) 3 /* 1: ANullExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ANullExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ANullExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: ANullExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4203 /* 6: ANullExpr < ANullExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ANullExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ANullExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ANullExpr___visit_all},
-  {(bigint) parser_prod___ANullExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ANullExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ANullExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ANullExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ANullExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ANullExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___ANullExpr___empty_init},
-  {(bigint) parser_prod___ANullExpr___init_anullexpr},
-  {(bigint) 4 /* 88: ANullExpr < ANullExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ANullExpr___n_kwnull},
-  {(bigint) parser_prod___ANullExpr___n_kwnull__eq},
+const char *LOCATE_remove_out_of_init_get_test = "./analysis//remove_out_of_init_get_test.nit";
+const int SFT_remove_out_of_init_get_test[10] = {
+  13 /* Group of ? */,
+  85 /* Group of ? */,
+  1991 /* Id of IssetCounter */,
+  4 /* Color of IssetCounter */,
+  3 /* Group of ? */,
+  53 /* Group of ? */,
+  2047 /* Id of GetterTestRemover */,
+  4 /* Color of GetterTestRemover */,
+  3 /* Group of ? */,
+  53 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute ANullExpr::_parent */
-/* 2: Attribute ANullExpr::_first_token */
-/* 3: Attribute ANullExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ANullExpr::_is_typed */
-/* 6: Attribute ANullExpr::_stype */
-/* 7: Attribute ANullExpr::_if_true_variable_ctx */
-/* 8: Attribute ANullExpr::_if_false_variable_ctx */
-/* 9: Attribute ANullExpr::_n_kwnull */
-val_t NEW_ANullExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_ANullExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ANullExpr____n_kwnull(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ANullExpr(val_t self, char *from) {
-}
-val_t NEW_ANullExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ANullExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ANullExpr(self, "parser_nodes::PNode::init for ANullExpr");
-  return self;
-}
-val_t NEW_ANullExpr_parser_prod___ANullExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ANullExpr();
-  parser_prod___ANullExpr___empty_init(self, init_table);
-  CHECKNEW_ANullExpr(self, "parser_prod::ANullExpr::empty_init for ANullExpr");
-  return self;
-}
-val_t NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ANullExpr();
-  parser_prod___ANullExpr___init_anullexpr(self, p0, init_table);
-  CHECKNEW_ANullExpr(self, "parser_prod::ANullExpr::init_anullexpr for ANullExpr");
-  return self;
-}
-const classtable_elt_t VFT_AIntExpr[91] = {
-  {(bigint) 4251 /* 0: Identity */},
-  {(bigint) 3 /* 1: AIntExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AIntExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AIntExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AIntExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4251 /* 6: AIntExpr < AIntExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AIntExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AIntExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AIntExpr___visit_all},
-  {(bigint) parser_prod___AIntExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AIntExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AIntExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AIntExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AIntExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AIntExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AIntExpr___empty_init},
-  {(bigint) parser_prod___AIntExpr___init_aintexpr},
-  {(bigint) 4 /* 88: AIntExpr < AIntExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AIntExpr___n_number},
-  {(bigint) parser_prod___AIntExpr___n_number__eq},
+const char *LOCATE_compiling_global = "./compiling//compiling_global.nit";
+const int SFT_compiling_global[8] = {
+  92 /* Group of ? */,
+  75 /* Group of ? */,
+  45 /* Group of ? */,
+  48 /* Group of ? */,
+  53 /* Group of ? */,
+  55 /* Group of ? */,
+  111 /* Group of ? */,
+  73 /* Group of ? */,
 };
-/* 0: Pointer to the classtable */
-/* 1: Attribute AIntExpr::_parent */
-/* 2: Attribute AIntExpr::_first_token */
-/* 3: Attribute AIntExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AIntExpr::_is_typed */
-/* 6: Attribute AIntExpr::_stype */
-/* 7: Attribute AIntExpr::_if_true_variable_ctx */
-/* 8: Attribute AIntExpr::_if_false_variable_ctx */
-/* 9: Attribute AIntExpr::_n_number */
-val_t NEW_AIntExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_AIntExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AIntExpr____n_number(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AIntExpr(val_t self, char *from) {
-}
-val_t NEW_AIntExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIntExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AIntExpr(self, "parser_nodes::PNode::init for AIntExpr");
-  return self;
-}
-val_t NEW_AIntExpr_parser_prod___AIntExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIntExpr();
-  parser_prod___AIntExpr___empty_init(self, init_table);
-  CHECKNEW_AIntExpr(self, "parser_prod::AIntExpr::empty_init for AIntExpr");
-  return self;
-}
-val_t NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AIntExpr();
-  parser_prod___AIntExpr___init_aintexpr(self, p0, init_table);
-  CHECKNEW_AIntExpr(self, "parser_prod::AIntExpr::init_aintexpr for AIntExpr");
-  return self;
-}
-const classtable_elt_t VFT_AFloatExpr[91] = {
-  {(bigint) 4283 /* 0: Identity */},
-  {(bigint) 3 /* 1: AFloatExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AFloatExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AFloatExpr < Prod: superclass typecheck marker */},
+const char *LOCATE_table_computation = "./compiling//table_computation.nit";
+const int SFT_table_computation[76] = {
+  247 /* Id of ColorContext */,
+  3 /* Color of ColorContext */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  299 /* Id of TableInformation */,
+  4 /* Color of TableInformation */,
+  3 /* Group of ? */,
+  50 /* Group of ? */,
+  2099 /* Id of CompiledClass */,
+  4 /* Color of CompiledClass */,
+  3 /* Group of ? */,
+  50 /* Group of ? */,
+  25 /* Group of ? */,
+  113 /* Group of ? */,
+  15 /* Group of ? */,
+  94 /* Group of ? */,
+  18 /* Group of ? */,
+  78 /* Group of ? */,
+  271 /* Id of AbsTableElt */,
+  3 /* Color of AbsTableElt */,
+  46 /* Group of ? */,
+  303 /* Id of TableElt */,
+  4 /* Color of TableElt */,
+  49 /* Group of ? */,
+  1899 /* Id of ModuleTableElt */,
+  5 /* Color of ModuleTableElt */,
+  54 /* Group of ? */,
+  2583 /* Id of ModuleTableEltGroup */,
+  6 /* Color of ModuleTableEltGroup */,
+  2 /* Group of ? */,
+  55 /* Group of ? */,
+  2155 /* Id of TableEltProp */,
+  5 /* Color of TableEltProp */,
+  2 /* Group of ? */,
+  53 /* Group of ? */,
+  2887 /* Id of TableEltMeth */,
+  6 /* Color of TableEltMeth */,
+  56 /* Group of ? */,
+  2883 /* Id of TableEltSuper */,
+  6 /* Color of TableEltSuper */,
+  56 /* Group of ? */,
+  2899 /* Id of TableEltAttr */,
+  6 /* Color of TableEltAttr */,
+  56 /* Group of ? */,
+  2135 /* Id of AbsTableEltClass */,
+  6 /* Color of AbsTableEltClass */,
+  2 /* Group of ? */,
+  56 /* Group of ? */,
+  2179 /* Id of TableEltClass */,
+  7 /* Color of TableEltClass */,
+  59 /* Group of ? */,
+  2175 /* Id of TableEltClassId */,
+  4 /* Color of TableEltClassId */,
+  48 /* Group of ? */,
+  2891 /* Id of TableEltClassInitTable */,
+  8 /* Color of TableEltClassInitTable */,
+  60 /* Group of ? */,
+  2895 /* Id of TableEltClassColor */,
+  8 /* Color of TableEltClassColor */,
+  60 /* Group of ? */,
+  2163 /* Id of TableEltComposite */,
+  5 /* Color of TableEltComposite */,
+  2 /* Group of ? */,
+  53 /* Group of ? */,
+  2167 /* Id of TableEltClassSelfId */,
+  5 /* Color of TableEltClassSelfId */,
+  53 /* Group of ? */,
+  2171 /* Id of TableEltClassObjectSize */,
+  5 /* Color of TableEltClassObjectSize */,
+  53 /* Group of ? */,
+  2159 /* Id of TableEltObjectId */,
+  5 /* Color of TableEltObjectId */,
+  53 /* Group of ? */,
+  2151 /* Id of TableEltVftPointer */,
+  5 /* Color of TableEltVftPointer */,
+  53 /* Group of ? */,
+};
+const char *LOCATE_compiling_icode = "./compiling//compiling_icode.nit";
+const int SFT_compiling_icode[9] = {
+  223 /* Id of I2CCompilerVisitor */,
+  3 /* Color of I2CCompilerVisitor */,
+  2 /* Group of ? */,
+  45 /* Group of ? */,
+  45 /* Group of ? */,
+  45 /* Group of ? */,
+  67 /* Group of ? */,
+  67 /* Group of ? */,
+  66 /* Group of ? */,
+};
+const char *LOCATE_nitc = "./nitc.nit";
+const int SFT_nitc[4] = {
+  2919 /* Id of NitCompiler */,
+  6 /* Color of NitCompiler */,
+  46 /* Group of ? */,
+  125 /* Group of ? */,
+};
+const classtable_elt_t VFT_NitCompiler[147] = {
+  {(bigint) 2919 /* 0: Identity */},
+  {(bigint) 65 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: NitCompiler < Object: superclass typecheck marker */},
+  {(bigint) 163 /* 3: NitCompiler < MMContext: superclass typecheck marker */},
+  {(bigint) 291 /* 4: NitCompiler < ToolContext: superclass typecheck marker */},
+  {(bigint) 2787 /* 5: NitCompiler < AbstractCompiler: superclass typecheck marker */},
+  {(bigint) 2919 /* 6: NitCompiler < NitCompiler: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AFloatExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4283 /* 6: AFloatExpr < AFloatExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41598,14 +14153,9 @@ const classtable_elt_t VFT_AFloatExpr[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AFloatExpr < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: NitCompiler < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -41613,7 +14163,6 @@ const classtable_elt_t VFT_AFloatExpr[91] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -41621,375 +14170,1495 @@ const classtable_elt_t VFT_AFloatExpr[91] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AFloatExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AFloatExpr___visit_all},
-  {(bigint) parser_prod___AFloatExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AFloatExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AFloatExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AFloatExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AFloatExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AFloatExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AFloatExpr___empty_init},
-  {(bigint) parser_prod___AFloatExpr___init_afloatexpr},
-  {(bigint) 4 /* 88: AFloatExpr < AFloatExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AFloatExpr___n_float},
-  {(bigint) parser_prod___AFloatExpr___n_float__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AFloatExpr::_parent */
-/* 2: Attribute AFloatExpr::_first_token */
-/* 3: Attribute AFloatExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AFloatExpr::_is_typed */
-/* 6: Attribute AFloatExpr::_stype */
-/* 7: Attribute AFloatExpr::_if_true_variable_ctx */
-/* 8: Attribute AFloatExpr::_if_false_variable_ctx */
-/* 9: Attribute AFloatExpr::_n_float */
-val_t NEW_AFloatExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_AFloatExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AFloatExpr____n_float(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AFloatExpr(val_t self, char *from) {
-}
-val_t NEW_AFloatExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AFloatExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AFloatExpr(self, "parser_nodes::PNode::init for AFloatExpr");
-  return self;
-}
-val_t NEW_AFloatExpr_parser_prod___AFloatExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AFloatExpr();
-  parser_prod___AFloatExpr___empty_init(self, init_table);
-  CHECKNEW_AFloatExpr(self, "parser_prod::AFloatExpr::empty_init for AFloatExpr");
-  return self;
-}
-val_t NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AFloatExpr();
-  parser_prod___AFloatExpr___init_afloatexpr(self, p0, init_table);
-  CHECKNEW_AFloatExpr(self, "parser_prod::AFloatExpr::init_afloatexpr for AFloatExpr");
-  return self;
-}
-const classtable_elt_t VFT_ACharExpr[91] = {
-  {(bigint) 4323 /* 0: Identity */},
-  {(bigint) 3 /* 1: ACharExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ACharExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ACharExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: ACharExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4323 /* 6: ACharExpr < ACharExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
   {(bigint) string___Object___to_s},
   {(bigint) string___Object___inspect},
   {(bigint) string___Object___inspect_head},
   {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ACharExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ACharExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ACharExpr___visit_all},
-  {(bigint) parser_prod___ACharExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ACharExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ACharExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ACharExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ACharExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ACharExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___ACharExpr___empty_init},
-  {(bigint) parser_prod___ACharExpr___init_acharexpr},
-  {(bigint) 4 /* 88: ACharExpr < ACharExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ACharExpr___n_char},
-  {(bigint) parser_prod___ACharExpr___n_char__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: NitCompiler < MMContext: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMContext___init},
+  {(bigint) abstractmetamodel___MMContext___module_hierarchy},
+  {(bigint) abstractmetamodel___MMContext___class_hierarchy},
+  {(bigint) abstractmetamodel___MMContext___modules},
+  {(bigint) abstractmetamodel___MMContext___add_module},
+  {(bigint) abstractmetamodel___MMContext___add_global_class},
+  {(bigint) abstractmetamodel___MMContext___add_local_class},
+  {(bigint) analysis___ToolContext___global_callgraph},
+  {(bigint) analysis___ToolContext___global_callgraph__eq},
+  {(bigint) analysis___ToolContext___no_dead_method_removal},
+  {(bigint) analysis___ToolContext___no_dead_method_removal__eq},
+  {(bigint) analysis___ToolContext___no_inline_get_set},
+  {(bigint) analysis___ToolContext___no_inline_get_set__eq},
+  {(bigint) analysis___ToolContext___no_callgraph_from_init},
+  {(bigint) analysis___ToolContext___no_callgraph_from_init__eq},
+  {(bigint) analysis___ToolContext___no_out_of_init_get_test_removal},
+  {(bigint) analysis___ToolContext___no_out_of_init_get_test_removal__eq},
+  {(bigint) syntax___ToolContext___keep_ast},
+  {(bigint) syntax___ToolContext___keep_ast__eq},
+  {(bigint) 1 /* 65: NitCompiler < ToolContext: superclass init_table position */},
+  {(bigint) mmloader___ToolContext___error_count},
+  {(bigint) mmloader___ToolContext___warning_count},
+  {(bigint) mmloader___ToolContext___log_directory},
+  {(bigint) mmloader___ToolContext___check_errors},
+  {(bigint) mmloader___ToolContext___error},
+  {(bigint) mmloader___ToolContext___fatal_error},
+  {(bigint) mmloader___ToolContext___warning},
+  {(bigint) mmloader___ToolContext___info},
+  {(bigint) mmloader___ToolContext___paths},
+  {(bigint) mmloader___ToolContext___option_context},
+  {(bigint) mmloader___ToolContext___opt_warn},
+  {(bigint) mmloader___ToolContext___opt_path},
+  {(bigint) mmloader___ToolContext___opt_log},
+  {(bigint) mmloader___ToolContext___opt_log_dir},
+  {(bigint) mmloader___ToolContext___opt_only_metamodel},
+  {(bigint) mmloader___ToolContext___opt_only_parse},
+  {(bigint) mmloader___ToolContext___opt_help},
+  {(bigint) mmloader___ToolContext___opt_version},
+  {(bigint) mmloader___ToolContext___opt_verbose},
+  {(bigint) mmloader___ToolContext___verbose_level},
+  {(bigint) mmloader___ToolContext___init},
+  {(bigint) nitc___NitCompiler___process_options},
+  {(bigint) mmloader___ToolContext___try_to_load},
+  {(bigint) mmloader___ToolContext___get_module_from_filename},
+  {(bigint) mmloader___ToolContext___get_module},
+  {(bigint) mmloader___ToolContext___directory_for},
+  {(bigint) mmloader___ToolContext___register_loader},
+  {(bigint) program___ToolContext___global},
+  {(bigint) program___ToolContext___global__eq},
+  {(bigint) program___ToolContext___use_SFT_optimization__eq},
+  {(bigint) program___ToolContext___use_SFT_optimization},
+  {(bigint) compiling_base___ToolContext___compdir},
+  {(bigint) compiling_base___ToolContext___compdir__eq},
+  {(bigint) compiling_base___ToolContext___clibdir},
+  {(bigint) compiling_base___ToolContext___clibdir__eq},
+  {(bigint) compiling_base___ToolContext___bindir},
+  {(bigint) compiling_base___ToolContext___bindir__eq},
+  {(bigint) compiling_base___ToolContext___output_file},
+  {(bigint) compiling_base___ToolContext___output_file__eq},
+  {(bigint) compiling_base___ToolContext___boost},
+  {(bigint) compiling_base___ToolContext___boost__eq},
+  {(bigint) compiling_base___ToolContext___no_cc},
+  {(bigint) compiling_base___ToolContext___no_cc__eq},
+  {(bigint) compiling_base___ToolContext___cc_link},
+  {(bigint) compiling_base___ToolContext___cc_link__eq},
+  {(bigint) compiling_base___ToolContext___cc_libs},
+  {(bigint) compiling_base___ToolContext___cc_libs__eq},
+  {(bigint) compiling_base___ToolContext___cc_lib_paths},
+  {(bigint) compiling_base___ToolContext___cc_lib_paths__eq},
+  {(bigint) compiling_base___ToolContext___cc_include_paths},
+  {(bigint) compiling_base___ToolContext___cc_include_paths__eq},
+  {(bigint) compiling_base___ToolContext___ext_prefix},
+  {(bigint) compiling_base___ToolContext___ext_prefix__eq},
+  {(bigint) 0 /* 119: NitCompiler < AbstractCompiler: superclass init_table position */},
+  {(bigint) abstracttool___AbstractCompiler___init},
+  {(bigint) abstracttool___AbstractCompiler___tool_name},
+  {(bigint) abstracttool___AbstractCompiler___exec_cmd_line},
+  {(bigint) nitc___NitCompiler___perform_work},
+  {(bigint) abstracttool___AbstractCompiler___dump_context_info},
+  {(bigint) 4 /* 125: NitCompiler < NitCompiler: superclass init_table position */},
+  {(bigint) nitc___NitCompiler___opt_output},
+  {(bigint) nitc___NitCompiler___opt_boost},
+  {(bigint) nitc___NitCompiler___opt_no_cc},
+  {(bigint) nitc___NitCompiler___opt_cc_no_link},
+  {(bigint) nitc___NitCompiler___opt_cc_lib_paths},
+  {(bigint) nitc___NitCompiler___opt_cc_libs},
+  {(bigint) nitc___NitCompiler___opt_cc_include_paths},
+  {(bigint) nitc___NitCompiler___opt_global},
+  {(bigint) nitc___NitCompiler___opt_global_no_STF_opt},
+  {(bigint) nitc___NitCompiler___opt_global_no_DMR_opt},
+  {(bigint) nitc___NitCompiler___opt_global_no_inline_get_set},
+  {(bigint) nitc___NitCompiler___opt_global_no_out_of_init_get_test_opt},
+  {(bigint) nitc___NitCompiler___opt_global_no_RFIMA},
+  {(bigint) nitc___NitCompiler___opt_global_callgraph},
+  {(bigint) nitc___NitCompiler___opt_clibdir},
+  {(bigint) nitc___NitCompiler___opt_bindir},
+  {(bigint) nitc___NitCompiler___opt_compdir},
+  {(bigint) nitc___NitCompiler___opt_extension_prefix},
+  {(bigint) nitc___NitCompiler___opt_output_format},
+  {(bigint) nitc___NitCompiler___init},
+  {(bigint) mmloader___ToolContext___process_options},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute ACharExpr::_parent */
-/* 2: Attribute ACharExpr::_first_token */
-/* 3: Attribute ACharExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ACharExpr::_is_typed */
-/* 6: Attribute ACharExpr::_stype */
-/* 7: Attribute ACharExpr::_if_true_variable_ctx */
-/* 8: Attribute ACharExpr::_if_false_variable_ctx */
-/* 9: Attribute ACharExpr::_n_char */
-val_t NEW_ACharExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_ACharExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ACharExpr____n_char(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ACharExpr(val_t self, char *from) {
-}
-val_t NEW_ACharExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ACharExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ACharExpr(self, "parser_nodes::PNode::init for ACharExpr");
-  return self;
-}
-val_t NEW_ACharExpr_parser_prod___ACharExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ACharExpr();
-  parser_prod___ACharExpr___empty_init(self, init_table);
-  CHECKNEW_ACharExpr(self, "parser_prod::ACharExpr::empty_init for ACharExpr");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute NitCompiler::_module_hierarchy */
+/* 3: Attribute NitCompiler::_class_hierarchy */
+/* 4: Attribute NitCompiler::_global_classes */
+/* 5: Attribute NitCompiler::_modules */
+/* 6: Attribute NitCompiler::_global_callgraph */
+/* 7: Attribute NitCompiler::_no_dead_method_removal */
+/* 8: Attribute NitCompiler::_no_inline_get_set */
+/* 9: Attribute NitCompiler::_no_callgraph_from_init */
+/* 10: Attribute NitCompiler::_no_out_of_init_get_test_removal */
+/* 11: Attribute NitCompiler::_keep_ast */
+/* 12: Attribute NitCompiler::_error_count */
+/* 13: Attribute NitCompiler::_warning_count */
+/* 14: Attribute NitCompiler::_log_directory */
+/* 15: Attribute NitCompiler::_messages */
+/* 16: Attribute NitCompiler::_message_sorter */
+/* 17: Attribute NitCompiler::_paths */
+/* 18: Attribute NitCompiler::_loaders */
+/* 19: Attribute NitCompiler::_option_context */
+/* 20: Attribute NitCompiler::_opt_warn */
+/* 21: Attribute NitCompiler::_opt_path */
+/* 22: Attribute NitCompiler::_opt_log */
+/* 23: Attribute NitCompiler::_opt_log_dir */
+/* 24: Attribute NitCompiler::_opt_only_metamodel */
+/* 25: Attribute NitCompiler::_opt_only_parse */
+/* 26: Attribute NitCompiler::_opt_help */
+/* 27: Attribute NitCompiler::_opt_version */
+/* 28: Attribute NitCompiler::_opt_verbose */
+/* 29: Attribute NitCompiler::_verbose_level */
+/* 30: Attribute NitCompiler::_processing_modules */
+/* 31: Attribute NitCompiler::_path_dirs */
+/* 32: Attribute NitCompiler::_global */
+/* 33: Attribute NitCompiler::_use_SFT_optimization */
+/* 34: Attribute NitCompiler::_compdir */
+/* 35: Attribute NitCompiler::_clibdir */
+/* 36: Attribute NitCompiler::_bindir */
+/* 37: Attribute NitCompiler::_output_file */
+/* 38: Attribute NitCompiler::_boost */
+/* 39: Attribute NitCompiler::_no_cc */
+/* 40: Attribute NitCompiler::_cc_link */
+/* 41: Attribute NitCompiler::_cc_libs */
+/* 42: Attribute NitCompiler::_cc_lib_paths */
+/* 43: Attribute NitCompiler::_cc_include_paths */
+/* 44: Attribute NitCompiler::_ext_prefix */
+/* 45: Attribute NitCompiler::_tool_name */
+/* 46: Attribute NitCompiler::_opt_output */
+/* 47: Attribute NitCompiler::_opt_boost */
+/* 48: Attribute NitCompiler::_opt_no_cc */
+/* 49: Attribute NitCompiler::_opt_cc_no_link */
+/* 50: Attribute NitCompiler::_opt_cc_lib_paths */
+/* 51: Attribute NitCompiler::_opt_cc_libs */
+/* 52: Attribute NitCompiler::_opt_cc_include_paths */
+/* 53: Attribute NitCompiler::_opt_global */
+/* 54: Attribute NitCompiler::_opt_global_no_STF_opt */
+/* 55: Attribute NitCompiler::_opt_global_no_DMR_opt */
+/* 56: Attribute NitCompiler::_opt_global_no_inline_get_set */
+/* 57: Attribute NitCompiler::_opt_global_no_out_of_init_get_test_opt */
+/* 58: Attribute NitCompiler::_opt_global_no_RFIMA */
+/* 59: Attribute NitCompiler::_opt_global_callgraph */
+/* 60: Attribute NitCompiler::_opt_clibdir */
+/* 61: Attribute NitCompiler::_opt_bindir */
+/* 62: Attribute NitCompiler::_opt_compdir */
+/* 63: Attribute NitCompiler::_opt_extension_prefix */
+/* 64: Attribute NitCompiler::_opt_output_format */
+void INIT_ATTRIBUTES__NitCompiler(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+  static val_t once_value_2; /* Once value */
+  static val_t once_value_3; /* Once value */
+  static val_t once_value_4; /* Once value */
+  static val_t once_value_5; /* Once value */
+  static val_t once_value_6; /* Once value */
+  static val_t once_value_7; /* Once value */
+  static val_t once_value_8; /* Once value */
+  static val_t once_value_9; /* Once value */
+  static val_t once_value_10; /* Once value */
+  static val_t once_value_11; /* Once value */
+  static val_t once_value_12; /* Once value */
+  static val_t once_value_13; /* Once value */
+  static val_t once_value_14; /* Once value */
+  static val_t once_value_15; /* Once value */
+  static val_t once_value_16; /* Once value */
+  static val_t once_value_17; /* Once value */
+  static val_t once_value_18; /* Once value */
+  static val_t once_value_19; /* Once value */
+  static val_t once_value_20; /* Once value */
+  static val_t once_value_21; /* Once value */
+  static val_t once_value_22; /* Once value */
+  static val_t once_value_23; /* Once value */
+  static val_t once_value_24; /* Once value */
+  static val_t once_value_25; /* Once value */
+  static val_t once_value_26; /* Once value */
+  static val_t once_value_27; /* Once value */
+  static val_t once_value_28; /* Once value */
+  static val_t once_value_29; /* Once value */
+  static val_t once_value_30; /* Once value */
+  static val_t once_value_31; /* Once value */
+  static val_t once_value_32; /* Once value */
+  static val_t once_value_33; /* Once value */
+  static val_t once_value_34; /* Once value */
+  static val_t once_value_35; /* Once value */
+  static val_t once_value_36; /* Once value */
+  static val_t once_value_37; /* Once value */
+  static val_t once_value_38; /* Once value */
+  static val_t once_value_39; /* Once value */
+  static val_t once_value_40; /* Once value */
+  static val_t once_value_41; /* Once value */
+  static val_t once_value_42; /* Once value */
+  static val_t once_value_43; /* Once value */
+  static val_t once_value_44; /* Once value */
+  static val_t once_value_45; /* Once value */
+  static val_t once_value_46; /* Once value */
+  static val_t once_value_47; /* Once value */
+  static val_t once_value_48; /* Once value */
+  static val_t once_value_49; /* Once value */
+  static val_t once_value_50; /* Once value */
+  static val_t once_value_51; /* Once value */
+  static val_t once_value_52; /* Once value */
+  static val_t once_value_53; /* Once value */
+  static val_t once_value_54; /* Once value */
+  static val_t once_value_55; /* Once value */
+  static val_t once_value_56; /* Once value */
+  static val_t once_value_57; /* Once value */
+  static val_t once_value_58; /* Once value */
+  static val_t once_value_59; /* Once value */
+  static val_t once_value_60; /* Once value */
+  static val_t once_value_61; /* Once value */
+  static val_t once_value_62; /* Once value */
+  static val_t once_value_63; /* Once value */
+  static val_t once_value_64; /* Once value */
+  static val_t once_value_65; /* Once value */
+  static val_t once_value_66; /* Once value */
+  static val_t once_value_67; /* Once value */
+  static val_t once_value_68; /* Once value */
+  static val_t once_value_69; /* Once value */
+  static val_t once_value_70; /* Once value */
+  static val_t once_value_71; /* Once value */
+  static val_t once_value_72; /* Once value */
+  static val_t once_value_73; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__NitCompiler;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./nitc.nit:29 */
+  if (!once_value_1) {
+    fra.me.REG[1] = BOX_NativeString("Output file");
+    REGB0 = TAG_Int(11);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_1 = fra.me.REG[1];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_2) {
+    fra.me.REG[3] = BOX_NativeString("-o");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_2 = fra.me.REG[3];
+    register_static_object(&once_value_2);
+  } else fra.me.REG[3] = once_value_2;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_3) {
+    fra.me.REG[3] = BOX_NativeString("--output");
+    REGB0 = TAG_Int(8);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_3 = fra.me.REG[3];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[3] = once_value_3;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionString_opts___OptionString___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_nitc___NitCompiler____opt_output(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./nitc.nit:30 */
+  if (!once_value_4) {
+    fra.me.REG[2] = BOX_NativeString("Optimize compilation");
+    REGB0 = TAG_Int(20);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_4 = fra.me.REG[2];
+    register_static_object(&once_value_4);
+  } else fra.me.REG[2] = once_value_4;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_5) {
+    fra.me.REG[3] = BOX_NativeString("-O");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_5 = fra.me.REG[3];
+    register_static_object(&once_value_5);
+  } else fra.me.REG[3] = once_value_5;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  if (!once_value_6) {
+    fra.me.REG[3] = BOX_NativeString("--boost");
+    REGB0 = TAG_Int(7);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_6 = fra.me.REG[3];
+    register_static_object(&once_value_6);
+  } else fra.me.REG[3] = once_value_6;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_nitc___NitCompiler____opt_boost(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./nitc.nit:31 */
+  if (!once_value_7) {
+    fra.me.REG[1] = BOX_NativeString("Do not invoke C compiler");
+    REGB0 = TAG_Int(24);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_7 = fra.me.REG[1];
+    register_static_object(&once_value_7);
+  } else fra.me.REG[1] = once_value_7;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_8) {
+    fra.me.REG[3] = BOX_NativeString("--no-cc");
+    REGB0 = TAG_Int(7);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_8 = fra.me.REG[3];
+    register_static_object(&once_value_8);
+  } else fra.me.REG[3] = once_value_8;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_nitc___NitCompiler____opt_no_cc(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./nitc.nit:32 */
+  if (!once_value_9) {
+    fra.me.REG[2] = BOX_NativeString("Do not invoke C linker");
+    REGB0 = TAG_Int(22);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_9 = fra.me.REG[2];
+    register_static_object(&once_value_9);
+  } else fra.me.REG[2] = once_value_9;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_10) {
+    fra.me.REG[3] = BOX_NativeString("--cc-no-link");
+    REGB0 = TAG_Int(12);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_10 = fra.me.REG[3];
+    register_static_object(&once_value_10);
+  } else fra.me.REG[3] = once_value_10;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_nitc___NitCompiler____opt_cc_no_link(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./nitc.nit:33 */
+  if (!once_value_11) {
+    fra.me.REG[1] = BOX_NativeString("Path to libraries for C compiler");
+    REGB0 = TAG_Int(32);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_11 = fra.me.REG[1];
+    register_static_object(&once_value_11);
+  } else fra.me.REG[1] = once_value_11;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_12) {
+    fra.me.REG[3] = BOX_NativeString("--cc-lib-path");
+    REGB0 = TAG_Int(13);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_12 = fra.me.REG[3];
+    register_static_object(&once_value_12);
+  } else fra.me.REG[3] = once_value_12;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionArray_opts___OptionArray___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_nitc___NitCompiler____opt_cc_lib_paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./nitc.nit:34 */
+  if (!once_value_13) {
+    fra.me.REG[2] = BOX_NativeString("Name of library to use for C compiler");
+    REGB0 = TAG_Int(37);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_13 = fra.me.REG[2];
+    register_static_object(&once_value_13);
+  } else fra.me.REG[2] = once_value_13;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_14) {
+    fra.me.REG[3] = BOX_NativeString("--cc-lib-name");
+    REGB0 = TAG_Int(13);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_14 = fra.me.REG[3];
+    register_static_object(&once_value_14);
+  } else fra.me.REG[3] = once_value_14;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionArray_opts___OptionArray___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_nitc___NitCompiler____opt_cc_libs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./nitc.nit:35 */
+  if (!once_value_15) {
+    fra.me.REG[1] = BOX_NativeString("Path to .h files for C compiler");
+    REGB0 = TAG_Int(31);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_15 = fra.me.REG[1];
+    register_static_object(&once_value_15);
+  } else fra.me.REG[1] = once_value_15;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_16) {
+    fra.me.REG[3] = BOX_NativeString("--cc-header-path");
+    REGB0 = TAG_Int(16);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_16 = fra.me.REG[3];
+    register_static_object(&once_value_16);
+  } else fra.me.REG[3] = once_value_16;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionArray_opts___OptionArray___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_nitc___NitCompiler____opt_cc_include_paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./nitc.nit:36 */
+  if (!once_value_17) {
+    fra.me.REG[2] = BOX_NativeString("Use global compilation");
+    REGB0 = TAG_Int(22);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_17 = fra.me.REG[2];
+    register_static_object(&once_value_17);
+  } else fra.me.REG[2] = once_value_17;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_18) {
+    fra.me.REG[3] = BOX_NativeString("--global");
+    REGB0 = TAG_Int(8);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_18 = fra.me.REG[3];
+    register_static_object(&once_value_18);
+  } else fra.me.REG[3] = once_value_18;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_nitc___NitCompiler____opt_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./nitc.nit:37 */
+  if (!once_value_19) {
+    fra.me.REG[1] = BOX_NativeString("Do not use SFT optimization");
+    REGB0 = TAG_Int(27);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_19 = fra.me.REG[1];
+    register_static_object(&once_value_19);
+  } else fra.me.REG[1] = once_value_19;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_20) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-SFT-optimization");
+    REGB0 = TAG_Int(28);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_20 = fra.me.REG[3];
+    register_static_object(&once_value_20);
+  } else fra.me.REG[3] = once_value_20;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_nitc___NitCompiler____opt_global_no_STF_opt(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./nitc.nit:38 */
+  if (!once_value_21) {
+    fra.me.REG[2] = BOX_NativeString("Do not use dead method removal optimization");
+    REGB0 = TAG_Int(43);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_21 = fra.me.REG[2];
+    register_static_object(&once_value_21);
+  } else fra.me.REG[2] = once_value_21;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_22) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-DMR-optimization");
+    REGB0 = TAG_Int(28);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_22 = fra.me.REG[3];
+    register_static_object(&once_value_22);
+  } else fra.me.REG[3] = once_value_22;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_nitc___NitCompiler____opt_global_no_DMR_opt(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./nitc.nit:39 */
+  if (!once_value_23) {
+    fra.me.REG[1] = BOX_NativeString("Do not automatically inline getters/setters");
+    REGB0 = TAG_Int(43);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_23 = fra.me.REG[1];
+    register_static_object(&once_value_23);
+  } else fra.me.REG[1] = once_value_23;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_24) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-get-set-inlining");
+    REGB0 = TAG_Int(28);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_24 = fra.me.REG[3];
+    register_static_object(&once_value_24);
+  } else fra.me.REG[3] = once_value_24;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_nitc___NitCompiler____opt_global_no_inline_get_set(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./nitc.nit:40 */
+  if (!once_value_25) {
+    fra.me.REG[2] = BOX_NativeString("Do not remove get tests outside object initialization");
+    REGB0 = TAG_Int(53);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_25 = fra.me.REG[2];
+    register_static_object(&once_value_25);
+  } else fra.me.REG[2] = once_value_25;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_26) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-OOIT-optimization");
+    REGB0 = TAG_Int(29);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_26 = fra.me.REG[3];
+    register_static_object(&once_value_26);
+  } else fra.me.REG[3] = once_value_26;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_nitc___NitCompiler____opt_global_no_out_of_init_get_test_opt(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./nitc.nit:41 */
+  if (!once_value_27) {
+    fra.me.REG[1] = BOX_NativeString("Do not use a specialized algorithm to find reachable methods from initializers");
+    REGB0 = TAG_Int(78);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_27 = fra.me.REG[1];
+    register_static_object(&once_value_27);
+  } else fra.me.REG[1] = once_value_27;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_28) {
+    fra.me.REG[3] = BOX_NativeString("--no-global-RFIM-analysis");
+    REGB0 = TAG_Int(25);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_28 = fra.me.REG[3];
+    register_static_object(&once_value_28);
+  } else fra.me.REG[3] = once_value_28;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_nitc___NitCompiler____opt_global_no_RFIMA(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./nitc.nit:42 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_29) {
+    fra.me.REG[1] = BOX_NativeString("none");
+    REGB0 = TAG_Int(4);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_29 = fra.me.REG[1];
+    register_static_object(&once_value_29);
+  } else fra.me.REG[1] = once_value_29;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  if (!once_value_30) {
+    fra.me.REG[1] = BOX_NativeString("cha");
+    REGB0 = TAG_Int(3);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_30 = fra.me.REG[1];
+    register_static_object(&once_value_30);
+  } else fra.me.REG[1] = once_value_30;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  if (!once_value_31) {
+    fra.me.REG[1] = BOX_NativeString("rta");
+    REGB0 = TAG_Int(3);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_31 = fra.me.REG[1];
+    register_static_object(&once_value_31);
+  } else fra.me.REG[1] = once_value_31;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  if (!once_value_32) {
+    fra.me.REG[1] = BOX_NativeString("The algorithm to use to build the callgraph");
+    REGB0 = TAG_Int(43);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_32 = fra.me.REG[1];
+    register_static_object(&once_value_32);
+  } else fra.me.REG[1] = once_value_32;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(2);
+  REGB1 = TAG_Int(0);
+  fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB1);
+  if (!once_value_33) {
+    fra.me.REG[4] = BOX_NativeString("--global-callgraph");
+    REGB1 = TAG_Int(18);
+    fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
+    once_value_33 = fra.me.REG[4];
+    register_static_object(&once_value_33);
+  } else fra.me.REG[4] = once_value_33;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  fra.me.REG[3] = NEW_OptionEnum_opts___OptionEnum___init(fra.me.REG[2], fra.me.REG[1], REGB0, fra.me.REG[3]);
+  ATTR_nitc___NitCompiler____opt_global_callgraph(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./nitc.nit:43 */
+  if (!once_value_34) {
+    fra.me.REG[3] = BOX_NativeString("NIT C library directory");
+    REGB0 = TAG_Int(23);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_34 = fra.me.REG[3];
+    register_static_object(&once_value_34);
+  } else fra.me.REG[3] = once_value_34;
+  fra.me.REG[3] = fra.me.REG[3];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_35) {
+    fra.me.REG[2] = BOX_NativeString("--clibdir");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_35 = fra.me.REG[2];
+    register_static_object(&once_value_35);
+  } else fra.me.REG[2] = once_value_35;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[1] = NEW_OptionString_opts___OptionString___init(fra.me.REG[3], fra.me.REG[1]);
+  ATTR_nitc___NitCompiler____opt_clibdir(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./nitc.nit:44 */
+  if (!once_value_36) {
+    fra.me.REG[1] = BOX_NativeString("NIT tools directory");
+    REGB0 = TAG_Int(19);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_36 = fra.me.REG[1];
+    register_static_object(&once_value_36);
+  } else fra.me.REG[1] = once_value_36;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_37) {
+    fra.me.REG[2] = BOX_NativeString("--bindir");
+    REGB0 = TAG_Int(8);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_37 = fra.me.REG[2];
+    register_static_object(&once_value_37);
+  } else fra.me.REG[2] = once_value_37;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  fra.me.REG[3] = NEW_OptionString_opts___OptionString___init(fra.me.REG[1], fra.me.REG[3]);
+  ATTR_nitc___NitCompiler____opt_bindir(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./nitc.nit:45 */
+  if (!once_value_38) {
+    fra.me.REG[3] = BOX_NativeString("Intermediate compilation directory");
+    REGB0 = TAG_Int(34);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_38 = fra.me.REG[3];
+    register_static_object(&once_value_38);
+  } else fra.me.REG[3] = once_value_38;
+  fra.me.REG[3] = fra.me.REG[3];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_39) {
+    fra.me.REG[2] = BOX_NativeString("--compdir");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_39 = fra.me.REG[2];
+    register_static_object(&once_value_39);
+  } else fra.me.REG[2] = once_value_39;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[1] = NEW_OptionString_opts___OptionString___init(fra.me.REG[3], fra.me.REG[1]);
+  ATTR_nitc___NitCompiler____opt_compdir(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./nitc.nit:46 */
+  if (!once_value_40) {
+    fra.me.REG[1] = BOX_NativeString("Append prefix to file extension");
+    REGB0 = TAG_Int(31);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_40 = fra.me.REG[1];
+    register_static_object(&once_value_40);
+  } else fra.me.REG[1] = once_value_40;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_41) {
+    fra.me.REG[2] = BOX_NativeString("-p");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_41 = fra.me.REG[2];
+    register_static_object(&once_value_41);
+  } else fra.me.REG[2] = once_value_41;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  if (!once_value_42) {
+    fra.me.REG[2] = BOX_NativeString("--extension-prefix");
+    REGB0 = TAG_Int(18);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_42 = fra.me.REG[2];
+    register_static_object(&once_value_42);
+  } else fra.me.REG[2] = once_value_42;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  fra.me.REG[3] = NEW_OptionString_opts___OptionString___init(fra.me.REG[1], fra.me.REG[3]);
+  ATTR_nitc___NitCompiler____opt_extension_prefix(fra.me.REG[0]) = fra.me.REG[3];
+  /* ./nitc.nit:47 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_43) {
+    fra.me.REG[1] = BOX_NativeString("none");
+    REGB0 = TAG_Int(4);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_43 = fra.me.REG[1];
+    register_static_object(&once_value_43);
+  } else fra.me.REG[1] = once_value_43;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+  if (!once_value_44) {
+    fra.me.REG[1] = BOX_NativeString("C");
+    REGB0 = TAG_Int(1);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_44 = fra.me.REG[1];
+    register_static_object(&once_value_44);
+  } else fra.me.REG[1] = once_value_44;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+  if (!once_value_45) {
+    fra.me.REG[1] = BOX_NativeString("icode");
+    REGB0 = TAG_Int(5);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_45 = fra.me.REG[1];
+    register_static_object(&once_value_45);
+  } else fra.me.REG[1] = once_value_45;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+  if (!once_value_46) {
+    fra.me.REG[1] = BOX_NativeString("The type of code we want to be generated");
+    REGB0 = TAG_Int(40);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_46 = fra.me.REG[1];
+    register_static_object(&once_value_46);
+  } else fra.me.REG[1] = once_value_46;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  REGB1 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB1);
+  if (!once_value_47) {
+    fra.me.REG[4] = BOX_NativeString("--output-format");
+    REGB1 = TAG_Int(15);
+    fra.me.REG[4] = NEW_String_string___String___with_native(fra.me.REG[4], REGB1);
+    once_value_47 = fra.me.REG[4];
+    register_static_object(&once_value_47);
+  } else fra.me.REG[4] = once_value_47;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  fra.me.REG[2] = NEW_OptionEnum_opts___OptionEnum___init(fra.me.REG[3], fra.me.REG[1], REGB0, fra.me.REG[2]);
+  ATTR_nitc___NitCompiler____opt_output_format(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./syntax//syntax.nit:97 */
+  REGB0 = TAG_Bool(false);
+  ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:54 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:57 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:60 */
+  if (!once_value_48) {
+    fra.me.REG[2] = BOX_NativeString("logs");
+    REGB0 = TAG_Int(4);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_48 = fra.me.REG[2];
+    register_static_object(&once_value_48);
+  } else fra.me.REG[2] = once_value_48;
+  fra.me.REG[2] = fra.me.REG[2];
+  ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:63 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_mmloader___ToolContext____messages(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:64 */
+  fra.me.REG[2] = NEW_ComparableSorter_sorter___ComparableSorter___init();
+  ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:116 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_mmloader___ToolContext____paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:119 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:122 */
+  fra.me.REG[2] = NEW_OptionContext_opts___OptionContext___init();
+  ATTR_mmloader___ToolContext____option_context(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:125 */
+  if (!once_value_49) {
+    fra.me.REG[2] = BOX_NativeString("Show warnings");
+    REGB0 = TAG_Int(13);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_49 = fra.me.REG[2];
+    register_static_object(&once_value_49);
+  } else fra.me.REG[2] = once_value_49;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_50) {
+    fra.me.REG[3] = BOX_NativeString("-W");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_50 = fra.me.REG[3];
+    register_static_object(&once_value_50);
+  } else fra.me.REG[3] = once_value_50;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  if (!once_value_51) {
+    fra.me.REG[3] = BOX_NativeString("--warn");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_51 = fra.me.REG[3];
+    register_static_object(&once_value_51);
+  } else fra.me.REG[3] = once_value_51;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:128 */
+  if (!once_value_52) {
+    fra.me.REG[1] = BOX_NativeString("Set include path for loaders (may be used more than once)");
+    REGB0 = TAG_Int(57);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_52 = fra.me.REG[1];
+    register_static_object(&once_value_52);
+  } else fra.me.REG[1] = once_value_52;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_53) {
+    fra.me.REG[3] = BOX_NativeString("-I");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_53 = fra.me.REG[3];
+    register_static_object(&once_value_53);
+  } else fra.me.REG[3] = once_value_53;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_54) {
+    fra.me.REG[3] = BOX_NativeString("--path");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_54 = fra.me.REG[3];
+    register_static_object(&once_value_54);
+  } else fra.me.REG[3] = once_value_54;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionArray_opts___OptionArray___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:131 */
+  if (!once_value_55) {
+    fra.me.REG[2] = BOX_NativeString("Generate various log files");
+    REGB0 = TAG_Int(26);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_55 = fra.me.REG[2];
+    register_static_object(&once_value_55);
+  } else fra.me.REG[2] = once_value_55;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_56) {
+    fra.me.REG[3] = BOX_NativeString("--log");
+    REGB0 = TAG_Int(5);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_56 = fra.me.REG[3];
+    register_static_object(&once_value_56);
+  } else fra.me.REG[3] = once_value_56;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:134 */
+  if (!once_value_57) {
+    fra.me.REG[1] = BOX_NativeString("Directory where to generate log files");
+    REGB0 = TAG_Int(37);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_57 = fra.me.REG[1];
+    register_static_object(&once_value_57);
+  } else fra.me.REG[1] = once_value_57;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_58) {
+    fra.me.REG[3] = BOX_NativeString("--log-dir");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_58 = fra.me.REG[3];
+    register_static_object(&once_value_58);
+  } else fra.me.REG[3] = once_value_58;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionString_opts___OptionString___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_log_dir(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:137 */
+  if (!once_value_59) {
+    fra.me.REG[2] = BOX_NativeString("Stop after meta-model processing");
+    REGB0 = TAG_Int(32);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_59 = fra.me.REG[2];
+    register_static_object(&once_value_59);
+  } else fra.me.REG[2] = once_value_59;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_60) {
+    fra.me.REG[3] = BOX_NativeString("--only-metamodel");
+    REGB0 = TAG_Int(16);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_60 = fra.me.REG[3];
+    register_static_object(&once_value_60);
+  } else fra.me.REG[3] = once_value_60;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:140 */
+  if (!once_value_61) {
+    fra.me.REG[1] = BOX_NativeString("Only proceed to parse step of loaders");
+    REGB0 = TAG_Int(37);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_61 = fra.me.REG[1];
+    register_static_object(&once_value_61);
+  } else fra.me.REG[1] = once_value_61;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_62) {
+    fra.me.REG[3] = BOX_NativeString("--only-parse");
+    REGB0 = TAG_Int(12);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_62 = fra.me.REG[3];
+    register_static_object(&once_value_62);
+  } else fra.me.REG[3] = once_value_62;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:143 */
+  if (!once_value_63) {
+    fra.me.REG[2] = BOX_NativeString("Show Help (This screen)");
+    REGB0 = TAG_Int(23);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_63 = fra.me.REG[2];
+    register_static_object(&once_value_63);
+  } else fra.me.REG[2] = once_value_63;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(2);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_64) {
+    fra.me.REG[3] = BOX_NativeString("-h");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_64 = fra.me.REG[3];
+    register_static_object(&once_value_64);
+  } else fra.me.REG[3] = once_value_64;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  if (!once_value_65) {
+    fra.me.REG[3] = BOX_NativeString("-?");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_65 = fra.me.REG[3];
+    register_static_object(&once_value_65);
+  } else fra.me.REG[3] = once_value_65;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  if (!once_value_66) {
+    fra.me.REG[3] = BOX_NativeString("--help");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_66 = fra.me.REG[3];
+    register_static_object(&once_value_66);
+  } else fra.me.REG[3] = once_value_66;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_help(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:146 */
+  if (!once_value_67) {
+    fra.me.REG[1] = BOX_NativeString("Show version and exit");
+    REGB0 = TAG_Int(21);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_67 = fra.me.REG[1];
+    register_static_object(&once_value_67);
+  } else fra.me.REG[1] = once_value_67;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_68) {
+    fra.me.REG[3] = BOX_NativeString("--version");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_68 = fra.me.REG[3];
+    register_static_object(&once_value_68);
+  } else fra.me.REG[3] = once_value_68;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_version(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:149 */
+  if (!once_value_69) {
+    fra.me.REG[2] = BOX_NativeString("Verbose");
+    REGB0 = TAG_Int(7);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_69 = fra.me.REG[2];
+    register_static_object(&once_value_69);
+  } else fra.me.REG[2] = once_value_69;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_70) {
+    fra.me.REG[3] = BOX_NativeString("-v");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_70 = fra.me.REG[3];
+    register_static_object(&once_value_70);
+  } else fra.me.REG[3] = once_value_70;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  if (!once_value_71) {
+    fra.me.REG[3] = BOX_NativeString("--verbose");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_71 = fra.me.REG[3];
+    register_static_object(&once_value_71);
+  } else fra.me.REG[3] = once_value_71;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_verbose(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:152 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:235 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:302 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:30 */
+  fra.me.REG[1] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:34 */
+  fra.me.REG[1] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:37 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_abstractmetamodel___MMContext____global_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:40 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_abstractmetamodel___MMContext____modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//analysis.nit:48 */
+  if (!once_value_72) {
+    fra.me.REG[1] = BOX_NativeString("rta");
+    REGB0 = TAG_Int(3);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_72 = fra.me.REG[1];
+    register_static_object(&once_value_72);
+  } else fra.me.REG[1] = once_value_72;
+  fra.me.REG[1] = fra.me.REG[1];
+  ATTR_analysis___ToolContext____global_callgraph(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//analysis.nit:49 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_dead_method_removal(fra.me.REG[0]) = REGB0;
+  /* ./analysis//analysis.nit:50 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_inline_get_set(fra.me.REG[0]) = REGB0;
+  /* ./analysis//analysis.nit:51 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_callgraph_from_init(fra.me.REG[0]) = REGB0;
+  /* ./analysis//analysis.nit:52 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_out_of_init_get_test_removal(fra.me.REG[0]) = REGB0;
+  /* ./program.nit:26 */
+  REGB0 = TAG_Bool(false);
+  ATTR_program___ToolContext____global(fra.me.REG[0]) = REGB0;
+  /* ./program.nit:27 */
+  REGB0 = TAG_Bool(true);
+  ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:27 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____compdir(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_base.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____clibdir(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_base.nit:29 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____bindir(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_base.nit:30 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____output_file(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_base.nit:31 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_base___ToolContext____boost(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:32 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_base___ToolContext____no_cc(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:33 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_base___ToolContext____cc_link(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:34 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_compiling_base___ToolContext____cc_libs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_base.nit:35 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_compiling_base___ToolContext____cc_lib_paths(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_base.nit:36 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_compiling_base___ToolContext____cc_include_paths(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_base.nit:37 */
+  if (!once_value_73) {
+    fra.me.REG[1] = BOX_NativeString("");
+    REGB0 = TAG_Int(0);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_73 = fra.me.REG[1];
+    register_static_object(&once_value_73);
+  } else fra.me.REG[1] = once_value_73;
+  fra.me.REG[1] = fra.me.REG[1];
+  ATTR_compiling_base___ToolContext____ext_prefix(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_NitCompiler(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 65);
+  obj->vft = (classtable_elt_t*)VFT_NitCompiler;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_NitCompiler(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_NitCompiler;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_output(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_output", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_boost(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_boost", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_no_cc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_no_cc", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_cc_no_link(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_cc_no_link", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_cc_lib_paths(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_cc_lib_paths", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_cc_libs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_cc_libs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_cc_include_paths(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_cc_include_paths", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_global(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_global", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_global_no_STF_opt(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_global_no_STF_opt", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_global_no_DMR_opt(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_global_no_DMR_opt", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_global_no_inline_get_set(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_global_no_inline_get_set", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_global_no_out_of_init_get_test_opt(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_global_no_out_of_init_get_test_opt", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_global_no_RFIMA(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_global_no_RFIMA", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_global_callgraph(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_global_callgraph", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_clibdir(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_clibdir", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_bindir(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_bindir", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_compdir(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_compdir", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_extension_prefix(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_extension_prefix", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_nitc___NitCompiler____opt_output_format(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_output_format", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstracttool___AbstractCompiler____tool_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tool_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_keep_ast", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____error_count(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_error_count", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_warning_count", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_log_directory", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____messages(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_messages", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_message_sorter", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____paths(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_paths", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____loaders(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____option_context(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_option_context", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_warn", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_path", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_log", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_log_dir(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_log_dir", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_only_metamodel", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_only_parse", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_help(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_help", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_version(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_version", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_verbose(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_verbose", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_verbose_level", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_module_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_class_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____global_classes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____global_callgraph(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_callgraph", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_dead_method_removal(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_dead_method_removal", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_inline_get_set(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_inline_get_set", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_callgraph_from_init(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_callgraph_from_init", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_out_of_init_get_test_removal(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_out_of_init_get_test_removal", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___ToolContext____global(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_use_SFT_optimization", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____boost(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_boost", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____no_cc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_cc", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_link(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_link", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_libs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_libs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_lib_paths(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_lib_paths", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_include_paths(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_include_paths", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____ext_prefix(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_ext_prefix", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr(val_t p0) {
+val_t NEW_NitCompiler_nitc___NitCompiler___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
   int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ACharExpr();
-  parser_prod___ACharExpr___init_acharexpr(self, p0, init_table);
-  CHECKNEW_ACharExpr(self, "parser_prod::ACharExpr::init_acharexpr for ACharExpr");
-  return self;
-}
-const classtable_elt_t VFT_AStringFormExpr[90] = {
-  {(bigint) 4123 /* 0: Identity */},
-  {(bigint) 3 /* 1: AStringFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AStringFormExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AStringFormExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AStringFormExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4123 /* 6: AStringFormExpr < AStringFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 49;
+  fra.me.meth = LOCATE_NEW_NitCompiler_nitc___NitCompiler___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./nitc.nit:49 */
+  fra.me.REG[0] = NEW_NitCompiler();
+  INIT_ATTRIBUTES__NitCompiler(fra.me.REG[0]);
+  nitc___NitCompiler___init(fra.me.REG[0], init_table);
+  CHECKNEW_NitCompiler(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_Sys[53] = {
+  {(bigint) 27 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Sys < Object: superclass typecheck marker */},
+  {(bigint) 27 /* 3: Sys < Sys: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AStringFormExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AStringFormExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AStringFormExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AStringFormExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AStringFormExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AStringFormExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) compiling_methods___AStringFormExpr___string_text},
-  {(bigint) compiling_methods___AStringFormExpr___compute_string_info},
-  {(bigint) typing___AStringFormExpr___meth_with_native},
-  {(bigint) 4 /* 89: AStringFormExpr < AStringFormExpr: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AStringFormExpr::_parent */
-/* 2: Attribute AStringFormExpr::_first_token */
-/* 3: Attribute AStringFormExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AStringFormExpr::_is_typed */
-/* 6: Attribute AStringFormExpr::_stype */
-/* 7: Attribute AStringFormExpr::_if_true_variable_ctx */
-/* 8: Attribute AStringFormExpr::_if_false_variable_ctx */
-/* 9: Attribute AStringFormExpr::_cstring */
-/* 10: Attribute AStringFormExpr::_cstring_length */
-/* 11: Attribute AStringFormExpr::_meth_with_native */
-val_t NEW_AStringFormExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_AStringFormExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AStringFormExpr(val_t self, char *from) {
-}
-val_t NEW_AStringFormExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AStringFormExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AStringFormExpr(self, "parser_nodes::PNode::init for AStringFormExpr");
-  return self;
-}
-const classtable_elt_t VFT_AStringExpr[95] = {
-  {(bigint) 4451 /* 0: Identity */},
-  {(bigint) 3 /* 1: AStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AStringExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AStringExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4123 /* 6: AStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 4451 /* 7: AStringExpr < AStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41998,14 +15667,9 @@ const classtable_elt_t VFT_AStringExpr[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AStringExpr < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Sys < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -42013,7 +15677,6 @@ const classtable_elt_t VFT_AStringExpr[95] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -42021,410 +15684,88 @@ const classtable_elt_t VFT_AStringExpr[95] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AStringExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AStringExpr___visit_all},
-  {(bigint) parser_prod___AStringExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AStringExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AStringFormExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AStringExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AStringFormExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AStringExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) compiling_methods___AStringExpr___string_text},
-  {(bigint) compiling_methods___AStringFormExpr___compute_string_info},
-  {(bigint) typing___AStringFormExpr___meth_with_native},
-  {(bigint) 4 /* 89: AStringExpr < AStringFormExpr: superclass init_table position */},
-  {(bigint) parser_prod___AStringExpr___empty_init},
-  {(bigint) parser_prod___AStringExpr___init_astringexpr},
-  {(bigint) 5 /* 92: AStringExpr < AStringExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AStringExpr___n_string},
-  {(bigint) parser_prod___AStringExpr___n_string__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AStringExpr::_parent */
-/* 2: Attribute AStringExpr::_first_token */
-/* 3: Attribute AStringExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AStringExpr::_is_typed */
-/* 6: Attribute AStringExpr::_stype */
-/* 7: Attribute AStringExpr::_if_true_variable_ctx */
-/* 8: Attribute AStringExpr::_if_false_variable_ctx */
-/* 9: Attribute AStringExpr::_cstring */
-/* 10: Attribute AStringExpr::_cstring_length */
-/* 11: Attribute AStringExpr::_meth_with_native */
-/* 12: Attribute AStringExpr::_n_string */
-val_t NEW_AStringExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_AStringExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AStringExpr____n_string(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AStringExpr(val_t self, char *from) {
-}
-val_t NEW_AStringExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStringExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AStringExpr(self, "parser_nodes::PNode::init for AStringExpr");
-  return self;
-}
-val_t NEW_AStringExpr_parser_prod___AStringExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStringExpr();
-  parser_prod___AStringExpr___empty_init(self, init_table);
-  CHECKNEW_AStringExpr(self, "parser_prod::AStringExpr::empty_init for AStringExpr");
-  return self;
-}
-val_t NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr(val_t p0) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStringExpr();
-  parser_prod___AStringExpr___init_astringexpr(self, p0, init_table);
-  CHECKNEW_AStringExpr(self, "parser_prod::AStringExpr::init_astringexpr for AStringExpr");
-  return self;
-}
-const classtable_elt_t VFT_AStartStringExpr[95] = {
-  {(bigint) 4455 /* 0: Identity */},
-  {(bigint) 3 /* 1: AStartStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AStartStringExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AStartStringExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AStartStringExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4123 /* 6: AStartStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 4455 /* 7: AStartStringExpr < AStartStringExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
   {(bigint) string___Object___to_s},
   {(bigint) string___Object___inspect},
   {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AStartStringExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
+  {(bigint) string___Sys___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AStartStringExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AStartStringExpr___visit_all},
-  {(bigint) parser_prod___AStartStringExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AStartStringExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AStringFormExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AStartStringExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AStringFormExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AStartStringExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) compiling_methods___AStartStringExpr___string_text},
-  {(bigint) compiling_methods___AStringFormExpr___compute_string_info},
-  {(bigint) typing___AStringFormExpr___meth_with_native},
-  {(bigint) 4 /* 89: AStartStringExpr < AStringFormExpr: superclass init_table position */},
-  {(bigint) parser_prod___AStartStringExpr___empty_init},
-  {(bigint) parser_prod___AStartStringExpr___init_astartstringexpr},
-  {(bigint) 5 /* 92: AStartStringExpr < AStartStringExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AStartStringExpr___n_string},
-  {(bigint) parser_prod___AStartStringExpr___n_string__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) exec___Sys___system},
+  {(bigint) string___Sys___program_name},
+  {(bigint) string___Sys___init_args},
+  {(bigint) string___Sys___native_argc},
+  {(bigint) string___Sys___native_argv},
+  {(bigint) 1 /* 50: Sys < Sys: superclass init_table position */},
+  {(bigint) nitc___Sys___main},
+  {(bigint) kernel___Sys___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AStartStringExpr::_parent */
-/* 2: Attribute AStartStringExpr::_first_token */
-/* 3: Attribute AStartStringExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AStartStringExpr::_is_typed */
-/* 6: Attribute AStartStringExpr::_stype */
-/* 7: Attribute AStartStringExpr::_if_true_variable_ctx */
-/* 8: Attribute AStartStringExpr::_if_false_variable_ctx */
-/* 9: Attribute AStartStringExpr::_cstring */
-/* 10: Attribute AStartStringExpr::_cstring_length */
-/* 11: Attribute AStartStringExpr::_meth_with_native */
-/* 12: Attribute AStartStringExpr::_n_string */
-val_t NEW_AStartStringExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_AStartStringExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AStartStringExpr____n_string(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AStartStringExpr(val_t self, char *from) {
-}
-val_t NEW_AStartStringExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStartStringExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AStartStringExpr(self, "parser_nodes::PNode::init for AStartStringExpr");
-  return self;
-}
-val_t NEW_AStartStringExpr_parser_prod___AStartStringExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStartStringExpr();
-  parser_prod___AStartStringExpr___empty_init(self, init_table);
-  CHECKNEW_AStartStringExpr(self, "parser_prod::AStartStringExpr::empty_init for AStartStringExpr");
-  return self;
-}
-val_t NEW_AStartStringExpr_parser_prod___AStartStringExpr___init_astartstringexpr(val_t p0) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AStartStringExpr();
-  parser_prod___AStartStringExpr___init_astartstringexpr(self, p0, init_table);
-  CHECKNEW_AStartStringExpr(self, "parser_prod::AStartStringExpr::init_astartstringexpr for AStartStringExpr");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute Sys::_args_cache */
+void INIT_ATTRIBUTES__Sys(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Sys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_AMidStringExpr[95] = {
-  {(bigint) 4479 /* 0: Identity */},
-  {(bigint) 3 /* 1: AMidStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AMidStringExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AMidStringExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AMidStringExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4123 /* 6: AMidStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 4479 /* 7: AMidStringExpr < AMidStringExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_Sys(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_Sys;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Sys(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Sys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Sys_kernel___Sys___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_Sys_kernel___Sys___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_Sys();
+  INIT_ATTRIBUTES__Sys(fra.me.REG[0]);
+  kernel___Sys___init(fra.me.REG[0], init_table);
+  CHECKNEW_Sys(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_Bool[46] = {
+  {(bigint) -13 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Bool < Object: superclass typecheck marker */},
+  {(bigint) -13 /* 3: Bool < Bool: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AMidStringExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AMidStringExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AMidStringExpr___visit_all},
-  {(bigint) parser_prod___AMidStringExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AMidStringExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AStringFormExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AMidStringExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AStringFormExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AMidStringExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) compiling_methods___AMidStringExpr___string_text},
-  {(bigint) compiling_methods___AStringFormExpr___compute_string_info},
-  {(bigint) typing___AStringFormExpr___meth_with_native},
-  {(bigint) 4 /* 89: AMidStringExpr < AStringFormExpr: superclass init_table position */},
-  {(bigint) parser_prod___AMidStringExpr___empty_init},
-  {(bigint) parser_prod___AMidStringExpr___init_amidstringexpr},
-  {(bigint) 5 /* 92: AMidStringExpr < AMidStringExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AMidStringExpr___n_string},
-  {(bigint) parser_prod___AMidStringExpr___n_string__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AMidStringExpr::_parent */
-/* 2: Attribute AMidStringExpr::_first_token */
-/* 3: Attribute AMidStringExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AMidStringExpr::_is_typed */
-/* 6: Attribute AMidStringExpr::_stype */
-/* 7: Attribute AMidStringExpr::_if_true_variable_ctx */
-/* 8: Attribute AMidStringExpr::_if_false_variable_ctx */
-/* 9: Attribute AMidStringExpr::_cstring */
-/* 10: Attribute AMidStringExpr::_cstring_length */
-/* 11: Attribute AMidStringExpr::_meth_with_native */
-/* 12: Attribute AMidStringExpr::_n_string */
-val_t NEW_AMidStringExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_AMidStringExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AMidStringExpr____n_string(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AMidStringExpr(val_t self, char *from) {
-}
-val_t NEW_AMidStringExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMidStringExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AMidStringExpr(self, "parser_nodes::PNode::init for AMidStringExpr");
-  return self;
-}
-val_t NEW_AMidStringExpr_parser_prod___AMidStringExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMidStringExpr();
-  parser_prod___AMidStringExpr___empty_init(self, init_table);
-  CHECKNEW_AMidStringExpr(self, "parser_prod::AMidStringExpr::empty_init for AMidStringExpr");
-  return self;
-}
-val_t NEW_AMidStringExpr_parser_prod___AMidStringExpr___init_amidstringexpr(val_t p0) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AMidStringExpr();
-  parser_prod___AMidStringExpr___init_amidstringexpr(self, p0, init_table);
-  CHECKNEW_AMidStringExpr(self, "parser_prod::AMidStringExpr::init_amidstringexpr for AMidStringExpr");
-  return self;
-}
-const classtable_elt_t VFT_AEndStringExpr[95] = {
-  {(bigint) 4511 /* 0: Identity */},
-  {(bigint) 3 /* 1: AEndStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AEndStringExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AEndStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AEndStringExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4123 /* 6: AEndStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 4511 /* 7: AEndStringExpr < AEndStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42433,22 +15774,16 @@ const classtable_elt_t VFT_AEndStringExpr[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AEndStringExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Bool < Object: superclass init_table position */},
+  {(bigint) kernel___Bool___object_id},
   {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
+  {(bigint) kernel___Bool_____eqeq},
+  {(bigint) kernel___Bool_____neq},
+  {(bigint) kernel___Bool___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -42456,266 +15791,31 @@ const classtable_elt_t VFT_AEndStringExpr[95] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Bool___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Bool___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AEndStringExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AEndStringExpr___visit_all},
-  {(bigint) parser_prod___AEndStringExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AEndStringExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AStringFormExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AEndStringExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AStringFormExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AEndStringExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) compiling_methods___AEndStringExpr___string_text},
-  {(bigint) compiling_methods___AStringFormExpr___compute_string_info},
-  {(bigint) typing___AStringFormExpr___meth_with_native},
-  {(bigint) 4 /* 89: AEndStringExpr < AStringFormExpr: superclass init_table position */},
-  {(bigint) parser_prod___AEndStringExpr___empty_init},
-  {(bigint) parser_prod___AEndStringExpr___init_aendstringexpr},
-  {(bigint) 5 /* 92: AEndStringExpr < AEndStringExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AEndStringExpr___n_string},
-  {(bigint) parser_prod___AEndStringExpr___n_string__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: Bool < Bool: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AEndStringExpr::_parent */
-/* 2: Attribute AEndStringExpr::_first_token */
-/* 3: Attribute AEndStringExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AEndStringExpr::_is_typed */
-/* 6: Attribute AEndStringExpr::_stype */
-/* 7: Attribute AEndStringExpr::_if_true_variable_ctx */
-/* 8: Attribute AEndStringExpr::_if_false_variable_ctx */
-/* 9: Attribute AEndStringExpr::_cstring */
-/* 10: Attribute AEndStringExpr::_cstring_length */
-/* 11: Attribute AEndStringExpr::_meth_with_native */
-/* 12: Attribute AEndStringExpr::_n_string */
-val_t NEW_AEndStringExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_AEndStringExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AEndStringExpr____n_string(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AEndStringExpr(val_t self, char *from) {
-}
-val_t NEW_AEndStringExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEndStringExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AEndStringExpr(self, "parser_nodes::PNode::init for AEndStringExpr");
-  return self;
-}
-val_t NEW_AEndStringExpr_parser_prod___AEndStringExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEndStringExpr();
-  parser_prod___AEndStringExpr___empty_init(self, init_table);
-  CHECKNEW_AEndStringExpr(self, "parser_prod::AEndStringExpr::empty_init for AEndStringExpr");
-  return self;
-}
-val_t NEW_AEndStringExpr_parser_prod___AEndStringExpr___init_aendstringexpr(val_t p0) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AEndStringExpr();
-  parser_prod___AEndStringExpr___init_aendstringexpr(self, p0, init_table);
-  CHECKNEW_AEndStringExpr(self, "parser_prod::AEndStringExpr::init_aendstringexpr for AEndStringExpr");
-  return self;
-}
-const classtable_elt_t VFT_ASuperstringExpr[95] = {
-  {(bigint) 4115 /* 0: Identity */},
-  {(bigint) 3 /* 1: ASuperstringExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ASuperstringExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ASuperstringExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: ASuperstringExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4115 /* 6: ASuperstringExpr < ASuperstringExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+/* 1: Object_id */
+const classtable_elt_t VFT_Float[68] = {
+  {(bigint) -9 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Float < Object: superclass typecheck marker */},
+  {(bigint) -9 /* 3: Float < Float: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ASuperstringExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ASuperstringExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ASuperstringExpr___visit_all},
-  {(bigint) parser_prod___ASuperstringExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ASuperstringExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASuperstringExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ASuperstringExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___ASuperstringExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ASuperstringExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) typing___ASuperstringExpr___meth_with_capacity},
-  {(bigint) typing___ASuperstringExpr___meth_add},
-  {(bigint) typing___ASuperstringExpr___meth_to_s},
-  {(bigint) typing___ASuperstringExpr___atype},
-  {(bigint) parser_prod___ASuperstringExpr___empty_init},
-  {(bigint) parser_prod___ASuperstringExpr___init_asuperstringexpr},
-  {(bigint) 4 /* 92: ASuperstringExpr < ASuperstringExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASuperstringExpr___n_exprs},
-  {(bigint) parser_nodes___ASuperstringExpr___n_exprs__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ASuperstringExpr::_parent */
-/* 2: Attribute ASuperstringExpr::_first_token */
-/* 3: Attribute ASuperstringExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ASuperstringExpr::_is_typed */
-/* 6: Attribute ASuperstringExpr::_stype */
-/* 7: Attribute ASuperstringExpr::_if_true_variable_ctx */
-/* 8: Attribute ASuperstringExpr::_if_false_variable_ctx */
-/* 9: Attribute ASuperstringExpr::_meth_with_capacity */
-/* 10: Attribute ASuperstringExpr::_meth_add */
-/* 11: Attribute ASuperstringExpr::_meth_to_s */
-/* 12: Attribute ASuperstringExpr::_atype */
-/* 13: Attribute ASuperstringExpr::_n_exprs */
-val_t NEW_ASuperstringExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_ASuperstringExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASuperstringExpr____n_exprs(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ASuperstringExpr(val_t self, char *from) {
-}
-val_t NEW_ASuperstringExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASuperstringExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ASuperstringExpr(self, "parser_nodes::PNode::init for ASuperstringExpr");
-  return self;
-}
-val_t NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASuperstringExpr();
-  parser_prod___ASuperstringExpr___empty_init(self, init_table);
-  CHECKNEW_ASuperstringExpr(self, "parser_prod::ASuperstringExpr::empty_init for ASuperstringExpr");
-  return self;
-}
-val_t NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ASuperstringExpr();
-  parser_prod___ASuperstringExpr___init_asuperstringexpr(self, p0, init_table);
-  CHECKNEW_ASuperstringExpr(self, "parser_prod::ASuperstringExpr::init_asuperstringexpr for ASuperstringExpr");
-  return self;
-}
-const classtable_elt_t VFT_AParExpr[92] = {
-  {(bigint) 4459 /* 0: Identity */},
-  {(bigint) 3 /* 1: AParExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AParExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AParExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AParExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4171 /* 6: AParExpr < AProxyExpr: superclass typecheck marker */},
-  {(bigint) 4459 /* 7: AParExpr < AParExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42724,22 +15824,16 @@ const classtable_elt_t VFT_AParExpr[92] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 1 /* 23: AParExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Float < Object: superclass init_table position */},
+  {(bigint) kernel___Float___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
   {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
+  {(bigint) kernel___Float___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -42747,113 +15841,59 @@ const classtable_elt_t VFT_AParExpr[92] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Float___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AParExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AParExpr___visit_all},
-  {(bigint) parser_prod___AParExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 2 /* 60: AParExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AProxyExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 3 /* 69: AParExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AProxyExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 4 /* 80: AParExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) 0 /* 86: AParExpr < AProxyExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AProxyExpr___n_expr},
-  {(bigint) parser_prod___AParExpr___n_expr__eq},
-  {(bigint) parser_prod___AParExpr___empty_init},
-  {(bigint) parser_prod___AParExpr___init_aparexpr},
-  {(bigint) 5 /* 91: AParExpr < AParExpr: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) string___Float___to_precision},
+  {(bigint) 1 /* 46: Float < Float: superclass init_table position */},
+  {(bigint) kernel___Float_____leq},
+  {(bigint) kernel___Float_____l},
+  {(bigint) kernel___Float_____geq},
+  {(bigint) kernel___Float_____g},
+  {(bigint) kernel___Float_____plus},
+  {(bigint) kernel___Float___unary__minus},
+  {(bigint) kernel___Float_____minus},
+  {(bigint) kernel___Float_____star},
+  {(bigint) kernel___Float_____slash},
+  {(bigint) kernel___Float___to_i},
+  {(bigint) math___Float___sqrt},
+  {(bigint) math___Float___cos},
+  {(bigint) math___Float___sin},
+  {(bigint) math___Float___tan},
+  {(bigint) math___Float___acos},
+  {(bigint) math___Float___asin},
+  {(bigint) math___Float___atan},
+  {(bigint) math___Float___pow},
+  {(bigint) math___Float___log},
+  {(bigint) math___Float___exp},
+  {(bigint) math___Float___rand},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AParExpr::_parent */
-/* 2: Attribute AParExpr::_first_token */
-/* 3: Attribute AParExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AParExpr::_is_typed */
-/* 6: Attribute AParExpr::_stype */
-/* 7: Attribute AParExpr::_if_true_variable_ctx */
-/* 8: Attribute AParExpr::_if_false_variable_ctx */
-/* 9: Attribute AParExpr::_n_expr */
-val_t NEW_AParExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_AParExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AProxyExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AParExpr(val_t self, char *from) {
-}
-val_t NEW_AParExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AParExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AParExpr(self, "parser_nodes::PNode::init for AParExpr");
-  return self;
-}
-val_t NEW_AParExpr_parser_prod___AParExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AParExpr();
-  parser_prod___AParExpr___empty_init(self, init_table);
-  CHECKNEW_AParExpr(self, "parser_prod::AParExpr::empty_init for AParExpr");
-  return self;
-}
-val_t NEW_AParExpr_parser_prod___AParExpr___init_aparexpr(val_t p0) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AParExpr();
-  parser_prod___AParExpr___init_aparexpr(self, p0, init_table);
-  CHECKNEW_AParExpr(self, "parser_prod::AParExpr::init_aparexpr for AParExpr");
-  return self;
+/* 1: Object_id */
+val_t BOX_Float(float val) {
+  struct TBOX_Float *box = (struct TBOX_Float*)alloc(sizeof(struct TBOX_Float));
+  box->vft = VFT_Float;
+  box->val = val;
+  box->object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_AProxyExpr[89] = {
-  {(bigint) 4171 /* 0: Identity */},
-  {(bigint) 3 /* 1: AProxyExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AProxyExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AProxyExpr < Prod: superclass typecheck marker */},
+const classtable_elt_t VFT_Int[83] = {
+  {(bigint) -29 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Int < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AProxyExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4171 /* 6: AProxyExpr < AProxyExpr: superclass typecheck marker */},
+  {(bigint) 243 /* 4: Int < Comparable: superclass typecheck marker */},
+  {(bigint) 2067 /* 5: Int < Discrete: superclass typecheck marker */},
+  {(bigint) -29 /* 6: Int < Int: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42863,22 +15903,17 @@ const classtable_elt_t VFT_AProxyExpr[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AProxyExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: Int < Object: superclass init_table position */},
+  {(bigint) kernel___Int___object_id},
   {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
+  {(bigint) kernel___Int_____eqeq},
+  {(bigint) kernel___Int_____neq},
+  {(bigint) kernel___Int___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -42886,96 +15921,66 @@ const classtable_elt_t VFT_AProxyExpr[89] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Int___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Int___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AProxyExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AProxyExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AProxyExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AProxyExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AProxyExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) 4 /* 86: AProxyExpr < AProxyExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AProxyExpr___n_expr},
-  {(bigint) parser_nodes___AProxyExpr___n_expr__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 51: Int < Comparable: superclass init_table position */},
+  {(bigint) kernel___Int_____l},
+  {(bigint) kernel___Int_____leq},
+  {(bigint) kernel___Int_____geq},
+  {(bigint) kernel___Int_____g},
+  {(bigint) kernel___Int_____leqg},
+  {(bigint) kernel___Int___is_between},
+  {(bigint) kernel___Int___max},
+  {(bigint) kernel___Int___min},
+  {(bigint) 0 /* 60: Int < Discrete: superclass init_table position */},
+  {(bigint) kernel___Int___succ},
+  {(bigint) kernel___Int___prec},
+  {(bigint) kernel___Int_____plus},
+  {(bigint) kernel___Int_____minus},
+  {(bigint) kernel___Int___distance},
+  {(bigint) string___Int___fill_buffer},
+  {(bigint) string___Int___to_hex},
+  {(bigint) string___Int___to_base},
+  {(bigint) 3 /* 69: Int < Int: superclass init_table position */},
+  {(bigint) kernel___Int___unary__minus},
+  {(bigint) kernel___Int_____star},
+  {(bigint) kernel___Int_____slash},
+  {(bigint) kernel___Int_____percent},
+  {(bigint) kernel___Int___lshift},
+  {(bigint) kernel___Int___rshift},
+  {(bigint) kernel___Int___to_f},
+  {(bigint) kernel___Int___ascii},
+  {(bigint) kernel___Int___digit_count},
+  {(bigint) kernel___Int___to_c},
+  {(bigint) kernel___Int___enumerate_to},
+  {(bigint) kernel___Int___enumerate_before},
+  {(bigint) math___Int___rand},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AProxyExpr::_parent */
-/* 2: Attribute AProxyExpr::_first_token */
-/* 3: Attribute AProxyExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AProxyExpr::_is_typed */
-/* 6: Attribute AProxyExpr::_stype */
-/* 7: Attribute AProxyExpr::_if_true_variable_ctx */
-/* 8: Attribute AProxyExpr::_if_false_variable_ctx */
-/* 9: Attribute AProxyExpr::_n_expr */
-val_t NEW_AProxyExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_AProxyExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AProxyExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AProxyExpr(val_t self, char *from) {
-}
-val_t NEW_AProxyExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AProxyExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AProxyExpr(self, "parser_nodes::PNode::init for AProxyExpr");
-  return self;
-}
-const classtable_elt_t VFT_AAsCastExpr[95] = {
-  {(bigint) 4547 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAsCastExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAsCastExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAsCastExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4103 /* 4: AAsCastExpr < ATypeCheckExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AAsCastExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4547 /* 6: AAsCastExpr < AAsCastExpr: superclass typecheck marker */},
+/* 1: Object_id */
+const classtable_elt_t VFT_Char[75] = {
+  {(bigint) -33 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Char < Object: superclass typecheck marker */},
+  {(bigint) 99 /* 3: Char < Pattern: superclass typecheck marker */},
+  {(bigint) 243 /* 4: Char < Comparable: superclass typecheck marker */},
+  {(bigint) 2067 /* 5: Char < Discrete: superclass typecheck marker */},
+  {(bigint) -33 /* 6: Char < Char: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42985,22 +15990,17 @@ const classtable_elt_t VFT_AAsCastExpr[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 1 /* 23: AAsCastExpr < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: Char < Object: superclass init_table position */},
+  {(bigint) kernel___Char___object_id},
   {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
+  {(bigint) kernel___Char_____eqeq},
+  {(bigint) kernel___Char_____neq},
+  {(bigint) kernel___Char___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -43008,120 +16008,56 @@ const classtable_elt_t VFT_AAsCastExpr[95] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Char___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Char___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AAsCastExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AAsCastExpr___visit_all},
-  {(bigint) parser_prod___AAsCastExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 2 /* 60: AAsCastExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AAsCastExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 3 /* 69: AAsCastExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: AAsCastExpr < ATypeCheckExpr: superclass init_table position */},
-  {(bigint) typing___ATypeCheckExpr___check_expr_cast},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAsCastExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 4 /* 80: AAsCastExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AAsCastExpr___empty_init},
-  {(bigint) parser_prod___AAsCastExpr___init_aascastexpr},
-  {(bigint) 5 /* 88: AAsCastExpr < AAsCastExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAsCastExpr___n_expr},
-  {(bigint) parser_prod___AAsCastExpr___n_expr__eq},
-  {(bigint) parser_nodes___AAsCastExpr___n_kwas},
-  {(bigint) parser_prod___AAsCastExpr___n_kwas__eq},
-  {(bigint) parser_nodes___AAsCastExpr___n_type},
-  {(bigint) parser_prod___AAsCastExpr___n_type__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: Char < Pattern: superclass init_table position */},
+  {(bigint) string_search___Char___search_index_in},
+  {(bigint) string_search___Char___search_in},
+  {(bigint) string_search___Pattern___search_all_in},
+  {(bigint) string_search___Pattern___split_in},
+  {(bigint) string_search___Pattern___init},
+  {(bigint) 3 /* 51: Char < Comparable: superclass init_table position */},
+  {(bigint) kernel___Char_____l},
+  {(bigint) kernel___Char_____leq},
+  {(bigint) kernel___Char_____geq},
+  {(bigint) kernel___Char_____g},
+  {(bigint) kernel___Comparable_____leqg},
+  {(bigint) kernel___Comparable___is_between},
+  {(bigint) kernel___Comparable___max},
+  {(bigint) kernel___Comparable___min},
+  {(bigint) 2 /* 60: Char < Discrete: superclass init_table position */},
+  {(bigint) kernel___Char___succ},
+  {(bigint) kernel___Char___prec},
+  {(bigint) kernel___Char_____plus},
+  {(bigint) kernel___Char_____minus},
+  {(bigint) kernel___Char___distance},
+  {(bigint) 4 /* 66: Char < Char: superclass init_table position */},
+  {(bigint) kernel___Char___to_i},
+  {(bigint) kernel___Char___ascii},
+  {(bigint) kernel___Char___to_lower},
+  {(bigint) kernel___Char___to_upper},
+  {(bigint) kernel___Char___is_digit},
+  {(bigint) kernel___Char___is_lower},
+  {(bigint) kernel___Char___is_upper},
+  {(bigint) kernel___Char___is_letter},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AAsCastExpr::_parent */
-/* 2: Attribute AAsCastExpr::_first_token */
-/* 3: Attribute AAsCastExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAsCastExpr::_is_typed */
-/* 6: Attribute AAsCastExpr::_stype */
-/* 7: Attribute AAsCastExpr::_if_true_variable_ctx */
-/* 8: Attribute AAsCastExpr::_if_false_variable_ctx */
-/* 9: Attribute AAsCastExpr::_n_expr */
-/* 10: Attribute AAsCastExpr::_n_kwas */
-/* 11: Attribute AAsCastExpr::_n_type */
-val_t NEW_AAsCastExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_AAsCastExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAsCastExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAsCastExpr____n_kwas(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAsCastExpr____n_type(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAsCastExpr(val_t self, char *from) {
-}
-val_t NEW_AAsCastExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAsCastExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAsCastExpr(self, "parser_nodes::PNode::init for AAsCastExpr");
-  return self;
-}
-val_t NEW_AAsCastExpr_parser_prod___AAsCastExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAsCastExpr();
-  parser_prod___AAsCastExpr___empty_init(self, init_table);
-  CHECKNEW_AAsCastExpr(self, "parser_prod::AAsCastExpr::empty_init for AAsCastExpr");
-  return self;
-}
-val_t NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr(val_t p0, val_t p1, val_t p2) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAsCastExpr();
-  parser_prod___AAsCastExpr___init_aascastexpr(self, p0, p1, p2, init_table);
-  CHECKNEW_AAsCastExpr(self, "parser_prod::AAsCastExpr::init_aascastexpr for AAsCastExpr");
-  return self;
-}
-const classtable_elt_t VFT_AAsNotnullExpr[97] = {
-  {(bigint) 4367 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAsNotnullExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAsNotnullExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAsNotnullExpr < Prod: superclass typecheck marker */},
+/* 1: Object_id */
+const classtable_elt_t VFT_Pointer[46] = {
+  {(bigint) -1 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Pointer < Object: superclass typecheck marker */},
+  {(bigint) -1 /* 3: Pointer < Pointer: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AAsNotnullExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4367 /* 6: AAsNotnullExpr < AAsNotnullExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43131,14 +16067,12 @@ const classtable_elt_t VFT_AAsNotnullExpr[97] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAsNotnullExpr < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Pointer < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -43146,7 +16080,6 @@ const classtable_elt_t VFT_AAsNotnullExpr[97] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -43154,126 +16087,37 @@ const classtable_elt_t VFT_AAsNotnullExpr[97] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AAsNotnullExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AAsNotnullExpr___visit_all},
-  {(bigint) parser_prod___AAsNotnullExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAsNotnullExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AAsNotnullExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAsNotnullExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAsNotnullExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AAsNotnullExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) parser_prod___AAsNotnullExpr___empty_init},
-  {(bigint) parser_prod___AAsNotnullExpr___init_aasnotnullexpr},
-  {(bigint) 4 /* 88: AAsNotnullExpr < AAsNotnullExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAsNotnullExpr___n_expr},
-  {(bigint) parser_prod___AAsNotnullExpr___n_expr__eq},
-  {(bigint) parser_nodes___AAsNotnullExpr___n_kwas},
-  {(bigint) parser_prod___AAsNotnullExpr___n_kwas__eq},
-  {(bigint) parser_nodes___AAsNotnullExpr___n_kwnot},
-  {(bigint) parser_prod___AAsNotnullExpr___n_kwnot__eq},
-  {(bigint) parser_nodes___AAsNotnullExpr___n_kwnull},
-  {(bigint) parser_prod___AAsNotnullExpr___n_kwnull__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: Pointer < Pointer: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AAsNotnullExpr::_parent */
-/* 2: Attribute AAsNotnullExpr::_first_token */
-/* 3: Attribute AAsNotnullExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAsNotnullExpr::_is_typed */
-/* 6: Attribute AAsNotnullExpr::_stype */
-/* 7: Attribute AAsNotnullExpr::_if_true_variable_ctx */
-/* 8: Attribute AAsNotnullExpr::_if_false_variable_ctx */
-/* 9: Attribute AAsNotnullExpr::_n_expr */
-/* 10: Attribute AAsNotnullExpr::_n_kwas */
-/* 11: Attribute AAsNotnullExpr::_n_kwnot */
-/* 12: Attribute AAsNotnullExpr::_n_kwnull */
-val_t NEW_AAsNotnullExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_AAsNotnullExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAsNotnullExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAsNotnullExpr____n_kwas(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAsNotnullExpr(val_t self, char *from) {
-}
-val_t NEW_AAsNotnullExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAsNotnullExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAsNotnullExpr(self, "parser_nodes::PNode::init for AAsNotnullExpr");
-  return self;
-}
-val_t NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAsNotnullExpr();
-  parser_prod___AAsNotnullExpr___empty_init(self, init_table);
-  CHECKNEW_AAsNotnullExpr(self, "parser_prod::AAsNotnullExpr::empty_init for AAsNotnullExpr");
-  return self;
-}
-val_t NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAsNotnullExpr();
-  parser_prod___AAsNotnullExpr___init_aasnotnullexpr(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_AAsNotnullExpr(self, "parser_prod::AAsNotnullExpr::init_aasnotnullexpr for AAsNotnullExpr");
-  return self;
+/* 1: Object_id */
+val_t BOX_Pointer(void * val) {
+  struct TBOX_Pointer *box = (struct TBOX_Pointer*)alloc(sizeof(struct TBOX_Pointer));
+  box->vft = VFT_Pointer;
+  box->val = val;
+  box->object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_AIssetAttrExpr[111] = {
-  {(bigint) 4483 /* 0: Identity */},
-  {(bigint) 3 /* 1: AIssetAttrExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AIssetAttrExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AIssetAttrExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4351 /* 4: AIssetAttrExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AIssetAttrExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4483 /* 6: AIssetAttrExpr < AIssetAttrExpr: superclass typecheck marker */},
+const classtable_elt_t VFT_Container[75] = {
+  {(bigint) 2091 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Container < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 251 /* 5: Container < Collection: superclass typecheck marker */},
+  {(bigint) 2091 /* 6: Container < Container: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43281,14 +16125,12 @@ const classtable_elt_t VFT_AIssetAttrExpr[111] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AIssetAttrExpr < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: Container < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -43296,7 +16138,6 @@ const classtable_elt_t VFT_AIssetAttrExpr[111] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -43304,53 +16145,20 @@ const classtable_elt_t VFT_AIssetAttrExpr[111] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AIssetAttrExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AIssetAttrExpr___visit_all},
-  {(bigint) parser_prod___AIssetAttrExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AIssetAttrExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AIssetAttrExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AIssetAttrExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AIssetAttrExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AIssetAttrExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43363,83 +16171,83 @@ const classtable_elt_t VFT_AIssetAttrExpr[111] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) typing___AAttrFormExpr___prop},
-  {(bigint) typing___AAttrFormExpr___attr_type},
-  {(bigint) typing___AAttrFormExpr___do_typing},
-  {(bigint) 4 /* 101: AIssetAttrExpr < AAttrFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AAttrFormExpr___n_expr},
-  {(bigint) parser_prod___AIssetAttrExpr___n_expr__eq},
-  {(bigint) parser_nodes___AAttrFormExpr___n_id},
-  {(bigint) parser_prod___AIssetAttrExpr___n_id__eq},
-  {(bigint) parser_prod___AIssetAttrExpr___empty_init},
-  {(bigint) parser_prod___AIssetAttrExpr___init_aissetattrexpr},
-  {(bigint) 5 /* 108: AIssetAttrExpr < AIssetAttrExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AIssetAttrExpr___n_kwisset},
-  {(bigint) parser_prod___AIssetAttrExpr___n_kwisset__eq},
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 0 /* 62: Container < Collection: superclass init_table position */},
+  {(bigint) abstract_collection___Container___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) abstract_collection___Container___is_empty},
+  {(bigint) abstract_collection___Container___length},
+  {(bigint) abstract_collection___Container___has},
+  {(bigint) abstract_collection___Container___has_only},
+  {(bigint) abstract_collection___Container___count},
+  {(bigint) abstract_collection___Container___first},
+  {(bigint) 2 /* 71: Container < Container: superclass init_table position */},
+  {(bigint) abstract_collection___Container___init},
+  {(bigint) abstract_collection___Container___item},
+  {(bigint) abstract_collection___Container___item__eq},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AIssetAttrExpr::_parent */
-/* 2: Attribute AIssetAttrExpr::_first_token */
-/* 3: Attribute AIssetAttrExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AIssetAttrExpr::_is_typed */
-/* 6: Attribute AIssetAttrExpr::_stype */
-/* 7: Attribute AIssetAttrExpr::_if_true_variable_ctx */
-/* 8: Attribute AIssetAttrExpr::_if_false_variable_ctx */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AIssetAttrExpr::_prop */
-/* 15: Attribute AIssetAttrExpr::_attr_type */
-/* 16: Attribute AIssetAttrExpr::_n_expr */
-/* 17: Attribute AIssetAttrExpr::_n_id */
-/* 18: Attribute AIssetAttrExpr::_n_kwisset */
-val_t NEW_AIssetAttrExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_AIssetAttrExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AAttrFormExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AAttrFormExpr____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AIssetAttrExpr(val_t self, char *from) {
-}
-val_t NEW_AIssetAttrExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AIssetAttrExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AIssetAttrExpr(self, "parser_nodes::PNode::init for AIssetAttrExpr");
-  return self;
-}
-val_t NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___empty_init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AIssetAttrExpr();
-  parser_prod___AIssetAttrExpr___empty_init(self, init_table);
-  CHECKNEW_AIssetAttrExpr(self, "parser_prod::AIssetAttrExpr::empty_init for AIssetAttrExpr");
-  return self;
-}
-val_t NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr(val_t p0, val_t p1, val_t p2) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AIssetAttrExpr();
-  parser_prod___AIssetAttrExpr___init_aissetattrexpr(self, p0, p1, p2, init_table);
-  CHECKNEW_AIssetAttrExpr(self, "parser_prod::AIssetAttrExpr::init_aissetattrexpr for AIssetAttrExpr");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute Container::_item */
+void INIT_ATTRIBUTES__Container(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Container;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_APlusAssignOp[77] = {
-  {(bigint) 4187 /* 0: Identity */},
-  {(bigint) 3 /* 1: APlusAssignOp < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: APlusAssignOp < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: APlusAssignOp < Prod: superclass typecheck marker */},
-  {(bigint) 3863 /* 4: APlusAssignOp < PAssignOp: superclass typecheck marker */},
-  {(bigint) 4187 /* 5: APlusAssignOp < APlusAssignOp: superclass typecheck marker */},
+val_t NEW_Container(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_Container;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Container(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Container;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Container_abstract_collection___Container___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 158;
+  fra.me.meth = LOCATE_NEW_Container_abstract_collection___Container___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:158 */
+  fra.me.REG[1] = NEW_Container();
+  INIT_ATTRIBUTES__Container(fra.me.REG[1]);
+  abstract_collection___Container___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_Container(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ContainerIterator[52] = {
+  {(bigint) 2087 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ContainerIterator < Object: superclass typecheck marker */},
+  {(bigint) 175 /* 3: ContainerIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 2087 /* 4: ContainerIterator < ContainerIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43450,14 +16258,11 @@ const classtable_elt_t VFT_APlusAssignOp[77] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: APlusAssignOp < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ContainerIterator < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -43465,7 +16270,6 @@ const classtable_elt_t VFT_APlusAssignOp[77] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -43473,91 +16277,107 @@ const classtable_elt_t VFT_APlusAssignOp[77] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___APlusAssignOp___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___APlusAssignOp___visit_all},
-  {(bigint) parser_prod___APlusAssignOp___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: APlusAssignOp < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: APlusAssignOp < Prod: superclass init_table position */},
-  {(bigint) typing___APlusAssignOp___method_name},
-  {(bigint) 3 /* 71: APlusAssignOp < PAssignOp: superclass init_table position */},
-  {(bigint) parser_prod___APlusAssignOp___empty_init},
-  {(bigint) parser_prod___APlusAssignOp___init_aplusassignop},
-  {(bigint) 4 /* 74: APlusAssignOp < APlusAssignOp: superclass init_table position */},
-  {(bigint) parser_nodes___APlusAssignOp___n_pluseq},
-  {(bigint) parser_prod___APlusAssignOp___n_pluseq__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) array___Iterator___to_a},
+  {(bigint) 0 /* 46: ContainerIterator < Iterator: superclass init_table position */},
+  {(bigint) abstract_collection___ContainerIterator___item},
+  {(bigint) abstract_collection___ContainerIterator___next},
+  {(bigint) abstract_collection___ContainerIterator___is_ok},
+  {(bigint) 2 /* 50: ContainerIterator < ContainerIterator: superclass init_table position */},
+  {(bigint) abstract_collection___ContainerIterator___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute APlusAssignOp::_parent */
-/* 2: Attribute APlusAssignOp::_first_token */
-/* 3: Attribute APlusAssignOp::_last_token */
-/* 4: Attribute APlusAssignOp::_n_pluseq */
-val_t NEW_APlusAssignOp(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ContainerIterator::_is_ok */
+/* 3: Attribute ContainerIterator::_container */
+void INIT_ATTRIBUTES__ContainerIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ContainerIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:174 */
+  REGB0 = TAG_Bool(true);
+  ATTR_abstract_collection___ContainerIterator____is_ok(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ContainerIterator(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_APlusAssignOp;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___APlusAssignOp____n_pluseq(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_APlusAssignOp(val_t self, char *from) {
-}
-val_t NEW_APlusAssignOp_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APlusAssignOp();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_APlusAssignOp(self, "parser_nodes::PNode::init for APlusAssignOp");
-  return self;
-}
-val_t NEW_APlusAssignOp_parser_prod___APlusAssignOp___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APlusAssignOp();
-  parser_prod___APlusAssignOp___empty_init(self, init_table);
-  CHECKNEW_APlusAssignOp(self, "parser_prod::APlusAssignOp::empty_init for APlusAssignOp");
-  return self;
-}
-val_t NEW_APlusAssignOp_parser_prod___APlusAssignOp___init_aplusassignop(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_APlusAssignOp();
-  parser_prod___APlusAssignOp___init_aplusassignop(self, p0, init_table);
-  CHECKNEW_APlusAssignOp(self, "parser_prod::APlusAssignOp::init_aplusassignop for APlusAssignOp");
-  return self;
-}
-const classtable_elt_t VFT_AMinusAssignOp[77] = {
-  {(bigint) 4223 /* 0: Identity */},
-  {(bigint) 3 /* 1: AMinusAssignOp < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AMinusAssignOp < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AMinusAssignOp < Prod: superclass typecheck marker */},
-  {(bigint) 3863 /* 4: AMinusAssignOp < PAssignOp: superclass typecheck marker */},
-  {(bigint) 4223 /* 5: AMinusAssignOp < AMinusAssignOp: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_ContainerIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ContainerIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ContainerIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstract_collection___ContainerIterator____is_ok(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_ok", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstract_collection___ContainerIterator____container(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_container", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ContainerIterator_abstract_collection___ContainerIterator___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 172;
+  fra.me.meth = LOCATE_NEW_ContainerIterator_abstract_collection___ContainerIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:172 */
+  fra.me.REG[1] = NEW_ContainerIterator();
+  INIT_ATTRIBUTES__ContainerIterator(fra.me.REG[1]);
+  abstract_collection___ContainerIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ContainerIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_CoupleMapIterator[54] = {
+  {(bigint) 2755 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: CoupleMapIterator < Object: superclass typecheck marker */},
+  {(bigint) 175 /* 3: CoupleMapIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 1919 /* 4: CoupleMapIterator < MapIterator: superclass typecheck marker */},
+  {(bigint) 2755 /* 5: CoupleMapIterator < CoupleMapIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43568,14 +16388,10 @@ const classtable_elt_t VFT_AMinusAssignOp[77] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AMinusAssignOp < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: CoupleMapIterator < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -43583,7 +16399,6 @@ const classtable_elt_t VFT_AMinusAssignOp[77] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -43591,91 +16406,95 @@ const classtable_elt_t VFT_AMinusAssignOp[77] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AMinusAssignOp___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AMinusAssignOp___visit_all},
-  {(bigint) parser_prod___AMinusAssignOp___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AMinusAssignOp < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AMinusAssignOp < Prod: superclass init_table position */},
-  {(bigint) typing___AMinusAssignOp___method_name},
-  {(bigint) 3 /* 71: AMinusAssignOp < PAssignOp: superclass init_table position */},
-  {(bigint) parser_prod___AMinusAssignOp___empty_init},
-  {(bigint) parser_prod___AMinusAssignOp___init_aminusassignop},
-  {(bigint) 4 /* 74: AMinusAssignOp < AMinusAssignOp: superclass init_table position */},
-  {(bigint) parser_nodes___AMinusAssignOp___n_minuseq},
-  {(bigint) parser_prod___AMinusAssignOp___n_minuseq__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) array___Iterator___to_a},
+  {(bigint) 1 /* 46: CoupleMapIterator < Iterator: superclass init_table position */},
+  {(bigint) abstract_collection___CoupleMapIterator___item},
+  {(bigint) abstract_collection___CoupleMapIterator___next},
+  {(bigint) abstract_collection___CoupleMapIterator___is_ok},
+  {(bigint) 0 /* 50: CoupleMapIterator < MapIterator: superclass init_table position */},
+  {(bigint) abstract_collection___CoupleMapIterator___key},
+  {(bigint) 3 /* 52: CoupleMapIterator < CoupleMapIterator: superclass init_table position */},
+  {(bigint) abstract_collection___CoupleMapIterator___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AMinusAssignOp::_parent */
-/* 2: Attribute AMinusAssignOp::_first_token */
-/* 3: Attribute AMinusAssignOp::_last_token */
-/* 4: Attribute AMinusAssignOp::_n_minuseq */
-val_t NEW_AMinusAssignOp(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_AMinusAssignOp;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AMinusAssignOp____n_minuseq(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AMinusAssignOp(val_t self, char *from) {
-}
-val_t NEW_AMinusAssignOp_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusAssignOp();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AMinusAssignOp(self, "parser_nodes::PNode::init for AMinusAssignOp");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute CoupleMapIterator::_iter */
+void INIT_ATTRIBUTES__CoupleMapIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__CoupleMapIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusAssignOp();
-  parser_prod___AMinusAssignOp___empty_init(self, init_table);
-  CHECKNEW_AMinusAssignOp(self, "parser_prod::AMinusAssignOp::empty_init for AMinusAssignOp");
-  return self;
-}
-val_t NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___init_aminusassignop(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AMinusAssignOp();
-  parser_prod___AMinusAssignOp___init_aminusassignop(self, p0, init_table);
-  CHECKNEW_AMinusAssignOp(self, "parser_prod::AMinusAssignOp::init_aminusassignop for AMinusAssignOp");
-  return self;
+val_t NEW_CoupleMapIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_CoupleMapIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_CoupleMapIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_CoupleMapIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstract_collection___CoupleMapIterator____iter(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_AClosureDef[93] = {
-  {(bigint) 4311 /* 0: Identity */},
-  {(bigint) 3 /* 1: AClosureDef < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AClosureDef < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AClosureDef < Prod: superclass typecheck marker */},
-  {(bigint) 3847 /* 4: AClosureDef < PClosureDef: superclass typecheck marker */},
-  {(bigint) 4311 /* 5: AClosureDef < AClosureDef: superclass typecheck marker */},
+val_t NEW_CoupleMapIterator_abstract_collection___CoupleMapIterator___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 424;
+  fra.me.meth = LOCATE_NEW_CoupleMapIterator_abstract_collection___CoupleMapIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:424 */
+  fra.me.REG[1] = NEW_CoupleMapIterator();
+  INIT_ATTRIBUTES__CoupleMapIterator(fra.me.REG[1]);
+  abstract_collection___CoupleMapIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_CoupleMapIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_Couple[51] = {
+  {(bigint) 235 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Couple < Object: superclass typecheck marker */},
+  {(bigint) 235 /* 3: Couple < Couple: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43686,14 +16505,123 @@ const classtable_elt_t VFT_AClosureDef[93] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Couple < Object: superclass init_table position */},
+  {(bigint) kernel___Object___object_id},
+  {(bigint) kernel___Object___is_same_type},
+  {(bigint) kernel___Object_____eqeq},
+  {(bigint) kernel___Object_____neq},
+  {(bigint) kernel___Object___output},
+  {(bigint) kernel___Object___exit},
+  {(bigint) kernel___Object___sys},
+  {(bigint) file___Object___printn},
+  {(bigint) file___Object___print},
+  {(bigint) file___Object___getc},
+  {(bigint) file___Object___gets},
+  {(bigint) file___Object___stdin},
+  {(bigint) file___Object___stdout},
+  {(bigint) file___Object___stderr},
   {(bigint) string___Object___to_s},
   {(bigint) string___Object___inspect},
   {(bigint) string___Object___inspect_head},
   {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AClosureDef < Object: superclass init_table position */},
+  {(bigint) hash___Object___hash},
+  {(bigint) math___Object___atan2},
+  {(bigint) math___Object___pi},
+  {(bigint) math___Object___srand_from},
+  {(bigint) math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: Couple < Couple: superclass init_table position */},
+  {(bigint) abstract_collection___Couple___first},
+  {(bigint) abstract_collection___Couple___first__eq},
+  {(bigint) abstract_collection___Couple___second},
+  {(bigint) abstract_collection___Couple___second__eq},
+  {(bigint) abstract_collection___Couple___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Couple::_first */
+/* 3: Attribute Couple::_second */
+void INIT_ATTRIBUTES__Couple(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Couple;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Couple(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_Couple;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Couple(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Couple;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Couple_abstract_collection___Couple___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 438;
+  fra.me.meth = LOCATE_NEW_Couple_abstract_collection___Couple___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//abstract_collection.nit:438 */
+  fra.me.REG[2] = NEW_Couple();
+  INIT_ATTRIBUTES__Couple(fra.me.REG[2]);
+  abstract_collection___Couple___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_Couple(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_Range[76] = {
+  {(bigint) 1843 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Range < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 251 /* 5: Range < Collection: superclass typecheck marker */},
+  {(bigint) 1843 /* 6: Range < Range: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: Range < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -43701,7 +16629,6 @@ const classtable_elt_t VFT_AClosureDef[93] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -43709,118 +16636,155 @@ const classtable_elt_t VFT_AClosureDef[93] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AClosureDef___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AClosureDef___visit_all},
-  {(bigint) parser_prod___AClosureDef___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AClosureDef < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PClosureDef___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AClosureDef < Prod: superclass init_table position */},
-  {(bigint) compiling_methods___AClosureDef___compile_closure},
-  {(bigint) compiling_methods___AClosureDef___do_compile_inside},
-  {(bigint) typing___PClosureDef___escapable},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___AClosureDef___accept_typing2},
-  {(bigint) syntax_base___PClosureDef___closure},
-  {(bigint) syntax_base___PClosureDef___closure__eq},
-  {(bigint) syntax_base___PClosureDef___variables},
-  {(bigint) syntax_base___PClosureDef___variables__eq},
-  {(bigint) 3 /* 79: AClosureDef < PClosureDef: superclass init_table position */},
-  {(bigint) compiling_methods___AClosureDef___cname},
-  {(bigint) compiling_methods___AClosureDef___decl_csignature},
-  {(bigint) parser_prod___AClosureDef___empty_init},
-  {(bigint) parser_prod___AClosureDef___init_aclosuredef},
-  {(bigint) 4 /* 84: AClosureDef < AClosureDef: superclass init_table position */},
-  {(bigint) parser_nodes___AClosureDef___n_kwwith},
-  {(bigint) parser_prod___AClosureDef___n_kwwith__eq},
-  {(bigint) parser_nodes___AClosureDef___n_id},
-  {(bigint) parser_nodes___AClosureDef___n_id__eq},
-  {(bigint) parser_nodes___AClosureDef___n_kwdo},
-  {(bigint) parser_prod___AClosureDef___n_kwdo__eq},
-  {(bigint) parser_nodes___AClosureDef___n_expr},
-  {(bigint) parser_prod___AClosureDef___n_expr__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AClosureDef::_parent */
-/* 2: Attribute AClosureDef::_first_token */
-/* 3: Attribute AClosureDef::_last_token */
-/* 4: Attribute AClosureDef::_escapable */
-/* 5: Attribute AClosureDef::_accept_typing2 */
-/* 6: Attribute AClosureDef::_closure */
-/* 7: Attribute AClosureDef::_variables */
-/* 8: Attribute AClosureDef::_cname */
-/* 9: Attribute AClosureDef::_n_kwwith */
-/* 10: Attribute AClosureDef::_n_id */
-/* 11: Attribute AClosureDef::_n_kwdo */
-/* 12: Attribute AClosureDef::_n_expr */
-val_t NEW_AClosureDef(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_AClosureDef;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AClosureDef____n_kwwith(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClosureDef____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClosureDef____n_kwdo(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AClosureDef____n_expr(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AClosureDef(val_t self, char *from) {
-}
-val_t NEW_AClosureDef_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AClosureDef();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AClosureDef(self, "parser_nodes::PNode::init for AClosureDef");
-  return self;
-}
-val_t NEW_AClosureDef_parser_prod___AClosureDef___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AClosureDef();
-  parser_prod___AClosureDef___empty_init(self, init_table);
-  CHECKNEW_AClosureDef(self, "parser_prod::AClosureDef::empty_init for AClosureDef");
-  return self;
-}
-val_t NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AClosureDef();
-  parser_prod___AClosureDef___init_aclosuredef(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_AClosureDef(self, "parser_prod::AClosureDef::init_aclosuredef for AClosureDef");
-  return self;
-}
-const classtable_elt_t VFT_AQualified[78] = {
-  {(bigint) 4163 /* 0: Identity */},
-  {(bigint) 3 /* 1: AQualified < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AQualified < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AQualified < Prod: superclass typecheck marker */},
-  {(bigint) 3807 /* 4: AQualified < PQualified: superclass typecheck marker */},
-  {(bigint) 4163 /* 5: AQualified < AQualified: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 0 /* 62: Range < Collection: superclass init_table position */},
+  {(bigint) range___Range___iterator},
+  {(bigint) range___Range___iterate},
+  {(bigint) range___Range___is_empty},
+  {(bigint) range___Range___length},
+  {(bigint) range___Range___has},
+  {(bigint) range___Range___has_only},
+  {(bigint) range___Range___count},
+  {(bigint) range___Range___first},
+  {(bigint) 2 /* 71: Range < Range: superclass init_table position */},
+  {(bigint) range___Range___last},
+  {(bigint) range___Range___after},
+  {(bigint) range___Range___init},
+  {(bigint) range___Range___without_last},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Range::_first */
+/* 3: Attribute Range::_last */
+/* 4: Attribute Range::_after */
+void INIT_ATTRIBUTES__Range(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Range;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Range(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_Range;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Range(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Range;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_range___Range____first(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_first", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_range___Range____last(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_last", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_range___Range____after(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_after", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Range_range___Range___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 68;
+  fra.me.meth = LOCATE_NEW_Range_range___Range___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//range.nit:68 */
+  fra.me.REG[2] = NEW_Range();
+  INIT_ATTRIBUTES__Range(fra.me.REG[2]);
+  range___Range___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_Range(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_Range_range___Range___without_last(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 77;
+  fra.me.meth = LOCATE_NEW_Range_range___Range___without_last;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//range.nit:77 */
+  fra.me.REG[2] = NEW_Range();
+  INIT_ATTRIBUTES__Range(fra.me.REG[2]);
+  range___Range___without_last(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_Range(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_IteratorRange[52] = {
+  {(bigint) 1987 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IteratorRange < Object: superclass typecheck marker */},
+  {(bigint) 175 /* 3: IteratorRange < Iterator: superclass typecheck marker */},
+  {(bigint) 1987 /* 4: IteratorRange < IteratorRange: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43831,14 +16795,11 @@ const classtable_elt_t VFT_AQualified[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AQualified < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: IteratorRange < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -43846,7 +16807,6 @@ const classtable_elt_t VFT_AQualified[78] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -43854,112 +16814,115 @@ const classtable_elt_t VFT_AQualified[78] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___AQualified___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___AQualified___visit_all},
-  {(bigint) parser_prod___AQualified___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AQualified < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AQualified < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: AQualified < PQualified: superclass init_table position */},
-  {(bigint) parser_prod___AQualified___empty_init},
-  {(bigint) parser_prod___AQualified___init_aqualified},
-  {(bigint) 4 /* 73: AQualified < AQualified: superclass init_table position */},
-  {(bigint) parser_nodes___AQualified___n_id},
-  {(bigint) parser_nodes___AQualified___n_id__eq},
-  {(bigint) parser_nodes___AQualified___n_classid},
-  {(bigint) parser_prod___AQualified___n_classid__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) array___Iterator___to_a},
+  {(bigint) 0 /* 46: IteratorRange < Iterator: superclass init_table position */},
+  {(bigint) range___IteratorRange___item},
+  {(bigint) range___IteratorRange___next},
+  {(bigint) range___IteratorRange___is_ok},
+  {(bigint) 2 /* 50: IteratorRange < IteratorRange: superclass init_table position */},
+  {(bigint) range___IteratorRange___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AQualified::_parent */
-/* 2: Attribute AQualified::_first_token */
-/* 3: Attribute AQualified::_last_token */
-/* 4: Attribute AQualified::_n_id */
-/* 5: Attribute AQualified::_n_classid */
-val_t NEW_AQualified(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_AQualified;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___AQualified____n_id(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AQualified____n_classid(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AQualified(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute IteratorRange::_range */
+/* 3: Attribute IteratorRange::_item */
+void INIT_ATTRIBUTES__IteratorRange(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IteratorRange;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_AQualified_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AQualified();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AQualified(self, "parser_nodes::PNode::init for AQualified");
-  return self;
-}
-val_t NEW_AQualified_parser_prod___AQualified___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AQualified();
-  parser_prod___AQualified___empty_init(self, init_table);
-  CHECKNEW_AQualified(self, "parser_prod::AQualified::empty_init for AQualified");
-  return self;
-}
-val_t NEW_AQualified_parser_prod___AQualified___init_aqualified(val_t p0, val_t p1) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AQualified();
-  parser_prod___AQualified___init_aqualified(self, p0, p1, init_table);
-  CHECKNEW_AQualified(self, "parser_prod::AQualified::init_aqualified for AQualified");
-  return self;
-}
-const classtable_elt_t VFT_ADoc[76] = {
-  {(bigint) 4291 /* 0: Identity */},
-  {(bigint) 3 /* 1: ADoc < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ADoc < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ADoc < Prod: superclass typecheck marker */},
-  {(bigint) 3843 /* 4: ADoc < PDoc: superclass typecheck marker */},
-  {(bigint) 4291 /* 5: ADoc < ADoc: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_IteratorRange(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_IteratorRange;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IteratorRange(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IteratorRange;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_range___IteratorRange____range(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_range", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_range___IteratorRange____item(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_item", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IteratorRange_range___IteratorRange___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 97;
+  fra.me.meth = LOCATE_NEW_IteratorRange_range___IteratorRange___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//range.nit:97 */
+  fra.me.REG[1] = NEW_IteratorRange();
+  INIT_ATTRIBUTES__IteratorRange(fra.me.REG[1]);
+  range___IteratorRange___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IteratorRange(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_List[105] = {
+  {(bigint) 3275 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: List < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 251 /* 5: List < Collection: superclass typecheck marker */},
+  {(bigint) 327 /* 6: List < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 1915 /* 7: List < MapRead: superclass typecheck marker */},
+  {(bigint) 2543 /* 8: List < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 2547 /* 9: List < SequenceRead: superclass typecheck marker */},
+  {(bigint) 2587 /* 10: List < Map: superclass typecheck marker */},
+  {(bigint) 2915 /* 11: List < Sequence: superclass typecheck marker */},
+  {(bigint) 3275 /* 12: List < List: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ADoc < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 7 /* 19: List < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -43967,7 +16930,6 @@ const classtable_elt_t VFT_ADoc[76] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -43975,90 +16937,161 @@ const classtable_elt_t VFT_ADoc[76] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ADoc___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ADoc___visit_all},
-  {(bigint) parser_prod___ADoc___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ADoc < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ADoc < Prod: superclass init_table position */},
-  {(bigint) 3 /* 70: ADoc < PDoc: superclass init_table position */},
-  {(bigint) parser_prod___ADoc___empty_init},
-  {(bigint) parser_prod___ADoc___init_adoc},
-  {(bigint) 4 /* 73: ADoc < ADoc: superclass init_table position */},
-  {(bigint) parser_nodes___ADoc___n_comment},
-  {(bigint) parser_nodes___ADoc___n_comment__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 6 /* 62: List < Collection: superclass init_table position */},
+  {(bigint) list___List___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) list___List___is_empty},
+  {(bigint) list___List___length},
+  {(bigint) list___List___has},
+  {(bigint) list___List___has_only},
+  {(bigint) list___List___count},
+  {(bigint) list___List___first},
+  {(bigint) 5 /* 71: List < RemovableCollection: superclass init_table position */},
+  {(bigint) list___List___clear},
+  {(bigint) list___List___remove},
+  {(bigint) abstract_collection___RemovableCollection___remove_all},
+  {(bigint) 3 /* 75: List < MapRead: superclass init_table position */},
+  {(bigint) list___List_____bra},
+  {(bigint) list___List___has_key},
+  {(bigint) 4 /* 78: List < SimpleCollection: superclass init_table position */},
+  {(bigint) abstract_collection___Sequence___add},
+  {(bigint) abstract_collection___SimpleCollection___add_all},
+  {(bigint) 1 /* 81: List < SequenceRead: superclass init_table position */},
+  {(bigint) list___List___last},
+  {(bigint) abstract_collection___SequenceRead___index_of},
+  {(bigint) string___Map___map_join},
+  {(bigint) 2 /* 85: List < Map: superclass init_table position */},
+  {(bigint) list___List_____braeq},
+  {(bigint) list___List___remove_at},
+  {(bigint) abstract_collection___Map___recover_with},
+  {(bigint) 0 /* 89: List < Sequence: superclass init_table position */},
+  {(bigint) list___List___first__eq},
+  {(bigint) list___List___last__eq},
+  {(bigint) list___List___push},
+  {(bigint) abstract_collection___Sequence___append},
+  {(bigint) list___List___pop},
+  {(bigint) list___List___unshift},
+  {(bigint) list___List___shift},
+  {(bigint) 8 /* 97: List < List: superclass init_table position */},
+  {(bigint) list___List___link},
+  {(bigint) list___List___init},
+  {(bigint) list___List___from},
+  {(bigint) list___List___get_node},
+  {(bigint) list___List___search_node_after},
+  {(bigint) list___List___remove_node},
+  {(bigint) list___List___insert_before},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute ADoc::_parent */
-/* 2: Attribute ADoc::_first_token */
-/* 3: Attribute ADoc::_last_token */
-/* 4: Attribute ADoc::_n_comment */
-val_t NEW_ADoc(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_ADoc;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ADoc____n_comment(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ADoc(val_t self, char *from) {
-}
-val_t NEW_ADoc_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ADoc();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ADoc(self, "parser_nodes::PNode::init for ADoc");
-  return self;
-}
-val_t NEW_ADoc_parser_prod___ADoc___empty_init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ADoc();
-  parser_prod___ADoc___empty_init(self, init_table);
-  CHECKNEW_ADoc(self, "parser_prod::ADoc::empty_init for ADoc");
-  return self;
-}
-val_t NEW_ADoc_parser_prod___ADoc___init_adoc(val_t p0) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ADoc();
-  parser_prod___ADoc___init_adoc(self, p0, init_table);
-  CHECKNEW_ADoc(self, "parser_prod::ADoc::init_adoc for ADoc");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute List::_head */
+/* 3: Attribute List::_tail */
+void INIT_ATTRIBUTES__List(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__List;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_Start[76] = {
-  {(bigint) 3775 /* 0: Identity */},
-  {(bigint) 3 /* 1: Start < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: Start < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: Start < Prod: superclass typecheck marker */},
-  {(bigint) 3775 /* 4: Start < Start: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_List(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_List;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_List(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_List;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_List_list___List___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 175;
+  fra.me.meth = LOCATE_NEW_List_list___List___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//collection//list.nit:175 */
+  fra.me.REG[0] = NEW_List();
+  INIT_ATTRIBUTES__List(fra.me.REG[0]);
+  list___List___init(fra.me.REG[0], init_table);
+  CHECKNEW_List(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_List_list___List___from(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 178;
+  fra.me.meth = LOCATE_NEW_List_list___List___from;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//list.nit:178 */
+  fra.me.REG[1] = NEW_List();
+  INIT_ATTRIBUTES__List(fra.me.REG[1]);
+  list___List___from(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_List(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ListIterator[59] = {
+  {(bigint) 2931 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ListIterator < Object: superclass typecheck marker */},
+  {(bigint) 175 /* 3: ListIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 1919 /* 4: ListIterator < MapIterator: superclass typecheck marker */},
+  {(bigint) 2627 /* 5: ListIterator < IndexedIterator: superclass typecheck marker */},
+  {(bigint) 2931 /* 6: ListIterator < ListIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44069,14 +17102,9 @@ const classtable_elt_t VFT_Start[76] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Start < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: ListIterator < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -44084,7 +17112,6 @@ const classtable_elt_t VFT_Start[76] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -44092,84 +17119,111 @@ const classtable_elt_t VFT_Start[76] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___Start___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___Start___visit_all},
-  {(bigint) parser_prod___Start___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: Start < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: Start < Prod: superclass init_table position */},
-  {(bigint) parser_prod___Start___init},
-  {(bigint) 3 /* 71: Start < Start: superclass init_table position */},
-  {(bigint) parser_nodes___Start___n_base},
-  {(bigint) parser_nodes___Start___n_base__eq},
-  {(bigint) parser_nodes___Start___n_eof},
-  {(bigint) parser_nodes___Start___n_eof__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Start::_parent */
-/* 2: Attribute Start::_first_token */
-/* 3: Attribute Start::_last_token */
-/* 4: Attribute Start::_n_base */
-/* 5: Attribute Start::_n_eof */
-val_t NEW_Start(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) array___Iterator___to_a},
+  {(bigint) 2 /* 46: ListIterator < Iterator: superclass init_table position */},
+  {(bigint) list___ListIterator___item},
+  {(bigint) list___ListIterator___next},
+  {(bigint) list___ListIterator___is_ok},
+  {(bigint) 1 /* 50: ListIterator < MapIterator: superclass init_table position */},
+  {(bigint) abstract_collection___IndexedIterator___key},
+  {(bigint) 0 /* 52: ListIterator < IndexedIterator: superclass init_table position */},
+  {(bigint) list___ListIterator___index},
+  {(bigint) 4 /* 54: ListIterator < ListIterator: superclass init_table position */},
+  {(bigint) list___ListIterator___item__eq},
+  {(bigint) list___ListIterator___init},
+  {(bigint) list___ListIterator___delete},
+  {(bigint) list___ListIterator___insert_before},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ListIterator::_list */
+/* 3: Attribute ListIterator::_node */
+/* 4: Attribute ListIterator::_index */
+void INIT_ATTRIBUTES__ListIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ListIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ListIterator(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_Start;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Start(val_t self, char *from) {
-}
-val_t NEW_Start_parser_nodes___PNode___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_Start();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_Start(self, "parser_nodes::PNode::init for Start");
-  return self;
-}
-val_t NEW_Start_parser_prod___Start___init(val_t p0, val_t p1) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_Start();
-  parser_prod___Start___init(self, p0, p1, init_table);
-  CHECKNEW_Start(self, "parser_prod::Start::init for Start");
-  return self;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_ListIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ListIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ListIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_list___ListIterator____list(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_list", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_list___ListIterator____index(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_index", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_Lexer[55] = {
-  {(bigint) 135 /* 0: Identity */},
-  {(bigint) 3 /* 1: Lexer < Object: superclass typecheck marker */},
-  {(bigint) 135 /* 2: Lexer < Lexer: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ListIterator_list___ListIterator___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 258;
+  fra.me.meth = LOCATE_NEW_ListIterator_list___ListIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//list.nit:258 */
+  fra.me.REG[1] = NEW_ListIterator();
+  INIT_ATTRIBUTES__ListIterator(fra.me.REG[1]);
+  list___ListIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ListIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ListNode[81] = {
+  {(bigint) 2623 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ListNode < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 251 /* 5: ListNode < Collection: superclass typecheck marker */},
+  {(bigint) 2091 /* 6: ListNode < Container: superclass typecheck marker */},
+  {(bigint) 2623 /* 7: ListNode < ListNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44179,14 +17233,9 @@ const classtable_elt_t VFT_Lexer[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Lexer < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ListNode < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -44194,7 +17243,6 @@ const classtable_elt_t VFT_Lexer[55] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -44202,65 +17250,17 @@ const classtable_elt_t VFT_Lexer[55] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: Lexer < Lexer: superclass init_table position */},
-  {(bigint) lexer___Lexer___filename},
-  {(bigint) lexer___Lexer___state_initial},
-  {(bigint) lexer___Lexer___init},
-  {(bigint) lexer___Lexer___peek},
-  {(bigint) lexer___Lexer___next},
-  {(bigint) lexer___Lexer___get_token},
-  {(bigint) lexer___Lexer___get_char},
-  {(bigint) lexer___Lexer___push_back},
-  {(bigint) lexer___Lexer___build_goto_table},
-  {(bigint) lexer___Lexer___nil_array},
-  {(bigint) lexer___Lexer___build_accept_table},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute Lexer::_token */
-/* 2: Attribute Lexer::_state */
-/* 3: Attribute Lexer::_filename */
-/* 4: Attribute Lexer::_stream */
-/* 5: Attribute Lexer::_stream_buf */
-/* 6: Attribute Lexer::_stream_pos */
-/* 7: Attribute Lexer::_line */
-/* 8: Attribute Lexer::_pos */
-/* 9: Attribute Lexer::_cr */
-/* 10: Attribute Lexer::_eof */
-/* 11: Attribute Lexer::_text */
-/* 12: Attribute Lexer::_goto_table */
-/* 13: Attribute Lexer::_accept_table */
-val_t NEW_Lexer(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 14);
-  obj->vft = (classtable_elt_t*)VFT_Lexer;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_lexer___Lexer____state(obj) =  TAG_Int(0);
-  ATTR_lexer___Lexer____line(obj) =  TAG_Int(0);
-  ATTR_lexer___Lexer____pos(obj) =  TAG_Int(0);
-  ATTR_lexer___Lexer____cr(obj) =  TAG_Bool(false);
-  ATTR_lexer___Lexer____eof(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Lexer(val_t self, char *from) {
-}
-val_t NEW_Lexer_lexer___Lexer___init(val_t p0, val_t p1) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Lexer();
-  lexer___Lexer___init(self, p0, p1, init_table);
-  CHECKNEW_Lexer(self, "lexer::Lexer::init for Lexer");
-  return self;
-}
-const classtable_elt_t VFT_Visitor[46] = {
-  {(bigint) 7 /* 0: Identity */},
-  {(bigint) 3 /* 1: Visitor < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 2: Visitor < Visitor: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44274,90 +17274,115 @@ const classtable_elt_t VFT_Visitor[46] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Visitor < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: Visitor < Visitor: superclass init_table position */},
-  {(bigint) parser_prod___Visitor___visit},
-  {(bigint) parser_prod___Visitor___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 0 /* 62: ListNode < Collection: superclass init_table position */},
+  {(bigint) abstract_collection___Container___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) abstract_collection___Container___is_empty},
+  {(bigint) abstract_collection___Container___length},
+  {(bigint) abstract_collection___Container___has},
+  {(bigint) abstract_collection___Container___has_only},
+  {(bigint) abstract_collection___Container___count},
+  {(bigint) abstract_collection___Container___first},
+  {(bigint) 2 /* 71: ListNode < Container: superclass init_table position */},
+  {(bigint) abstract_collection___Container___init},
+  {(bigint) abstract_collection___Container___item},
+  {(bigint) abstract_collection___Container___item__eq},
+  {(bigint) 3 /* 75: ListNode < ListNode: superclass init_table position */},
+  {(bigint) list___ListNode___init},
+  {(bigint) list___ListNode___next},
+  {(bigint) list___ListNode___next__eq},
+  {(bigint) list___ListNode___prev},
+  {(bigint) list___ListNode___prev__eq},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_Visitor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ListNode::_item */
+/* 3: Attribute ListNode::_next */
+/* 4: Attribute ListNode::_prev */
+void INIT_ATTRIBUTES__ListNode(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ListNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ListNode(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_Visitor;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Visitor(val_t self, char *from) {
-}
-val_t NEW_Visitor_parser_prod___Visitor___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Visitor();
-  parser_prod___Visitor___init(self, init_table);
-  CHECKNEW_Visitor(self, "parser_prod::Visitor::init for Visitor");
-  return self;
-}
-const classtable_elt_t VFT_ParserTable[1561] = {
-  {(bigint) 59 /* 0: Identity */},
-  {(bigint) 3 /* 1: ParserTable < Object: superclass typecheck marker */},
-  {(bigint) 59 /* 2: ParserTable < ParserTable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_ListNode;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ListNode(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ListNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ListNode_list___ListNode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 291;
+  fra.me.meth = LOCATE_NEW_ListNode_list___ListNode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//list.nit:291 */
+  fra.me.REG[1] = NEW_ListNode();
+  INIT_ATTRIBUTES__ListNode(fra.me.REG[1]);
+  list___ListNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ListNode(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AbstractArrayRead[104] = {
+  {(bigint) 2979 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AbstractArrayRead < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 251 /* 5: AbstractArrayRead < Collection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 1915 /* 7: AbstractArrayRead < MapRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2547 /* 9: AbstractArrayRead < SequenceRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 2979 /* 12: AbstractArrayRead < AbstractArrayRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ParserTable < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: AbstractArrayRead < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
+  {(bigint) array___AbstractArrayRead_____eqeq},
   {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
+  {(bigint) array___AbstractArrayRead___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -44365,1557 +17390,17 @@ const classtable_elt_t VFT_ParserTable[1561] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ParserTable < ParserTable: superclass init_table position */},
-  {(bigint) parser_tables___ParserTable___build_action_table},
-  {(bigint) parser_tables___ParserTable___action_table_row1},
-  {(bigint) parser_tables___ParserTable___action_table_row2},
-  {(bigint) parser_tables___ParserTable___action_table_row3},
-  {(bigint) parser_tables___ParserTable___action_table_row4},
-  {(bigint) parser_tables___ParserTable___action_table_row5},
-  {(bigint) parser_tables___ParserTable___action_table_row6},
-  {(bigint) parser_tables___ParserTable___action_table_row7},
-  {(bigint) parser_tables___ParserTable___action_table_row8},
-  {(bigint) parser_tables___ParserTable___action_table_row9},
-  {(bigint) parser_tables___ParserTable___action_table_row10},
-  {(bigint) parser_tables___ParserTable___action_table_row11},
-  {(bigint) parser_tables___ParserTable___action_table_row12},
-  {(bigint) parser_tables___ParserTable___action_table_row13},
-  {(bigint) parser_tables___ParserTable___action_table_row14},
-  {(bigint) parser_tables___ParserTable___action_table_row15},
-  {(bigint) parser_tables___ParserTable___action_table_row16},
-  {(bigint) parser_tables___ParserTable___action_table_row17},
-  {(bigint) parser_tables___ParserTable___action_table_row18},
-  {(bigint) parser_tables___ParserTable___action_table_row19},
-  {(bigint) parser_tables___ParserTable___action_table_row20},
-  {(bigint) parser_tables___ParserTable___action_table_row21},
-  {(bigint) parser_tables___ParserTable___action_table_row22},
-  {(bigint) parser_tables___ParserTable___action_table_row23},
-  {(bigint) parser_tables___ParserTable___action_table_row24},
-  {(bigint) parser_tables___ParserTable___action_table_row25},
-  {(bigint) parser_tables___ParserTable___action_table_row26},
-  {(bigint) parser_tables___ParserTable___action_table_row27},
-  {(bigint) parser_tables___ParserTable___action_table_row28},
-  {(bigint) parser_tables___ParserTable___action_table_row29},
-  {(bigint) parser_tables___ParserTable___action_table_row30},
-  {(bigint) parser_tables___ParserTable___action_table_row31},
-  {(bigint) parser_tables___ParserTable___action_table_row32},
-  {(bigint) parser_tables___ParserTable___action_table_row33},
-  {(bigint) parser_tables___ParserTable___action_table_row34},
-  {(bigint) parser_tables___ParserTable___action_table_row35},
-  {(bigint) parser_tables___ParserTable___action_table_row36},
-  {(bigint) parser_tables___ParserTable___action_table_row37},
-  {(bigint) parser_tables___ParserTable___action_table_row38},
-  {(bigint) parser_tables___ParserTable___action_table_row39},
-  {(bigint) parser_tables___ParserTable___action_table_row40},
-  {(bigint) parser_tables___ParserTable___action_table_row41},
-  {(bigint) parser_tables___ParserTable___action_table_row42},
-  {(bigint) parser_tables___ParserTable___action_table_row43},
-  {(bigint) parser_tables___ParserTable___action_table_row44},
-  {(bigint) parser_tables___ParserTable___action_table_row45},
-  {(bigint) parser_tables___ParserTable___action_table_row46},
-  {(bigint) parser_tables___ParserTable___action_table_row47},
-  {(bigint) parser_tables___ParserTable___action_table_row48},
-  {(bigint) parser_tables___ParserTable___action_table_row49},
-  {(bigint) parser_tables___ParserTable___action_table_row50},
-  {(bigint) parser_tables___ParserTable___action_table_row51},
-  {(bigint) parser_tables___ParserTable___action_table_row52},
-  {(bigint) parser_tables___ParserTable___action_table_row53},
-  {(bigint) parser_tables___ParserTable___action_table_row54},
-  {(bigint) parser_tables___ParserTable___action_table_row55},
-  {(bigint) parser_tables___ParserTable___action_table_row56},
-  {(bigint) parser_tables___ParserTable___action_table_row57},
-  {(bigint) parser_tables___ParserTable___action_table_row58},
-  {(bigint) parser_tables___ParserTable___action_table_row59},
-  {(bigint) parser_tables___ParserTable___action_table_row60},
-  {(bigint) parser_tables___ParserTable___action_table_row61},
-  {(bigint) parser_tables___ParserTable___action_table_row62},
-  {(bigint) parser_tables___ParserTable___action_table_row63},
-  {(bigint) parser_tables___ParserTable___action_table_row64},
-  {(bigint) parser_tables___ParserTable___action_table_row65},
-  {(bigint) parser_tables___ParserTable___action_table_row66},
-  {(bigint) parser_tables___ParserTable___action_table_row67},
-  {(bigint) parser_tables___ParserTable___action_table_row68},
-  {(bigint) parser_tables___ParserTable___action_table_row69},
-  {(bigint) parser_tables___ParserTable___action_table_row70},
-  {(bigint) parser_tables___ParserTable___action_table_row71},
-  {(bigint) parser_tables___ParserTable___action_table_row72},
-  {(bigint) parser_tables___ParserTable___action_table_row73},
-  {(bigint) parser_tables___ParserTable___action_table_row74},
-  {(bigint) parser_tables___ParserTable___action_table_row75},
-  {(bigint) parser_tables___ParserTable___action_table_row76},
-  {(bigint) parser_tables___ParserTable___action_table_row77},
-  {(bigint) parser_tables___ParserTable___action_table_row78},
-  {(bigint) parser_tables___ParserTable___action_table_row79},
-  {(bigint) parser_tables___ParserTable___action_table_row80},
-  {(bigint) parser_tables___ParserTable___action_table_row81},
-  {(bigint) parser_tables___ParserTable___action_table_row82},
-  {(bigint) parser_tables___ParserTable___action_table_row83},
-  {(bigint) parser_tables___ParserTable___action_table_row84},
-  {(bigint) parser_tables___ParserTable___action_table_row85},
-  {(bigint) parser_tables___ParserTable___action_table_row86},
-  {(bigint) parser_tables___ParserTable___action_table_row87},
-  {(bigint) parser_tables___ParserTable___action_table_row88},
-  {(bigint) parser_tables___ParserTable___action_table_row89},
-  {(bigint) parser_tables___ParserTable___action_table_row90},
-  {(bigint) parser_tables___ParserTable___action_table_row91},
-  {(bigint) parser_tables___ParserTable___action_table_row92},
-  {(bigint) parser_tables___ParserTable___action_table_row93},
-  {(bigint) parser_tables___ParserTable___action_table_row94},
-  {(bigint) parser_tables___ParserTable___action_table_row95},
-  {(bigint) parser_tables___ParserTable___action_table_row96},
-  {(bigint) parser_tables___ParserTable___action_table_row97},
-  {(bigint) parser_tables___ParserTable___action_table_row98},
-  {(bigint) parser_tables___ParserTable___action_table_row99},
-  {(bigint) parser_tables___ParserTable___action_table_row100},
-  {(bigint) parser_tables___ParserTable___action_table_row101},
-  {(bigint) parser_tables___ParserTable___action_table_row102},
-  {(bigint) parser_tables___ParserTable___action_table_row103},
-  {(bigint) parser_tables___ParserTable___action_table_row104},
-  {(bigint) parser_tables___ParserTable___action_table_row105},
-  {(bigint) parser_tables___ParserTable___action_table_row106},
-  {(bigint) parser_tables___ParserTable___action_table_row107},
-  {(bigint) parser_tables___ParserTable___action_table_row108},
-  {(bigint) parser_tables___ParserTable___action_table_row109},
-  {(bigint) parser_tables___ParserTable___action_table_row110},
-  {(bigint) parser_tables___ParserTable___action_table_row111},
-  {(bigint) parser_tables___ParserTable___action_table_row112},
-  {(bigint) parser_tables___ParserTable___action_table_row113},
-  {(bigint) parser_tables___ParserTable___action_table_row114},
-  {(bigint) parser_tables___ParserTable___action_table_row115},
-  {(bigint) parser_tables___ParserTable___action_table_row116},
-  {(bigint) parser_tables___ParserTable___action_table_row117},
-  {(bigint) parser_tables___ParserTable___action_table_row118},
-  {(bigint) parser_tables___ParserTable___action_table_row119},
-  {(bigint) parser_tables___ParserTable___action_table_row120},
-  {(bigint) parser_tables___ParserTable___action_table_row121},
-  {(bigint) parser_tables___ParserTable___action_table_row122},
-  {(bigint) parser_tables___ParserTable___action_table_row123},
-  {(bigint) parser_tables___ParserTable___action_table_row124},
-  {(bigint) parser_tables___ParserTable___action_table_row125},
-  {(bigint) parser_tables___ParserTable___action_table_row126},
-  {(bigint) parser_tables___ParserTable___action_table_row127},
-  {(bigint) parser_tables___ParserTable___action_table_row128},
-  {(bigint) parser_tables___ParserTable___action_table_row129},
-  {(bigint) parser_tables___ParserTable___action_table_row130},
-  {(bigint) parser_tables___ParserTable___action_table_row131},
-  {(bigint) parser_tables___ParserTable___action_table_row132},
-  {(bigint) parser_tables___ParserTable___action_table_row133},
-  {(bigint) parser_tables___ParserTable___action_table_row134},
-  {(bigint) parser_tables___ParserTable___action_table_row135},
-  {(bigint) parser_tables___ParserTable___action_table_row136},
-  {(bigint) parser_tables___ParserTable___action_table_row137},
-  {(bigint) parser_tables___ParserTable___action_table_row138},
-  {(bigint) parser_tables___ParserTable___action_table_row139},
-  {(bigint) parser_tables___ParserTable___action_table_row140},
-  {(bigint) parser_tables___ParserTable___action_table_row141},
-  {(bigint) parser_tables___ParserTable___action_table_row142},
-  {(bigint) parser_tables___ParserTable___action_table_row143},
-  {(bigint) parser_tables___ParserTable___action_table_row144},
-  {(bigint) parser_tables___ParserTable___action_table_row145},
-  {(bigint) parser_tables___ParserTable___action_table_row146},
-  {(bigint) parser_tables___ParserTable___action_table_row147},
-  {(bigint) parser_tables___ParserTable___action_table_row148},
-  {(bigint) parser_tables___ParserTable___action_table_row149},
-  {(bigint) parser_tables___ParserTable___action_table_row150},
-  {(bigint) parser_tables___ParserTable___action_table_row151},
-  {(bigint) parser_tables___ParserTable___action_table_row152},
-  {(bigint) parser_tables___ParserTable___action_table_row153},
-  {(bigint) parser_tables___ParserTable___action_table_row154},
-  {(bigint) parser_tables___ParserTable___action_table_row155},
-  {(bigint) parser_tables___ParserTable___action_table_row156},
-  {(bigint) parser_tables___ParserTable___action_table_row157},
-  {(bigint) parser_tables___ParserTable___action_table_row158},
-  {(bigint) parser_tables___ParserTable___action_table_row159},
-  {(bigint) parser_tables___ParserTable___action_table_row160},
-  {(bigint) parser_tables___ParserTable___action_table_row161},
-  {(bigint) parser_tables___ParserTable___action_table_row162},
-  {(bigint) parser_tables___ParserTable___action_table_row163},
-  {(bigint) parser_tables___ParserTable___action_table_row164},
-  {(bigint) parser_tables___ParserTable___action_table_row165},
-  {(bigint) parser_tables___ParserTable___action_table_row166},
-  {(bigint) parser_tables___ParserTable___action_table_row167},
-  {(bigint) parser_tables___ParserTable___action_table_row168},
-  {(bigint) parser_tables___ParserTable___action_table_row169},
-  {(bigint) parser_tables___ParserTable___action_table_row170},
-  {(bigint) parser_tables___ParserTable___action_table_row171},
-  {(bigint) parser_tables___ParserTable___action_table_row172},
-  {(bigint) parser_tables___ParserTable___action_table_row173},
-  {(bigint) parser_tables___ParserTable___action_table_row174},
-  {(bigint) parser_tables___ParserTable___action_table_row175},
-  {(bigint) parser_tables___ParserTable___action_table_row176},
-  {(bigint) parser_tables___ParserTable___action_table_row177},
-  {(bigint) parser_tables___ParserTable___action_table_row178},
-  {(bigint) parser_tables___ParserTable___action_table_row179},
-  {(bigint) parser_tables___ParserTable___action_table_row180},
-  {(bigint) parser_tables___ParserTable___action_table_row181},
-  {(bigint) parser_tables___ParserTable___action_table_row182},
-  {(bigint) parser_tables___ParserTable___action_table_row183},
-  {(bigint) parser_tables___ParserTable___action_table_row184},
-  {(bigint) parser_tables___ParserTable___action_table_row185},
-  {(bigint) parser_tables___ParserTable___action_table_row186},
-  {(bigint) parser_tables___ParserTable___action_table_row187},
-  {(bigint) parser_tables___ParserTable___action_table_row188},
-  {(bigint) parser_tables___ParserTable___action_table_row189},
-  {(bigint) parser_tables___ParserTable___action_table_row190},
-  {(bigint) parser_tables___ParserTable___action_table_row191},
-  {(bigint) parser_tables___ParserTable___action_table_row192},
-  {(bigint) parser_tables___ParserTable___action_table_row193},
-  {(bigint) parser_tables___ParserTable___action_table_row194},
-  {(bigint) parser_tables___ParserTable___action_table_row195},
-  {(bigint) parser_tables___ParserTable___action_table_row196},
-  {(bigint) parser_tables___ParserTable___action_table_row197},
-  {(bigint) parser_tables___ParserTable___action_table_row198},
-  {(bigint) parser_tables___ParserTable___action_table_row199},
-  {(bigint) parser_tables___ParserTable___action_table_row200},
-  {(bigint) parser_tables___ParserTable___action_table_row201},
-  {(bigint) parser_tables___ParserTable___action_table_row202},
-  {(bigint) parser_tables___ParserTable___action_table_row203},
-  {(bigint) parser_tables___ParserTable___action_table_row204},
-  {(bigint) parser_tables___ParserTable___action_table_row205},
-  {(bigint) parser_tables___ParserTable___action_table_row206},
-  {(bigint) parser_tables___ParserTable___action_table_row207},
-  {(bigint) parser_tables___ParserTable___action_table_row208},
-  {(bigint) parser_tables___ParserTable___action_table_row209},
-  {(bigint) parser_tables___ParserTable___action_table_row210},
-  {(bigint) parser_tables___ParserTable___action_table_row211},
-  {(bigint) parser_tables___ParserTable___action_table_row212},
-  {(bigint) parser_tables___ParserTable___action_table_row213},
-  {(bigint) parser_tables___ParserTable___action_table_row214},
-  {(bigint) parser_tables___ParserTable___action_table_row215},
-  {(bigint) parser_tables___ParserTable___action_table_row216},
-  {(bigint) parser_tables___ParserTable___action_table_row217},
-  {(bigint) parser_tables___ParserTable___action_table_row218},
-  {(bigint) parser_tables___ParserTable___action_table_row219},
-  {(bigint) parser_tables___ParserTable___action_table_row220},
-  {(bigint) parser_tables___ParserTable___action_table_row221},
-  {(bigint) parser_tables___ParserTable___action_table_row222},
-  {(bigint) parser_tables___ParserTable___action_table_row223},
-  {(bigint) parser_tables___ParserTable___action_table_row224},
-  {(bigint) parser_tables___ParserTable___action_table_row225},
-  {(bigint) parser_tables___ParserTable___action_table_row226},
-  {(bigint) parser_tables___ParserTable___action_table_row227},
-  {(bigint) parser_tables___ParserTable___action_table_row228},
-  {(bigint) parser_tables___ParserTable___action_table_row229},
-  {(bigint) parser_tables___ParserTable___action_table_row230},
-  {(bigint) parser_tables___ParserTable___action_table_row231},
-  {(bigint) parser_tables___ParserTable___action_table_row232},
-  {(bigint) parser_tables___ParserTable___action_table_row233},
-  {(bigint) parser_tables___ParserTable___action_table_row234},
-  {(bigint) parser_tables___ParserTable___action_table_row235},
-  {(bigint) parser_tables___ParserTable___action_table_row236},
-  {(bigint) parser_tables___ParserTable___action_table_row237},
-  {(bigint) parser_tables___ParserTable___action_table_row238},
-  {(bigint) parser_tables___ParserTable___action_table_row239},
-  {(bigint) parser_tables___ParserTable___action_table_row240},
-  {(bigint) parser_tables___ParserTable___action_table_row241},
-  {(bigint) parser_tables___ParserTable___action_table_row242},
-  {(bigint) parser_tables___ParserTable___action_table_row243},
-  {(bigint) parser_tables___ParserTable___action_table_row244},
-  {(bigint) parser_tables___ParserTable___action_table_row245},
-  {(bigint) parser_tables___ParserTable___action_table_row246},
-  {(bigint) parser_tables___ParserTable___action_table_row247},
-  {(bigint) parser_tables___ParserTable___action_table_row248},
-  {(bigint) parser_tables___ParserTable___action_table_row249},
-  {(bigint) parser_tables___ParserTable___action_table_row250},
-  {(bigint) parser_tables___ParserTable___action_table_row251},
-  {(bigint) parser_tables___ParserTable___action_table_row252},
-  {(bigint) parser_tables___ParserTable___action_table_row253},
-  {(bigint) parser_tables___ParserTable___action_table_row254},
-  {(bigint) parser_tables___ParserTable___action_table_row255},
-  {(bigint) parser_tables___ParserTable___action_table_row256},
-  {(bigint) parser_tables___ParserTable___action_table_row257},
-  {(bigint) parser_tables___ParserTable___action_table_row258},
-  {(bigint) parser_tables___ParserTable___action_table_row259},
-  {(bigint) parser_tables___ParserTable___action_table_row260},
-  {(bigint) parser_tables___ParserTable___action_table_row261},
-  {(bigint) parser_tables___ParserTable___action_table_row262},
-  {(bigint) parser_tables___ParserTable___action_table_row263},
-  {(bigint) parser_tables___ParserTable___action_table_row264},
-  {(bigint) parser_tables___ParserTable___action_table_row265},
-  {(bigint) parser_tables___ParserTable___action_table_row266},
-  {(bigint) parser_tables___ParserTable___action_table_row267},
-  {(bigint) parser_tables___ParserTable___action_table_row268},
-  {(bigint) parser_tables___ParserTable___action_table_row269},
-  {(bigint) parser_tables___ParserTable___action_table_row270},
-  {(bigint) parser_tables___ParserTable___action_table_row271},
-  {(bigint) parser_tables___ParserTable___action_table_row272},
-  {(bigint) parser_tables___ParserTable___action_table_row273},
-  {(bigint) parser_tables___ParserTable___action_table_row274},
-  {(bigint) parser_tables___ParserTable___action_table_row275},
-  {(bigint) parser_tables___ParserTable___action_table_row276},
-  {(bigint) parser_tables___ParserTable___action_table_row277},
-  {(bigint) parser_tables___ParserTable___action_table_row278},
-  {(bigint) parser_tables___ParserTable___action_table_row279},
-  {(bigint) parser_tables___ParserTable___action_table_row280},
-  {(bigint) parser_tables___ParserTable___action_table_row281},
-  {(bigint) parser_tables___ParserTable___action_table_row282},
-  {(bigint) parser_tables___ParserTable___action_table_row283},
-  {(bigint) parser_tables___ParserTable___action_table_row284},
-  {(bigint) parser_tables___ParserTable___action_table_row285},
-  {(bigint) parser_tables___ParserTable___action_table_row286},
-  {(bigint) parser_tables___ParserTable___action_table_row287},
-  {(bigint) parser_tables___ParserTable___action_table_row288},
-  {(bigint) parser_tables___ParserTable___action_table_row289},
-  {(bigint) parser_tables___ParserTable___action_table_row290},
-  {(bigint) parser_tables___ParserTable___action_table_row291},
-  {(bigint) parser_tables___ParserTable___action_table_row292},
-  {(bigint) parser_tables___ParserTable___action_table_row293},
-  {(bigint) parser_tables___ParserTable___action_table_row294},
-  {(bigint) parser_tables___ParserTable___action_table_row295},
-  {(bigint) parser_tables___ParserTable___action_table_row296},
-  {(bigint) parser_tables___ParserTable___action_table_row297},
-  {(bigint) parser_tables___ParserTable___action_table_row298},
-  {(bigint) parser_tables___ParserTable___action_table_row299},
-  {(bigint) parser_tables___ParserTable___action_table_row300},
-  {(bigint) parser_tables___ParserTable___action_table_row301},
-  {(bigint) parser_tables___ParserTable___action_table_row302},
-  {(bigint) parser_tables___ParserTable___action_table_row303},
-  {(bigint) parser_tables___ParserTable___action_table_row304},
-  {(bigint) parser_tables___ParserTable___action_table_row305},
-  {(bigint) parser_tables___ParserTable___action_table_row306},
-  {(bigint) parser_tables___ParserTable___action_table_row307},
-  {(bigint) parser_tables___ParserTable___action_table_row308},
-  {(bigint) parser_tables___ParserTable___action_table_row309},
-  {(bigint) parser_tables___ParserTable___action_table_row310},
-  {(bigint) parser_tables___ParserTable___action_table_row311},
-  {(bigint) parser_tables___ParserTable___action_table_row312},
-  {(bigint) parser_tables___ParserTable___action_table_row313},
-  {(bigint) parser_tables___ParserTable___action_table_row314},
-  {(bigint) parser_tables___ParserTable___action_table_row315},
-  {(bigint) parser_tables___ParserTable___action_table_row316},
-  {(bigint) parser_tables___ParserTable___action_table_row317},
-  {(bigint) parser_tables___ParserTable___action_table_row318},
-  {(bigint) parser_tables___ParserTable___action_table_row319},
-  {(bigint) parser_tables___ParserTable___action_table_row320},
-  {(bigint) parser_tables___ParserTable___action_table_row321},
-  {(bigint) parser_tables___ParserTable___action_table_row322},
-  {(bigint) parser_tables___ParserTable___action_table_row323},
-  {(bigint) parser_tables___ParserTable___action_table_row324},
-  {(bigint) parser_tables___ParserTable___action_table_row325},
-  {(bigint) parser_tables___ParserTable___action_table_row326},
-  {(bigint) parser_tables___ParserTable___action_table_row327},
-  {(bigint) parser_tables___ParserTable___action_table_row328},
-  {(bigint) parser_tables___ParserTable___action_table_row329},
-  {(bigint) parser_tables___ParserTable___action_table_row330},
-  {(bigint) parser_tables___ParserTable___action_table_row331},
-  {(bigint) parser_tables___ParserTable___action_table_row332},
-  {(bigint) parser_tables___ParserTable___action_table_row333},
-  {(bigint) parser_tables___ParserTable___action_table_row334},
-  {(bigint) parser_tables___ParserTable___action_table_row335},
-  {(bigint) parser_tables___ParserTable___action_table_row336},
-  {(bigint) parser_tables___ParserTable___action_table_row337},
-  {(bigint) parser_tables___ParserTable___action_table_row338},
-  {(bigint) parser_tables___ParserTable___action_table_row339},
-  {(bigint) parser_tables___ParserTable___action_table_row340},
-  {(bigint) parser_tables___ParserTable___action_table_row341},
-  {(bigint) parser_tables___ParserTable___action_table_row342},
-  {(bigint) parser_tables___ParserTable___action_table_row343},
-  {(bigint) parser_tables___ParserTable___action_table_row344},
-  {(bigint) parser_tables___ParserTable___action_table_row345},
-  {(bigint) parser_tables___ParserTable___action_table_row346},
-  {(bigint) parser_tables___ParserTable___action_table_row347},
-  {(bigint) parser_tables___ParserTable___action_table_row348},
-  {(bigint) parser_tables___ParserTable___action_table_row349},
-  {(bigint) parser_tables___ParserTable___action_table_row350},
-  {(bigint) parser_tables___ParserTable___action_table_row351},
-  {(bigint) parser_tables___ParserTable___action_table_row352},
-  {(bigint) parser_tables___ParserTable___action_table_row353},
-  {(bigint) parser_tables___ParserTable___action_table_row354},
-  {(bigint) parser_tables___ParserTable___action_table_row355},
-  {(bigint) parser_tables___ParserTable___action_table_row356},
-  {(bigint) parser_tables___ParserTable___action_table_row357},
-  {(bigint) parser_tables___ParserTable___action_table_row358},
-  {(bigint) parser_tables___ParserTable___action_table_row359},
-  {(bigint) parser_tables___ParserTable___action_table_row360},
-  {(bigint) parser_tables___ParserTable___action_table_row361},
-  {(bigint) parser_tables___ParserTable___action_table_row362},
-  {(bigint) parser_tables___ParserTable___action_table_row363},
-  {(bigint) parser_tables___ParserTable___action_table_row364},
-  {(bigint) parser_tables___ParserTable___action_table_row365},
-  {(bigint) parser_tables___ParserTable___action_table_row366},
-  {(bigint) parser_tables___ParserTable___action_table_row367},
-  {(bigint) parser_tables___ParserTable___action_table_row368},
-  {(bigint) parser_tables___ParserTable___action_table_row369},
-  {(bigint) parser_tables___ParserTable___action_table_row370},
-  {(bigint) parser_tables___ParserTable___action_table_row371},
-  {(bigint) parser_tables___ParserTable___action_table_row372},
-  {(bigint) parser_tables___ParserTable___action_table_row373},
-  {(bigint) parser_tables___ParserTable___action_table_row374},
-  {(bigint) parser_tables___ParserTable___action_table_row375},
-  {(bigint) parser_tables___ParserTable___action_table_row376},
-  {(bigint) parser_tables___ParserTable___action_table_row377},
-  {(bigint) parser_tables___ParserTable___action_table_row378},
-  {(bigint) parser_tables___ParserTable___action_table_row379},
-  {(bigint) parser_tables___ParserTable___action_table_row380},
-  {(bigint) parser_tables___ParserTable___action_table_row381},
-  {(bigint) parser_tables___ParserTable___action_table_row382},
-  {(bigint) parser_tables___ParserTable___action_table_row383},
-  {(bigint) parser_tables___ParserTable___action_table_row384},
-  {(bigint) parser_tables___ParserTable___action_table_row385},
-  {(bigint) parser_tables___ParserTable___action_table_row386},
-  {(bigint) parser_tables___ParserTable___action_table_row387},
-  {(bigint) parser_tables___ParserTable___action_table_row388},
-  {(bigint) parser_tables___ParserTable___action_table_row389},
-  {(bigint) parser_tables___ParserTable___action_table_row390},
-  {(bigint) parser_tables___ParserTable___action_table_row391},
-  {(bigint) parser_tables___ParserTable___action_table_row392},
-  {(bigint) parser_tables___ParserTable___action_table_row393},
-  {(bigint) parser_tables___ParserTable___action_table_row394},
-  {(bigint) parser_tables___ParserTable___action_table_row395},
-  {(bigint) parser_tables___ParserTable___action_table_row396},
-  {(bigint) parser_tables___ParserTable___action_table_row397},
-  {(bigint) parser_tables___ParserTable___action_table_row398},
-  {(bigint) parser_tables___ParserTable___action_table_row399},
-  {(bigint) parser_tables___ParserTable___action_table_row400},
-  {(bigint) parser_tables___ParserTable___action_table_row401},
-  {(bigint) parser_tables___ParserTable___action_table_row402},
-  {(bigint) parser_tables___ParserTable___action_table_row403},
-  {(bigint) parser_tables___ParserTable___action_table_row404},
-  {(bigint) parser_tables___ParserTable___action_table_row405},
-  {(bigint) parser_tables___ParserTable___action_table_row406},
-  {(bigint) parser_tables___ParserTable___action_table_row407},
-  {(bigint) parser_tables___ParserTable___action_table_row408},
-  {(bigint) parser_tables___ParserTable___action_table_row409},
-  {(bigint) parser_tables___ParserTable___action_table_row410},
-  {(bigint) parser_tables___ParserTable___action_table_row411},
-  {(bigint) parser_tables___ParserTable___action_table_row412},
-  {(bigint) parser_tables___ParserTable___action_table_row413},
-  {(bigint) parser_tables___ParserTable___action_table_row414},
-  {(bigint) parser_tables___ParserTable___action_table_row415},
-  {(bigint) parser_tables___ParserTable___action_table_row416},
-  {(bigint) parser_tables___ParserTable___action_table_row417},
-  {(bigint) parser_tables___ParserTable___action_table_row418},
-  {(bigint) parser_tables___ParserTable___action_table_row419},
-  {(bigint) parser_tables___ParserTable___action_table_row420},
-  {(bigint) parser_tables___ParserTable___action_table_row421},
-  {(bigint) parser_tables___ParserTable___action_table_row422},
-  {(bigint) parser_tables___ParserTable___action_table_row423},
-  {(bigint) parser_tables___ParserTable___action_table_row424},
-  {(bigint) parser_tables___ParserTable___action_table_row425},
-  {(bigint) parser_tables___ParserTable___action_table_row426},
-  {(bigint) parser_tables___ParserTable___action_table_row427},
-  {(bigint) parser_tables___ParserTable___action_table_row428},
-  {(bigint) parser_tables___ParserTable___action_table_row429},
-  {(bigint) parser_tables___ParserTable___action_table_row430},
-  {(bigint) parser_tables___ParserTable___action_table_row431},
-  {(bigint) parser_tables___ParserTable___action_table_row432},
-  {(bigint) parser_tables___ParserTable___action_table_row433},
-  {(bigint) parser_tables___ParserTable___action_table_row434},
-  {(bigint) parser_tables___ParserTable___action_table_row435},
-  {(bigint) parser_tables___ParserTable___action_table_row436},
-  {(bigint) parser_tables___ParserTable___action_table_row437},
-  {(bigint) parser_tables___ParserTable___action_table_row438},
-  {(bigint) parser_tables___ParserTable___action_table_row439},
-  {(bigint) parser_tables___ParserTable___action_table_row440},
-  {(bigint) parser_tables___ParserTable___action_table_row441},
-  {(bigint) parser_tables___ParserTable___action_table_row442},
-  {(bigint) parser_tables___ParserTable___action_table_row443},
-  {(bigint) parser_tables___ParserTable___action_table_row444},
-  {(bigint) parser_tables___ParserTable___action_table_row445},
-  {(bigint) parser_tables___ParserTable___action_table_row446},
-  {(bigint) parser_tables___ParserTable___action_table_row447},
-  {(bigint) parser_tables___ParserTable___action_table_row448},
-  {(bigint) parser_tables___ParserTable___action_table_row449},
-  {(bigint) parser_tables___ParserTable___action_table_row450},
-  {(bigint) parser_tables___ParserTable___action_table_row451},
-  {(bigint) parser_tables___ParserTable___action_table_row452},
-  {(bigint) parser_tables___ParserTable___action_table_row453},
-  {(bigint) parser_tables___ParserTable___action_table_row454},
-  {(bigint) parser_tables___ParserTable___action_table_row455},
-  {(bigint) parser_tables___ParserTable___action_table_row456},
-  {(bigint) parser_tables___ParserTable___action_table_row457},
-  {(bigint) parser_tables___ParserTable___action_table_row458},
-  {(bigint) parser_tables___ParserTable___action_table_row459},
-  {(bigint) parser_tables___ParserTable___action_table_row460},
-  {(bigint) parser_tables___ParserTable___action_table_row461},
-  {(bigint) parser_tables___ParserTable___action_table_row462},
-  {(bigint) parser_tables___ParserTable___action_table_row463},
-  {(bigint) parser_tables___ParserTable___action_table_row464},
-  {(bigint) parser_tables___ParserTable___action_table_row465},
-  {(bigint) parser_tables___ParserTable___action_table_row466},
-  {(bigint) parser_tables___ParserTable___action_table_row467},
-  {(bigint) parser_tables___ParserTable___action_table_row468},
-  {(bigint) parser_tables___ParserTable___action_table_row469},
-  {(bigint) parser_tables___ParserTable___action_table_row470},
-  {(bigint) parser_tables___ParserTable___action_table_row471},
-  {(bigint) parser_tables___ParserTable___action_table_row472},
-  {(bigint) parser_tables___ParserTable___action_table_row473},
-  {(bigint) parser_tables___ParserTable___action_table_row474},
-  {(bigint) parser_tables___ParserTable___action_table_row475},
-  {(bigint) parser_tables___ParserTable___action_table_row476},
-  {(bigint) parser_tables___ParserTable___action_table_row477},
-  {(bigint) parser_tables___ParserTable___action_table_row478},
-  {(bigint) parser_tables___ParserTable___action_table_row479},
-  {(bigint) parser_tables___ParserTable___action_table_row480},
-  {(bigint) parser_tables___ParserTable___action_table_row481},
-  {(bigint) parser_tables___ParserTable___action_table_row482},
-  {(bigint) parser_tables___ParserTable___action_table_row483},
-  {(bigint) parser_tables___ParserTable___action_table_row484},
-  {(bigint) parser_tables___ParserTable___action_table_row485},
-  {(bigint) parser_tables___ParserTable___action_table_row486},
-  {(bigint) parser_tables___ParserTable___action_table_row487},
-  {(bigint) parser_tables___ParserTable___action_table_row488},
-  {(bigint) parser_tables___ParserTable___action_table_row489},
-  {(bigint) parser_tables___ParserTable___action_table_row490},
-  {(bigint) parser_tables___ParserTable___action_table_row491},
-  {(bigint) parser_tables___ParserTable___action_table_row492},
-  {(bigint) parser_tables___ParserTable___action_table_row493},
-  {(bigint) parser_tables___ParserTable___action_table_row494},
-  {(bigint) parser_tables___ParserTable___action_table_row495},
-  {(bigint) parser_tables___ParserTable___action_table_row496},
-  {(bigint) parser_tables___ParserTable___action_table_row497},
-  {(bigint) parser_tables___ParserTable___action_table_row498},
-  {(bigint) parser_tables___ParserTable___action_table_row499},
-  {(bigint) parser_tables___ParserTable___action_table_row500},
-  {(bigint) parser_tables___ParserTable___action_table_row501},
-  {(bigint) parser_tables___ParserTable___action_table_row502},
-  {(bigint) parser_tables___ParserTable___action_table_row503},
-  {(bigint) parser_tables___ParserTable___action_table_row504},
-  {(bigint) parser_tables___ParserTable___action_table_row505},
-  {(bigint) parser_tables___ParserTable___action_table_row506},
-  {(bigint) parser_tables___ParserTable___action_table_row507},
-  {(bigint) parser_tables___ParserTable___action_table_row508},
-  {(bigint) parser_tables___ParserTable___action_table_row509},
-  {(bigint) parser_tables___ParserTable___action_table_row510},
-  {(bigint) parser_tables___ParserTable___action_table_row511},
-  {(bigint) parser_tables___ParserTable___action_table_row512},
-  {(bigint) parser_tables___ParserTable___action_table_row513},
-  {(bigint) parser_tables___ParserTable___action_table_row514},
-  {(bigint) parser_tables___ParserTable___action_table_row515},
-  {(bigint) parser_tables___ParserTable___action_table_row516},
-  {(bigint) parser_tables___ParserTable___action_table_row517},
-  {(bigint) parser_tables___ParserTable___action_table_row518},
-  {(bigint) parser_tables___ParserTable___action_table_row519},
-  {(bigint) parser_tables___ParserTable___action_table_row520},
-  {(bigint) parser_tables___ParserTable___action_table_row521},
-  {(bigint) parser_tables___ParserTable___action_table_row522},
-  {(bigint) parser_tables___ParserTable___action_table_row523},
-  {(bigint) parser_tables___ParserTable___action_table_row524},
-  {(bigint) parser_tables___ParserTable___action_table_row525},
-  {(bigint) parser_tables___ParserTable___action_table_row526},
-  {(bigint) parser_tables___ParserTable___action_table_row527},
-  {(bigint) parser_tables___ParserTable___action_table_row528},
-  {(bigint) parser_tables___ParserTable___action_table_row529},
-  {(bigint) parser_tables___ParserTable___action_table_row530},
-  {(bigint) parser_tables___ParserTable___action_table_row531},
-  {(bigint) parser_tables___ParserTable___action_table_row532},
-  {(bigint) parser_tables___ParserTable___action_table_row533},
-  {(bigint) parser_tables___ParserTable___action_table_row534},
-  {(bigint) parser_tables___ParserTable___action_table_row535},
-  {(bigint) parser_tables___ParserTable___action_table_row536},
-  {(bigint) parser_tables___ParserTable___action_table_row537},
-  {(bigint) parser_tables___ParserTable___action_table_row538},
-  {(bigint) parser_tables___ParserTable___action_table_row539},
-  {(bigint) parser_tables___ParserTable___action_table_row540},
-  {(bigint) parser_tables___ParserTable___action_table_row541},
-  {(bigint) parser_tables___ParserTable___action_table_row542},
-  {(bigint) parser_tables___ParserTable___action_table_row543},
-  {(bigint) parser_tables___ParserTable___action_table_row544},
-  {(bigint) parser_tables___ParserTable___action_table_row545},
-  {(bigint) parser_tables___ParserTable___action_table_row546},
-  {(bigint) parser_tables___ParserTable___action_table_row547},
-  {(bigint) parser_tables___ParserTable___action_table_row548},
-  {(bigint) parser_tables___ParserTable___action_table_row549},
-  {(bigint) parser_tables___ParserTable___action_table_row550},
-  {(bigint) parser_tables___ParserTable___action_table_row551},
-  {(bigint) parser_tables___ParserTable___action_table_row552},
-  {(bigint) parser_tables___ParserTable___action_table_row553},
-  {(bigint) parser_tables___ParserTable___action_table_row554},
-  {(bigint) parser_tables___ParserTable___action_table_row555},
-  {(bigint) parser_tables___ParserTable___action_table_row556},
-  {(bigint) parser_tables___ParserTable___action_table_row557},
-  {(bigint) parser_tables___ParserTable___action_table_row558},
-  {(bigint) parser_tables___ParserTable___action_table_row559},
-  {(bigint) parser_tables___ParserTable___action_table_row560},
-  {(bigint) parser_tables___ParserTable___action_table_row561},
-  {(bigint) parser_tables___ParserTable___action_table_row562},
-  {(bigint) parser_tables___ParserTable___action_table_row563},
-  {(bigint) parser_tables___ParserTable___action_table_row564},
-  {(bigint) parser_tables___ParserTable___action_table_row565},
-  {(bigint) parser_tables___ParserTable___action_table_row566},
-  {(bigint) parser_tables___ParserTable___action_table_row567},
-  {(bigint) parser_tables___ParserTable___action_table_row568},
-  {(bigint) parser_tables___ParserTable___action_table_row569},
-  {(bigint) parser_tables___ParserTable___action_table_row570},
-  {(bigint) parser_tables___ParserTable___action_table_row571},
-  {(bigint) parser_tables___ParserTable___action_table_row572},
-  {(bigint) parser_tables___ParserTable___action_table_row573},
-  {(bigint) parser_tables___ParserTable___action_table_row574},
-  {(bigint) parser_tables___ParserTable___action_table_row575},
-  {(bigint) parser_tables___ParserTable___action_table_row576},
-  {(bigint) parser_tables___ParserTable___action_table_row577},
-  {(bigint) parser_tables___ParserTable___action_table_row578},
-  {(bigint) parser_tables___ParserTable___action_table_row579},
-  {(bigint) parser_tables___ParserTable___action_table_row580},
-  {(bigint) parser_tables___ParserTable___action_table_row581},
-  {(bigint) parser_tables___ParserTable___action_table_row582},
-  {(bigint) parser_tables___ParserTable___action_table_row583},
-  {(bigint) parser_tables___ParserTable___action_table_row584},
-  {(bigint) parser_tables___ParserTable___action_table_row585},
-  {(bigint) parser_tables___ParserTable___action_table_row586},
-  {(bigint) parser_tables___ParserTable___action_table_row587},
-  {(bigint) parser_tables___ParserTable___action_table_row588},
-  {(bigint) parser_tables___ParserTable___action_table_row589},
-  {(bigint) parser_tables___ParserTable___action_table_row590},
-  {(bigint) parser_tables___ParserTable___action_table_row591},
-  {(bigint) parser_tables___ParserTable___action_table_row592},
-  {(bigint) parser_tables___ParserTable___action_table_row593},
-  {(bigint) parser_tables___ParserTable___action_table_row594},
-  {(bigint) parser_tables___ParserTable___action_table_row595},
-  {(bigint) parser_tables___ParserTable___action_table_row596},
-  {(bigint) parser_tables___ParserTable___action_table_row597},
-  {(bigint) parser_tables___ParserTable___action_table_row598},
-  {(bigint) parser_tables___ParserTable___action_table_row599},
-  {(bigint) parser_tables___ParserTable___action_table_row600},
-  {(bigint) parser_tables___ParserTable___action_table_row601},
-  {(bigint) parser_tables___ParserTable___action_table_row602},
-  {(bigint) parser_tables___ParserTable___action_table_row603},
-  {(bigint) parser_tables___ParserTable___action_table_row604},
-  {(bigint) parser_tables___ParserTable___action_table_row605},
-  {(bigint) parser_tables___ParserTable___action_table_row606},
-  {(bigint) parser_tables___ParserTable___action_table_row607},
-  {(bigint) parser_tables___ParserTable___action_table_row608},
-  {(bigint) parser_tables___ParserTable___action_table_row609},
-  {(bigint) parser_tables___ParserTable___action_table_row610},
-  {(bigint) parser_tables___ParserTable___action_table_row611},
-  {(bigint) parser_tables___ParserTable___action_table_row612},
-  {(bigint) parser_tables___ParserTable___action_table_row613},
-  {(bigint) parser_tables___ParserTable___action_table_row614},
-  {(bigint) parser_tables___ParserTable___action_table_row615},
-  {(bigint) parser_tables___ParserTable___action_table_row616},
-  {(bigint) parser_tables___ParserTable___action_table_row617},
-  {(bigint) parser_tables___ParserTable___action_table_row618},
-  {(bigint) parser_tables___ParserTable___action_table_row619},
-  {(bigint) parser_tables___ParserTable___action_table_row620},
-  {(bigint) parser_tables___ParserTable___action_table_row621},
-  {(bigint) parser_tables___ParserTable___action_table_row622},
-  {(bigint) parser_tables___ParserTable___action_table_row623},
-  {(bigint) parser_tables___ParserTable___action_table_row624},
-  {(bigint) parser_tables___ParserTable___action_table_row625},
-  {(bigint) parser_tables___ParserTable___action_table_row626},
-  {(bigint) parser_tables___ParserTable___action_table_row627},
-  {(bigint) parser_tables___ParserTable___action_table_row628},
-  {(bigint) parser_tables___ParserTable___action_table_row629},
-  {(bigint) parser_tables___ParserTable___action_table_row630},
-  {(bigint) parser_tables___ParserTable___action_table_row631},
-  {(bigint) parser_tables___ParserTable___action_table_row632},
-  {(bigint) parser_tables___ParserTable___action_table_row633},
-  {(bigint) parser_tables___ParserTable___action_table_row634},
-  {(bigint) parser_tables___ParserTable___action_table_row635},
-  {(bigint) parser_tables___ParserTable___action_table_row636},
-  {(bigint) parser_tables___ParserTable___action_table_row637},
-  {(bigint) parser_tables___ParserTable___action_table_row638},
-  {(bigint) parser_tables___ParserTable___action_table_row639},
-  {(bigint) parser_tables___ParserTable___action_table_row640},
-  {(bigint) parser_tables___ParserTable___action_table_row641},
-  {(bigint) parser_tables___ParserTable___action_table_row642},
-  {(bigint) parser_tables___ParserTable___action_table_row643},
-  {(bigint) parser_tables___ParserTable___action_table_row644},
-  {(bigint) parser_tables___ParserTable___action_table_row645},
-  {(bigint) parser_tables___ParserTable___action_table_row646},
-  {(bigint) parser_tables___ParserTable___action_table_row647},
-  {(bigint) parser_tables___ParserTable___action_table_row648},
-  {(bigint) parser_tables___ParserTable___action_table_row649},
-  {(bigint) parser_tables___ParserTable___action_table_row650},
-  {(bigint) parser_tables___ParserTable___action_table_row651},
-  {(bigint) parser_tables___ParserTable___action_table_row652},
-  {(bigint) parser_tables___ParserTable___action_table_row653},
-  {(bigint) parser_tables___ParserTable___action_table_row654},
-  {(bigint) parser_tables___ParserTable___action_table_row655},
-  {(bigint) parser_tables___ParserTable___action_table_row656},
-  {(bigint) parser_tables___ParserTable___action_table_row657},
-  {(bigint) parser_tables___ParserTable___action_table_row658},
-  {(bigint) parser_tables___ParserTable___action_table_row659},
-  {(bigint) parser_tables___ParserTable___action_table_row660},
-  {(bigint) parser_tables___ParserTable___action_table_row661},
-  {(bigint) parser_tables___ParserTable___action_table_row662},
-  {(bigint) parser_tables___ParserTable___action_table_row663},
-  {(bigint) parser_tables___ParserTable___action_table_row664},
-  {(bigint) parser_tables___ParserTable___action_table_row665},
-  {(bigint) parser_tables___ParserTable___action_table_row666},
-  {(bigint) parser_tables___ParserTable___action_table_row667},
-  {(bigint) parser_tables___ParserTable___action_table_row668},
-  {(bigint) parser_tables___ParserTable___action_table_row669},
-  {(bigint) parser_tables___ParserTable___action_table_row670},
-  {(bigint) parser_tables___ParserTable___action_table_row671},
-  {(bigint) parser_tables___ParserTable___action_table_row672},
-  {(bigint) parser_tables___ParserTable___action_table_row673},
-  {(bigint) parser_tables___ParserTable___action_table_row674},
-  {(bigint) parser_tables___ParserTable___action_table_row675},
-  {(bigint) parser_tables___ParserTable___action_table_row676},
-  {(bigint) parser_tables___ParserTable___action_table_row677},
-  {(bigint) parser_tables___ParserTable___action_table_row678},
-  {(bigint) parser_tables___ParserTable___action_table_row679},
-  {(bigint) parser_tables___ParserTable___action_table_row680},
-  {(bigint) parser_tables___ParserTable___action_table_row681},
-  {(bigint) parser_tables___ParserTable___action_table_row682},
-  {(bigint) parser_tables___ParserTable___action_table_row683},
-  {(bigint) parser_tables___ParserTable___action_table_row684},
-  {(bigint) parser_tables___ParserTable___action_table_row685},
-  {(bigint) parser_tables___ParserTable___action_table_row686},
-  {(bigint) parser_tables___ParserTable___action_table_row687},
-  {(bigint) parser_tables___ParserTable___action_table_row688},
-  {(bigint) parser_tables___ParserTable___action_table_row689},
-  {(bigint) parser_tables___ParserTable___action_table_row690},
-  {(bigint) parser_tables___ParserTable___action_table_row691},
-  {(bigint) parser_tables___ParserTable___action_table_row692},
-  {(bigint) parser_tables___ParserTable___action_table_row693},
-  {(bigint) parser_tables___ParserTable___action_table_row694},
-  {(bigint) parser_tables___ParserTable___action_table_row695},
-  {(bigint) parser_tables___ParserTable___action_table_row696},
-  {(bigint) parser_tables___ParserTable___action_table_row697},
-  {(bigint) parser_tables___ParserTable___action_table_row698},
-  {(bigint) parser_tables___ParserTable___action_table_row699},
-  {(bigint) parser_tables___ParserTable___action_table_row700},
-  {(bigint) parser_tables___ParserTable___action_table_row701},
-  {(bigint) parser_tables___ParserTable___action_table_row702},
-  {(bigint) parser_tables___ParserTable___action_table_row703},
-  {(bigint) parser_tables___ParserTable___action_table_row704},
-  {(bigint) parser_tables___ParserTable___action_table_row705},
-  {(bigint) parser_tables___ParserTable___action_table_row706},
-  {(bigint) parser_tables___ParserTable___action_table_row707},
-  {(bigint) parser_tables___ParserTable___action_table_row708},
-  {(bigint) parser_tables___ParserTable___action_table_row709},
-  {(bigint) parser_tables___ParserTable___action_table_row710},
-  {(bigint) parser_tables___ParserTable___action_table_row711},
-  {(bigint) parser_tables___ParserTable___action_table_row712},
-  {(bigint) parser_tables___ParserTable___action_table_row713},
-  {(bigint) parser_tables___ParserTable___action_table_row714},
-  {(bigint) parser_tables___ParserTable___action_table_row715},
-  {(bigint) parser_tables___ParserTable___action_table_row716},
-  {(bigint) parser_tables___ParserTable___action_table_row717},
-  {(bigint) parser_tables___ParserTable___action_table_row718},
-  {(bigint) parser_tables___ParserTable___action_table_row719},
-  {(bigint) parser_tables___ParserTable___action_table_row720},
-  {(bigint) parser_tables___ParserTable___action_table_row721},
-  {(bigint) parser_tables___ParserTable___action_table_row722},
-  {(bigint) parser_tables___ParserTable___action_table_row723},
-  {(bigint) parser_tables___ParserTable___action_table_row724},
-  {(bigint) parser_tables___ParserTable___action_table_row725},
-  {(bigint) parser_tables___ParserTable___action_table_row726},
-  {(bigint) parser_tables___ParserTable___action_table_row727},
-  {(bigint) parser_tables___ParserTable___action_table_row728},
-  {(bigint) parser_tables___ParserTable___action_table_row729},
-  {(bigint) parser_tables___ParserTable___action_table_row730},
-  {(bigint) parser_tables___ParserTable___action_table_row731},
-  {(bigint) parser_tables___ParserTable___action_table_row732},
-  {(bigint) parser_tables___ParserTable___action_table_row733},
-  {(bigint) parser_tables___ParserTable___action_table_row734},
-  {(bigint) parser_tables___ParserTable___action_table_row735},
-  {(bigint) parser_tables___ParserTable___action_table_row736},
-  {(bigint) parser_tables___ParserTable___action_table_row737},
-  {(bigint) parser_tables___ParserTable___action_table_row738},
-  {(bigint) parser_tables___ParserTable___action_table_row739},
-  {(bigint) parser_tables___ParserTable___action_table_row740},
-  {(bigint) parser_tables___ParserTable___action_table_row741},
-  {(bigint) parser_tables___ParserTable___action_table_row742},
-  {(bigint) parser_tables___ParserTable___action_table_row743},
-  {(bigint) parser_tables___ParserTable___action_table_row744},
-  {(bigint) parser_tables___ParserTable___action_table_row745},
-  {(bigint) parser_tables___ParserTable___action_table_row746},
-  {(bigint) parser_tables___ParserTable___action_table_row747},
-  {(bigint) parser_tables___ParserTable___action_table_row748},
-  {(bigint) parser_tables___ParserTable___action_table_row749},
-  {(bigint) parser_tables___ParserTable___action_table_row750},
-  {(bigint) parser_tables___ParserTable___action_table_row751},
-  {(bigint) parser_tables___ParserTable___action_table_row752},
-  {(bigint) parser_tables___ParserTable___action_table_row753},
-  {(bigint) parser_tables___ParserTable___action_table_row754},
-  {(bigint) parser_tables___ParserTable___action_table_row755},
-  {(bigint) parser_tables___ParserTable___action_table_row756},
-  {(bigint) parser_tables___ParserTable___action_table_row757},
-  {(bigint) parser_tables___ParserTable___action_table_row758},
-  {(bigint) parser_tables___ParserTable___action_table_row759},
-  {(bigint) parser_tables___ParserTable___action_table_row760},
-  {(bigint) parser_tables___ParserTable___action_table_row761},
-  {(bigint) parser_tables___ParserTable___action_table_row762},
-  {(bigint) parser_tables___ParserTable___action_table_row763},
-  {(bigint) parser_tables___ParserTable___action_table_row764},
-  {(bigint) parser_tables___ParserTable___action_table_row765},
-  {(bigint) parser_tables___ParserTable___action_table_row766},
-  {(bigint) parser_tables___ParserTable___action_table_row767},
-  {(bigint) parser_tables___ParserTable___action_table_row768},
-  {(bigint) parser_tables___ParserTable___action_table_row769},
-  {(bigint) parser_tables___ParserTable___action_table_row770},
-  {(bigint) parser_tables___ParserTable___action_table_row771},
-  {(bigint) parser_tables___ParserTable___action_table_row772},
-  {(bigint) parser_tables___ParserTable___action_table_row773},
-  {(bigint) parser_tables___ParserTable___action_table_row774},
-  {(bigint) parser_tables___ParserTable___action_table_row775},
-  {(bigint) parser_tables___ParserTable___action_table_row776},
-  {(bigint) parser_tables___ParserTable___action_table_row777},
-  {(bigint) parser_tables___ParserTable___action_table_row778},
-  {(bigint) parser_tables___ParserTable___action_table_row779},
-  {(bigint) parser_tables___ParserTable___action_table_row780},
-  {(bigint) parser_tables___ParserTable___action_table_row781},
-  {(bigint) parser_tables___ParserTable___action_table_row782},
-  {(bigint) parser_tables___ParserTable___action_table_row783},
-  {(bigint) parser_tables___ParserTable___action_table_row784},
-  {(bigint) parser_tables___ParserTable___action_table_row785},
-  {(bigint) parser_tables___ParserTable___action_table_row786},
-  {(bigint) parser_tables___ParserTable___action_table_row787},
-  {(bigint) parser_tables___ParserTable___action_table_row788},
-  {(bigint) parser_tables___ParserTable___action_table_row789},
-  {(bigint) parser_tables___ParserTable___action_table_row790},
-  {(bigint) parser_tables___ParserTable___action_table_row791},
-  {(bigint) parser_tables___ParserTable___action_table_row792},
-  {(bigint) parser_tables___ParserTable___action_table_row793},
-  {(bigint) parser_tables___ParserTable___action_table_row794},
-  {(bigint) parser_tables___ParserTable___action_table_row795},
-  {(bigint) parser_tables___ParserTable___action_table_row796},
-  {(bigint) parser_tables___ParserTable___action_table_row797},
-  {(bigint) parser_tables___ParserTable___action_table_row798},
-  {(bigint) parser_tables___ParserTable___action_table_row799},
-  {(bigint) parser_tables___ParserTable___action_table_row800},
-  {(bigint) parser_tables___ParserTable___action_table_row801},
-  {(bigint) parser_tables___ParserTable___action_table_row802},
-  {(bigint) parser_tables___ParserTable___action_table_row803},
-  {(bigint) parser_tables___ParserTable___action_table_row804},
-  {(bigint) parser_tables___ParserTable___action_table_row805},
-  {(bigint) parser_tables___ParserTable___action_table_row806},
-  {(bigint) parser_tables___ParserTable___action_table_row807},
-  {(bigint) parser_tables___ParserTable___action_table_row808},
-  {(bigint) parser_tables___ParserTable___action_table_row809},
-  {(bigint) parser_tables___ParserTable___action_table_row810},
-  {(bigint) parser_tables___ParserTable___action_table_row811},
-  {(bigint) parser_tables___ParserTable___action_table_row812},
-  {(bigint) parser_tables___ParserTable___action_table_row813},
-  {(bigint) parser_tables___ParserTable___action_table_row814},
-  {(bigint) parser_tables___ParserTable___action_table_row815},
-  {(bigint) parser_tables___ParserTable___action_table_row816},
-  {(bigint) parser_tables___ParserTable___action_table_row817},
-  {(bigint) parser_tables___ParserTable___action_table_row818},
-  {(bigint) parser_tables___ParserTable___action_table_row819},
-  {(bigint) parser_tables___ParserTable___action_table_row820},
-  {(bigint) parser_tables___ParserTable___action_table_row821},
-  {(bigint) parser_tables___ParserTable___action_table_row822},
-  {(bigint) parser_tables___ParserTable___action_table_row823},
-  {(bigint) parser_tables___ParserTable___action_table_row824},
-  {(bigint) parser_tables___ParserTable___action_table_row825},
-  {(bigint) parser_tables___ParserTable___action_table_row826},
-  {(bigint) parser_tables___ParserTable___action_table_row827},
-  {(bigint) parser_tables___ParserTable___action_table_row828},
-  {(bigint) parser_tables___ParserTable___action_table_row829},
-  {(bigint) parser_tables___ParserTable___action_table_row830},
-  {(bigint) parser_tables___ParserTable___action_table_row831},
-  {(bigint) parser_tables___ParserTable___action_table_row832},
-  {(bigint) parser_tables___ParserTable___action_table_row833},
-  {(bigint) parser_tables___ParserTable___action_table_row834},
-  {(bigint) parser_tables___ParserTable___action_table_row835},
-  {(bigint) parser_tables___ParserTable___action_table_row836},
-  {(bigint) parser_tables___ParserTable___action_table_row837},
-  {(bigint) parser_tables___ParserTable___action_table_row838},
-  {(bigint) parser_tables___ParserTable___action_table_row839},
-  {(bigint) parser_tables___ParserTable___action_table_row840},
-  {(bigint) parser_tables___ParserTable___action_table_row841},
-  {(bigint) parser_tables___ParserTable___action_table_row842},
-  {(bigint) parser_tables___ParserTable___action_table_row843},
-  {(bigint) parser_tables___ParserTable___action_table_row844},
-  {(bigint) parser_tables___ParserTable___action_table_row845},
-  {(bigint) parser_tables___ParserTable___action_table_row846},
-  {(bigint) parser_tables___ParserTable___action_table_row847},
-  {(bigint) parser_tables___ParserTable___action_table_row848},
-  {(bigint) parser_tables___ParserTable___action_table_row849},
-  {(bigint) parser_tables___ParserTable___action_table_row850},
-  {(bigint) parser_tables___ParserTable___action_table_row851},
-  {(bigint) parser_tables___ParserTable___action_table_row852},
-  {(bigint) parser_tables___ParserTable___action_table_row853},
-  {(bigint) parser_tables___ParserTable___action_table_row854},
-  {(bigint) parser_tables___ParserTable___action_table_row855},
-  {(bigint) parser_tables___ParserTable___action_table_row856},
-  {(bigint) parser_tables___ParserTable___action_table_row857},
-  {(bigint) parser_tables___ParserTable___action_table_row858},
-  {(bigint) parser_tables___ParserTable___action_table_row859},
-  {(bigint) parser_tables___ParserTable___action_table_row860},
-  {(bigint) parser_tables___ParserTable___action_table_row861},
-  {(bigint) parser_tables___ParserTable___action_table_row862},
-  {(bigint) parser_tables___ParserTable___action_table_row863},
-  {(bigint) parser_tables___ParserTable___action_table_row864},
-  {(bigint) parser_tables___ParserTable___action_table_row865},
-  {(bigint) parser_tables___ParserTable___action_table_row866},
-  {(bigint) parser_tables___ParserTable___action_table_row867},
-  {(bigint) parser_tables___ParserTable___action_table_row868},
-  {(bigint) parser_tables___ParserTable___action_table_row869},
-  {(bigint) parser_tables___ParserTable___action_table_row870},
-  {(bigint) parser_tables___ParserTable___action_table_row871},
-  {(bigint) parser_tables___ParserTable___action_table_row872},
-  {(bigint) parser_tables___ParserTable___action_table_row873},
-  {(bigint) parser_tables___ParserTable___action_table_row874},
-  {(bigint) parser_tables___ParserTable___action_table_row875},
-  {(bigint) parser_tables___ParserTable___action_table_row876},
-  {(bigint) parser_tables___ParserTable___action_table_row877},
-  {(bigint) parser_tables___ParserTable___action_table_row878},
-  {(bigint) parser_tables___ParserTable___action_table_row879},
-  {(bigint) parser_tables___ParserTable___action_table_row880},
-  {(bigint) parser_tables___ParserTable___action_table_row881},
-  {(bigint) parser_tables___ParserTable___action_table_row882},
-  {(bigint) parser_tables___ParserTable___action_table_row883},
-  {(bigint) parser_tables___ParserTable___action_table_row884},
-  {(bigint) parser_tables___ParserTable___action_table_row885},
-  {(bigint) parser_tables___ParserTable___action_table_row886},
-  {(bigint) parser_tables___ParserTable___action_table_row887},
-  {(bigint) parser_tables___ParserTable___action_table_row888},
-  {(bigint) parser_tables___ParserTable___action_table_row889},
-  {(bigint) parser_tables___ParserTable___action_table_row890},
-  {(bigint) parser_tables___ParserTable___action_table_row891},
-  {(bigint) parser_tables___ParserTable___action_table_row892},
-  {(bigint) parser_tables___ParserTable___action_table_row893},
-  {(bigint) parser_tables___ParserTable___action_table_row894},
-  {(bigint) parser_tables___ParserTable___action_table_row895},
-  {(bigint) parser_tables___ParserTable___action_table_row896},
-  {(bigint) parser_tables___ParserTable___action_table_row897},
-  {(bigint) parser_tables___ParserTable___action_table_row898},
-  {(bigint) parser_tables___ParserTable___action_table_row899},
-  {(bigint) parser_tables___ParserTable___action_table_row900},
-  {(bigint) parser_tables___ParserTable___action_table_row901},
-  {(bigint) parser_tables___ParserTable___action_table_row902},
-  {(bigint) parser_tables___ParserTable___action_table_row903},
-  {(bigint) parser_tables___ParserTable___action_table_row904},
-  {(bigint) parser_tables___ParserTable___action_table_row905},
-  {(bigint) parser_tables___ParserTable___action_table_row906},
-  {(bigint) parser_tables___ParserTable___action_table_row907},
-  {(bigint) parser_tables___ParserTable___action_table_row908},
-  {(bigint) parser_tables___ParserTable___action_table_row909},
-  {(bigint) parser_tables___ParserTable___action_table_row910},
-  {(bigint) parser_tables___ParserTable___action_table_row911},
-  {(bigint) parser_tables___ParserTable___action_table_row912},
-  {(bigint) parser_tables___ParserTable___action_table_row913},
-  {(bigint) parser_tables___ParserTable___action_table_row914},
-  {(bigint) parser_tables___ParserTable___action_table_row915},
-  {(bigint) parser_tables___ParserTable___action_table_row916},
-  {(bigint) parser_tables___ParserTable___action_table_row917},
-  {(bigint) parser_tables___ParserTable___action_table_row918},
-  {(bigint) parser_tables___ParserTable___action_table_row919},
-  {(bigint) parser_tables___ParserTable___action_table_row920},
-  {(bigint) parser_tables___ParserTable___action_table_row921},
-  {(bigint) parser_tables___ParserTable___action_table_row922},
-  {(bigint) parser_tables___ParserTable___action_table_row923},
-  {(bigint) parser_tables___ParserTable___action_table_row924},
-  {(bigint) parser_tables___ParserTable___action_table_row925},
-  {(bigint) parser_tables___ParserTable___action_table_row926},
-  {(bigint) parser_tables___ParserTable___action_table_row927},
-  {(bigint) parser_tables___ParserTable___action_table_row928},
-  {(bigint) parser_tables___ParserTable___action_table_row929},
-  {(bigint) parser_tables___ParserTable___action_table_row930},
-  {(bigint) parser_tables___ParserTable___action_table_row931},
-  {(bigint) parser_tables___ParserTable___action_table_row932},
-  {(bigint) parser_tables___ParserTable___action_table_row933},
-  {(bigint) parser_tables___ParserTable___action_table_row934},
-  {(bigint) parser_tables___ParserTable___action_table_row935},
-  {(bigint) parser_tables___ParserTable___action_table_row936},
-  {(bigint) parser_tables___ParserTable___action_table_row937},
-  {(bigint) parser_tables___ParserTable___action_table_row938},
-  {(bigint) parser_tables___ParserTable___action_table_row939},
-  {(bigint) parser_tables___ParserTable___action_table_row940},
-  {(bigint) parser_tables___ParserTable___action_table_row941},
-  {(bigint) parser_tables___ParserTable___action_table_row942},
-  {(bigint) parser_tables___ParserTable___action_table_row943},
-  {(bigint) parser_tables___ParserTable___action_table_row944},
-  {(bigint) parser_tables___ParserTable___action_table_row945},
-  {(bigint) parser_tables___ParserTable___action_table_row946},
-  {(bigint) parser_tables___ParserTable___action_table_row947},
-  {(bigint) parser_tables___ParserTable___action_table_row948},
-  {(bigint) parser_tables___ParserTable___action_table_row949},
-  {(bigint) parser_tables___ParserTable___action_table_row950},
-  {(bigint) parser_tables___ParserTable___action_table_row951},
-  {(bigint) parser_tables___ParserTable___action_table_row952},
-  {(bigint) parser_tables___ParserTable___action_table_row953},
-  {(bigint) parser_tables___ParserTable___action_table_row954},
-  {(bigint) parser_tables___ParserTable___action_table_row955},
-  {(bigint) parser_tables___ParserTable___action_table_row956},
-  {(bigint) parser_tables___ParserTable___action_table_row957},
-  {(bigint) parser_tables___ParserTable___action_table_row958},
-  {(bigint) parser_tables___ParserTable___action_table_row959},
-  {(bigint) parser_tables___ParserTable___action_table_row960},
-  {(bigint) parser_tables___ParserTable___action_table_row961},
-  {(bigint) parser_tables___ParserTable___action_table_row962},
-  {(bigint) parser_tables___ParserTable___action_table_row963},
-  {(bigint) parser_tables___ParserTable___action_table_row964},
-  {(bigint) parser_tables___ParserTable___action_table_row965},
-  {(bigint) parser_tables___ParserTable___action_table_row966},
-  {(bigint) parser_tables___ParserTable___action_table_row967},
-  {(bigint) parser_tables___ParserTable___action_table_row968},
-  {(bigint) parser_tables___ParserTable___action_table_row969},
-  {(bigint) parser_tables___ParserTable___action_table_row970},
-  {(bigint) parser_tables___ParserTable___action_table_row971},
-  {(bigint) parser_tables___ParserTable___action_table_row972},
-  {(bigint) parser_tables___ParserTable___action_table_row973},
-  {(bigint) parser_tables___ParserTable___action_table_row974},
-  {(bigint) parser_tables___ParserTable___action_table_row975},
-  {(bigint) parser_tables___ParserTable___action_table_row976},
-  {(bigint) parser_tables___ParserTable___action_table_row977},
-  {(bigint) parser_tables___ParserTable___action_table_row978},
-  {(bigint) parser_tables___ParserTable___action_table_row979},
-  {(bigint) parser_tables___ParserTable___action_table_row980},
-  {(bigint) parser_tables___ParserTable___action_table_row981},
-  {(bigint) parser_tables___ParserTable___action_table_row982},
-  {(bigint) parser_tables___ParserTable___action_table_row983},
-  {(bigint) parser_tables___ParserTable___action_table_row984},
-  {(bigint) parser_tables___ParserTable___action_table_row985},
-  {(bigint) parser_tables___ParserTable___action_table_row986},
-  {(bigint) parser_tables___ParserTable___action_table_row987},
-  {(bigint) parser_tables___ParserTable___action_table_row988},
-  {(bigint) parser_tables___ParserTable___action_table_row989},
-  {(bigint) parser_tables___ParserTable___action_table_row990},
-  {(bigint) parser_tables___ParserTable___action_table_row991},
-  {(bigint) parser_tables___ParserTable___action_table_row992},
-  {(bigint) parser_tables___ParserTable___action_table_row993},
-  {(bigint) parser_tables___ParserTable___action_table_row994},
-  {(bigint) parser_tables___ParserTable___action_table_row995},
-  {(bigint) parser_tables___ParserTable___action_table_row996},
-  {(bigint) parser_tables___ParserTable___action_table_row997},
-  {(bigint) parser_tables___ParserTable___action_table_row998},
-  {(bigint) parser_tables___ParserTable___action_table_row999},
-  {(bigint) parser_tables___ParserTable___action_table_row1000},
-  {(bigint) parser_tables___ParserTable___action_table_row1001},
-  {(bigint) parser_tables___ParserTable___action_table_row1002},
-  {(bigint) parser_tables___ParserTable___action_table_row1003},
-  {(bigint) parser_tables___ParserTable___action_table_row1004},
-  {(bigint) parser_tables___ParserTable___action_table_row1005},
-  {(bigint) parser_tables___ParserTable___action_table_row1006},
-  {(bigint) parser_tables___ParserTable___action_table_row1007},
-  {(bigint) parser_tables___ParserTable___action_table_row1008},
-  {(bigint) parser_tables___ParserTable___action_table_row1009},
-  {(bigint) parser_tables___ParserTable___action_table_row1010},
-  {(bigint) parser_tables___ParserTable___action_table_row1011},
-  {(bigint) parser_tables___ParserTable___action_table_row1012},
-  {(bigint) parser_tables___ParserTable___action_table_row1013},
-  {(bigint) parser_tables___ParserTable___action_table_row1014},
-  {(bigint) parser_tables___ParserTable___action_table_row1015},
-  {(bigint) parser_tables___ParserTable___action_table_row1016},
-  {(bigint) parser_tables___ParserTable___action_table_row1017},
-  {(bigint) parser_tables___ParserTable___action_table_row1018},
-  {(bigint) parser_tables___ParserTable___action_table_row1019},
-  {(bigint) parser_tables___ParserTable___action_table_row1020},
-  {(bigint) parser_tables___ParserTable___action_table_row1021},
-  {(bigint) parser_tables___ParserTable___action_table_row1022},
-  {(bigint) parser_tables___ParserTable___action_table_row1023},
-  {(bigint) parser_tables___ParserTable___action_table_row1024},
-  {(bigint) parser_tables___ParserTable___action_table_row1025},
-  {(bigint) parser_tables___ParserTable___action_table_row1026},
-  {(bigint) parser_tables___ParserTable___action_table_row1027},
-  {(bigint) parser_tables___ParserTable___action_table_row1028},
-  {(bigint) parser_tables___ParserTable___action_table_row1029},
-  {(bigint) parser_tables___ParserTable___action_table_row1030},
-  {(bigint) parser_tables___ParserTable___action_table_row1031},
-  {(bigint) parser_tables___ParserTable___action_table_row1032},
-  {(bigint) parser_tables___ParserTable___action_table_row1033},
-  {(bigint) parser_tables___ParserTable___action_table_row1034},
-  {(bigint) parser_tables___ParserTable___action_table_row1035},
-  {(bigint) parser_tables___ParserTable___action_table_row1036},
-  {(bigint) parser_tables___ParserTable___action_table_row1037},
-  {(bigint) parser_tables___ParserTable___action_table_row1038},
-  {(bigint) parser_tables___ParserTable___action_table_row1039},
-  {(bigint) parser_tables___ParserTable___action_table_row1040},
-  {(bigint) parser_tables___ParserTable___action_table_row1041},
-  {(bigint) parser_tables___ParserTable___action_table_row1042},
-  {(bigint) parser_tables___ParserTable___action_table_row1043},
-  {(bigint) parser_tables___ParserTable___action_table_row1044},
-  {(bigint) parser_tables___ParserTable___action_table_row1045},
-  {(bigint) parser_tables___ParserTable___action_table_row1046},
-  {(bigint) parser_tables___ParserTable___action_table_row1047},
-  {(bigint) parser_tables___ParserTable___action_table_row1048},
-  {(bigint) parser_tables___ParserTable___action_table_row1049},
-  {(bigint) parser_tables___ParserTable___action_table_row1050},
-  {(bigint) parser_tables___ParserTable___action_table_row1051},
-  {(bigint) parser_tables___ParserTable___action_table_row1052},
-  {(bigint) parser_tables___ParserTable___action_table_row1053},
-  {(bigint) parser_tables___ParserTable___action_table_row1054},
-  {(bigint) parser_tables___ParserTable___action_table_row1055},
-  {(bigint) parser_tables___ParserTable___action_table_row1056},
-  {(bigint) parser_tables___ParserTable___action_table_row1057},
-  {(bigint) parser_tables___ParserTable___action_table_row1058},
-  {(bigint) parser_tables___ParserTable___action_table_row1059},
-  {(bigint) parser_tables___ParserTable___action_table_row1060},
-  {(bigint) parser_tables___ParserTable___action_table_row1061},
-  {(bigint) parser_tables___ParserTable___action_table_row1062},
-  {(bigint) parser_tables___ParserTable___action_table_row1063},
-  {(bigint) parser_tables___ParserTable___action_table_row1064},
-  {(bigint) parser_tables___ParserTable___action_table_row1065},
-  {(bigint) parser_tables___ParserTable___action_table_row1066},
-  {(bigint) parser_tables___ParserTable___action_table_row1067},
-  {(bigint) parser_tables___ParserTable___action_table_row1068},
-  {(bigint) parser_tables___ParserTable___action_table_row1069},
-  {(bigint) parser_tables___ParserTable___action_table_row1070},
-  {(bigint) parser_tables___ParserTable___action_table_row1071},
-  {(bigint) parser_tables___ParserTable___action_table_row1072},
-  {(bigint) parser_tables___ParserTable___action_table_row1073},
-  {(bigint) parser_tables___ParserTable___action_table_row1074},
-  {(bigint) parser_tables___ParserTable___action_table_row1075},
-  {(bigint) parser_tables___ParserTable___action_table_row1076},
-  {(bigint) parser_tables___ParserTable___action_table_row1077},
-  {(bigint) parser_tables___ParserTable___action_table_row1078},
-  {(bigint) parser_tables___ParserTable___action_table_row1079},
-  {(bigint) parser_tables___ParserTable___action_table_row1080},
-  {(bigint) parser_tables___ParserTable___action_table_row1081},
-  {(bigint) parser_tables___ParserTable___action_table_row1082},
-  {(bigint) parser_tables___ParserTable___action_table_row1083},
-  {(bigint) parser_tables___ParserTable___action_table_row1084},
-  {(bigint) parser_tables___ParserTable___action_table_row1085},
-  {(bigint) parser_tables___ParserTable___action_table_row1086},
-  {(bigint) parser_tables___ParserTable___action_table_row1087},
-  {(bigint) parser_tables___ParserTable___action_table_row1088},
-  {(bigint) parser_tables___ParserTable___action_table_row1089},
-  {(bigint) parser_tables___ParserTable___action_table_row1090},
-  {(bigint) parser_tables___ParserTable___action_table_row1091},
-  {(bigint) parser_tables___ParserTable___action_table_row1092},
-  {(bigint) parser_tables___ParserTable___action_table_row1093},
-  {(bigint) parser_tables___ParserTable___action_table_row1094},
-  {(bigint) parser_tables___ParserTable___action_table_row1095},
-  {(bigint) parser_tables___ParserTable___action_table_row1096},
-  {(bigint) parser_tables___ParserTable___action_table_row1097},
-  {(bigint) parser_tables___ParserTable___action_table_row1098},
-  {(bigint) parser_tables___ParserTable___action_table_row1099},
-  {(bigint) parser_tables___ParserTable___action_table_row1100},
-  {(bigint) parser_tables___ParserTable___action_table_row1101},
-  {(bigint) parser_tables___ParserTable___action_table_row1102},
-  {(bigint) parser_tables___ParserTable___action_table_row1103},
-  {(bigint) parser_tables___ParserTable___action_table_row1104},
-  {(bigint) parser_tables___ParserTable___action_table_row1105},
-  {(bigint) parser_tables___ParserTable___action_table_row1106},
-  {(bigint) parser_tables___ParserTable___action_table_row1107},
-  {(bigint) parser_tables___ParserTable___action_table_row1108},
-  {(bigint) parser_tables___ParserTable___action_table_row1109},
-  {(bigint) parser_tables___ParserTable___action_table_row1110},
-  {(bigint) parser_tables___ParserTable___action_table_row1111},
-  {(bigint) parser_tables___ParserTable___action_table_row1112},
-  {(bigint) parser_tables___ParserTable___action_table_row1113},
-  {(bigint) parser_tables___ParserTable___action_table_row1114},
-  {(bigint) parser_tables___ParserTable___action_table_row1115},
-  {(bigint) parser_tables___ParserTable___action_table_row1116},
-  {(bigint) parser_tables___ParserTable___action_table_row1117},
-  {(bigint) parser_tables___ParserTable___action_table_row1118},
-  {(bigint) parser_tables___ParserTable___action_table_row1119},
-  {(bigint) parser_tables___ParserTable___action_table_row1120},
-  {(bigint) parser_tables___ParserTable___action_table_row1121},
-  {(bigint) parser_tables___ParserTable___action_table_row1122},
-  {(bigint) parser_tables___ParserTable___action_table_row1123},
-  {(bigint) parser_tables___ParserTable___action_table_row1124},
-  {(bigint) parser_tables___ParserTable___action_table_row1125},
-  {(bigint) parser_tables___ParserTable___action_table_row1126},
-  {(bigint) parser_tables___ParserTable___action_table_row1127},
-  {(bigint) parser_tables___ParserTable___action_table_row1128},
-  {(bigint) parser_tables___ParserTable___action_table_row1129},
-  {(bigint) parser_tables___ParserTable___action_table_row1130},
-  {(bigint) parser_tables___ParserTable___action_table_row1131},
-  {(bigint) parser_tables___ParserTable___action_table_row1132},
-  {(bigint) parser_tables___ParserTable___action_table_row1133},
-  {(bigint) parser_tables___ParserTable___action_table_row1134},
-  {(bigint) parser_tables___ParserTable___action_table_row1135},
-  {(bigint) parser_tables___ParserTable___action_table_row1136},
-  {(bigint) parser_tables___ParserTable___action_table_row1137},
-  {(bigint) parser_tables___ParserTable___action_table_row1138},
-  {(bigint) parser_tables___ParserTable___action_table_row1139},
-  {(bigint) parser_tables___ParserTable___action_table_row1140},
-  {(bigint) parser_tables___ParserTable___action_table_row1141},
-  {(bigint) parser_tables___ParserTable___action_table_row1142},
-  {(bigint) parser_tables___ParserTable___action_table_row1143},
-  {(bigint) parser_tables___ParserTable___action_table_row1144},
-  {(bigint) parser_tables___ParserTable___action_table_row1145},
-  {(bigint) parser_tables___ParserTable___action_table_row1146},
-  {(bigint) parser_tables___ParserTable___action_table_row1147},
-  {(bigint) parser_tables___ParserTable___action_table_row1148},
-  {(bigint) parser_tables___ParserTable___action_table_row1149},
-  {(bigint) parser_tables___ParserTable___action_table_row1150},
-  {(bigint) parser_tables___ParserTable___action_table_row1151},
-  {(bigint) parser_tables___ParserTable___action_table_row1152},
-  {(bigint) parser_tables___ParserTable___action_table_row1153},
-  {(bigint) parser_tables___ParserTable___action_table_row1154},
-  {(bigint) parser_tables___ParserTable___action_table_row1155},
-  {(bigint) parser_tables___ParserTable___action_table_row1156},
-  {(bigint) parser_tables___ParserTable___action_table_row1157},
-  {(bigint) parser_tables___ParserTable___action_table_row1158},
-  {(bigint) parser_tables___ParserTable___action_table_row1159},
-  {(bigint) parser_tables___ParserTable___action_table_row1160},
-  {(bigint) parser_tables___ParserTable___action_table_row1161},
-  {(bigint) parser_tables___ParserTable___action_table_row1162},
-  {(bigint) parser_tables___ParserTable___action_table_row1163},
-  {(bigint) parser_tables___ParserTable___action_table_row1164},
-  {(bigint) parser_tables___ParserTable___action_table_row1165},
-  {(bigint) parser_tables___ParserTable___action_table_row1166},
-  {(bigint) parser_tables___ParserTable___action_table_row1167},
-  {(bigint) parser_tables___ParserTable___action_table_row1168},
-  {(bigint) parser_tables___ParserTable___action_table_row1169},
-  {(bigint) parser_tables___ParserTable___action_table_row1170},
-  {(bigint) parser_tables___ParserTable___action_table_row1171},
-  {(bigint) parser_tables___ParserTable___action_table_row1172},
-  {(bigint) parser_tables___ParserTable___action_table_row1173},
-  {(bigint) parser_tables___ParserTable___action_table_row1174},
-  {(bigint) parser_tables___ParserTable___action_table_row1175},
-  {(bigint) parser_tables___ParserTable___action_table_row1176},
-  {(bigint) parser_tables___ParserTable___action_table_row1177},
-  {(bigint) parser_tables___ParserTable___action_table_row1178},
-  {(bigint) parser_tables___ParserTable___action_table_row1179},
-  {(bigint) parser_tables___ParserTable___action_table_row1180},
-  {(bigint) parser_tables___ParserTable___action_table_row1181},
-  {(bigint) parser_tables___ParserTable___action_table_row1182},
-  {(bigint) parser_tables___ParserTable___action_table_row1183},
-  {(bigint) parser_tables___ParserTable___action_table_row1184},
-  {(bigint) parser_tables___ParserTable___action_table_row1185},
-  {(bigint) parser_tables___ParserTable___action_table_row1186},
-  {(bigint) parser_tables___ParserTable___action_table_row1187},
-  {(bigint) parser_tables___ParserTable___action_table_row1188},
-  {(bigint) parser_tables___ParserTable___action_table_row1189},
-  {(bigint) parser_tables___ParserTable___action_table_row1190},
-  {(bigint) parser_tables___ParserTable___action_table_row1191},
-  {(bigint) parser_tables___ParserTable___action_table_row1192},
-  {(bigint) parser_tables___ParserTable___action_table_row1193},
-  {(bigint) parser_tables___ParserTable___action_table_row1194},
-  {(bigint) parser_tables___ParserTable___action_table_row1195},
-  {(bigint) parser_tables___ParserTable___action_table_row1196},
-  {(bigint) parser_tables___ParserTable___action_table_row1197},
-  {(bigint) parser_tables___ParserTable___action_table_row1198},
-  {(bigint) parser_tables___ParserTable___action_table_row1199},
-  {(bigint) parser_tables___ParserTable___action_table_row1200},
-  {(bigint) parser_tables___ParserTable___action_table_row1201},
-  {(bigint) parser_tables___ParserTable___action_table_row1202},
-  {(bigint) parser_tables___ParserTable___action_table_row1203},
-  {(bigint) parser_tables___ParserTable___action_table_row1204},
-  {(bigint) parser_tables___ParserTable___action_table_row1205},
-  {(bigint) parser_tables___ParserTable___action_table_row1206},
-  {(bigint) parser_tables___ParserTable___action_table_row1207},
-  {(bigint) parser_tables___ParserTable___action_table_row1208},
-  {(bigint) parser_tables___ParserTable___action_table_row1209},
-  {(bigint) parser_tables___ParserTable___action_table_row1210},
-  {(bigint) parser_tables___ParserTable___action_table_row1211},
-  {(bigint) parser_tables___ParserTable___action_table_row1212},
-  {(bigint) parser_tables___ParserTable___action_table_row1213},
-  {(bigint) parser_tables___ParserTable___action_table_row1214},
-  {(bigint) parser_tables___ParserTable___action_table_row1215},
-  {(bigint) parser_tables___ParserTable___action_table_row1216},
-  {(bigint) parser_tables___ParserTable___action_table_row1217},
-  {(bigint) parser_tables___ParserTable___action_table_row1218},
-  {(bigint) parser_tables___ParserTable___action_table_row1219},
-  {(bigint) parser_tables___ParserTable___action_table_row1220},
-  {(bigint) parser_tables___ParserTable___action_table_row1221},
-  {(bigint) parser_tables___ParserTable___action_table_row1222},
-  {(bigint) parser_tables___ParserTable___action_table_row1223},
-  {(bigint) parser_tables___ParserTable___action_table_row1224},
-  {(bigint) parser_tables___ParserTable___action_table_row1225},
-  {(bigint) parser_tables___ParserTable___action_table_row1226},
-  {(bigint) parser_tables___ParserTable___action_table_row1227},
-  {(bigint) parser_tables___ParserTable___action_table_row1228},
-  {(bigint) parser_tables___ParserTable___action_table_row1229},
-  {(bigint) parser_tables___ParserTable___action_table_row1230},
-  {(bigint) parser_tables___ParserTable___action_table_row1231},
-  {(bigint) parser_tables___ParserTable___action_table_row1232},
-  {(bigint) parser_tables___ParserTable___action_table_row1233},
-  {(bigint) parser_tables___ParserTable___action_table_row1234},
-  {(bigint) parser_tables___ParserTable___action_table_row1235},
-  {(bigint) parser_tables___ParserTable___action_table_row1236},
-  {(bigint) parser_tables___ParserTable___action_table_row1237},
-  {(bigint) parser_tables___ParserTable___action_table_row1238},
-  {(bigint) parser_tables___ParserTable___action_table_row1239},
-  {(bigint) parser_tables___ParserTable___action_table_row1240},
-  {(bigint) parser_tables___ParserTable___action_table_row1241},
-  {(bigint) parser_tables___ParserTable___action_table_row1242},
-  {(bigint) parser_tables___ParserTable___action_table_row1243},
-  {(bigint) parser_tables___ParserTable___action_table_row1244},
-  {(bigint) parser_tables___ParserTable___action_table_row1245},
-  {(bigint) parser_tables___ParserTable___action_table_row1246},
-  {(bigint) parser_tables___ParserTable___action_table_row1247},
-  {(bigint) parser_tables___ParserTable___action_table_row1248},
-  {(bigint) parser_tables___ParserTable___action_table_row1249},
-  {(bigint) parser_tables___ParserTable___action_table_row1250},
-  {(bigint) parser_tables___ParserTable___action_table_row1251},
-  {(bigint) parser_tables___ParserTable___action_table_row1252},
-  {(bigint) parser_tables___ParserTable___action_table_row1253},
-  {(bigint) parser_tables___ParserTable___action_table_row1254},
-  {(bigint) parser_tables___ParserTable___action_table_row1255},
-  {(bigint) parser_tables___ParserTable___action_table_row1256},
-  {(bigint) parser_tables___ParserTable___action_table_row1257},
-  {(bigint) parser_tables___ParserTable___action_table_row1258},
-  {(bigint) parser_tables___ParserTable___action_table_row1259},
-  {(bigint) parser_tables___ParserTable___action_table_row1260},
-  {(bigint) parser_tables___ParserTable___action_table_row1261},
-  {(bigint) parser_tables___ParserTable___action_table_row1262},
-  {(bigint) parser_tables___ParserTable___action_table_row1263},
-  {(bigint) parser_tables___ParserTable___action_table_row1264},
-  {(bigint) parser_tables___ParserTable___action_table_row1265},
-  {(bigint) parser_tables___ParserTable___action_table_row1266},
-  {(bigint) parser_tables___ParserTable___action_table_row1267},
-  {(bigint) parser_tables___ParserTable___action_table_row1268},
-  {(bigint) parser_tables___ParserTable___action_table_row1269},
-  {(bigint) parser_tables___ParserTable___action_table_row1270},
-  {(bigint) parser_tables___ParserTable___action_table_row1271},
-  {(bigint) parser_tables___ParserTable___action_table_row1272},
-  {(bigint) parser_tables___ParserTable___action_table_row1273},
-  {(bigint) parser_tables___ParserTable___action_table_row1274},
-  {(bigint) parser_tables___ParserTable___action_table_row1275},
-  {(bigint) parser_tables___ParserTable___action_table_row1276},
-  {(bigint) parser_tables___ParserTable___action_table_row1277},
-  {(bigint) parser_tables___ParserTable___action_table_row1278},
-  {(bigint) parser_tables___ParserTable___action_table_row1279},
-  {(bigint) parser_tables___ParserTable___action_table_row1280},
-  {(bigint) parser_tables___ParserTable___action_table_row1281},
-  {(bigint) parser_tables___ParserTable___action_table_row1282},
-  {(bigint) parser_tables___ParserTable___action_table_row1283},
-  {(bigint) parser_tables___ParserTable___action_table_row1284},
-  {(bigint) parser_tables___ParserTable___action_table_row1285},
-  {(bigint) parser_tables___ParserTable___action_table_row1286},
-  {(bigint) parser_tables___ParserTable___action_table_row1287},
-  {(bigint) parser_tables___ParserTable___action_table_row1288},
-  {(bigint) parser_tables___ParserTable___action_table_row1289},
-  {(bigint) parser_tables___ParserTable___action_table_row1290},
-  {(bigint) parser_tables___ParserTable___action_table_row1291},
-  {(bigint) parser_tables___ParserTable___action_table_row1292},
-  {(bigint) parser_tables___ParserTable___action_table_row1293},
-  {(bigint) parser_tables___ParserTable___action_table_row1294},
-  {(bigint) parser_tables___ParserTable___action_table_row1295},
-  {(bigint) parser_tables___ParserTable___action_table_row1296},
-  {(bigint) parser_tables___ParserTable___action_table_row1297},
-  {(bigint) parser_tables___ParserTable___action_table_row1298},
-  {(bigint) parser_tables___ParserTable___action_table_row1299},
-  {(bigint) parser_tables___ParserTable___action_table_row1300},
-  {(bigint) parser_tables___ParserTable___action_table_row1301},
-  {(bigint) parser_tables___ParserTable___action_table_row1302},
-  {(bigint) parser_tables___ParserTable___action_table_row1303},
-  {(bigint) parser_tables___ParserTable___action_table_row1304},
-  {(bigint) parser_tables___ParserTable___action_table_row1305},
-  {(bigint) parser_tables___ParserTable___action_table_row1306},
-  {(bigint) parser_tables___ParserTable___action_table_row1307},
-  {(bigint) parser_tables___ParserTable___action_table_row1308},
-  {(bigint) parser_tables___ParserTable___action_table_row1309},
-  {(bigint) parser_tables___ParserTable___action_table_row1310},
-  {(bigint) parser_tables___ParserTable___action_table_row1311},
-  {(bigint) parser_tables___ParserTable___action_table_row1312},
-  {(bigint) parser_tables___ParserTable___action_table_row1313},
-  {(bigint) parser_tables___ParserTable___action_table_row1314},
-  {(bigint) parser_tables___ParserTable___action_table_row1315},
-  {(bigint) parser_tables___ParserTable___action_table_row1316},
-  {(bigint) parser_tables___ParserTable___action_table_row1317},
-  {(bigint) parser_tables___ParserTable___action_table_row1318},
-  {(bigint) parser_tables___ParserTable___action_table_row1319},
-  {(bigint) parser_tables___ParserTable___action_table_row1320},
-  {(bigint) parser_tables___ParserTable___action_table_row1321},
-  {(bigint) parser_tables___ParserTable___action_table_row1322},
-  {(bigint) parser_tables___ParserTable___action_table_row1323},
-  {(bigint) parser_tables___ParserTable___action_table_row1324},
-  {(bigint) parser_tables___ParserTable___action_table_row1325},
-  {(bigint) parser_tables___ParserTable___action_table_row1326},
-  {(bigint) parser_tables___ParserTable___action_table_row1327},
-  {(bigint) parser_tables___ParserTable___action_table_row1328},
-  {(bigint) parser_tables___ParserTable___action_table_row1329},
-  {(bigint) parser_tables___ParserTable___action_table_row1330},
-  {(bigint) parser_tables___ParserTable___action_table_row1331},
-  {(bigint) parser_tables___ParserTable___action_table_row1332},
-  {(bigint) parser_tables___ParserTable___action_table_row1333},
-  {(bigint) parser_tables___ParserTable___action_table_row1334},
-  {(bigint) parser_tables___ParserTable___action_table_row1335},
-  {(bigint) parser_tables___ParserTable___action_table_row1336},
-  {(bigint) parser_tables___ParserTable___action_table_row1337},
-  {(bigint) parser_tables___ParserTable___action_table_row1338},
-  {(bigint) parser_tables___ParserTable___action_table_row1339},
-  {(bigint) parser_tables___ParserTable___action_table_row1340},
-  {(bigint) parser_tables___ParserTable___action_table_row1341},
-  {(bigint) parser_tables___ParserTable___action_table_row1342},
-  {(bigint) parser_tables___ParserTable___action_table_row1343},
-  {(bigint) parser_tables___ParserTable___action_table_row1344},
-  {(bigint) parser_tables___ParserTable___action_table_row1345},
-  {(bigint) parser_tables___ParserTable___action_table_row1346},
-  {(bigint) parser_tables___ParserTable___action_table_row1347},
-  {(bigint) parser_tables___ParserTable___action_table_row1348},
-  {(bigint) parser_tables___ParserTable___action_table_row1349},
-  {(bigint) parser_tables___ParserTable___action_table_row1350},
-  {(bigint) parser_tables___ParserTable___action_table_row1351},
-  {(bigint) parser_tables___ParserTable___action_table_row1352},
-  {(bigint) parser_tables___ParserTable___action_table_row1353},
-  {(bigint) parser_tables___ParserTable___action_table_row1354},
-  {(bigint) parser_tables___ParserTable___action_table_row1355},
-  {(bigint) parser_tables___ParserTable___action_table_row1356},
-  {(bigint) parser_tables___ParserTable___action_table_row1357},
-  {(bigint) parser_tables___ParserTable___action_table_row1358},
-  {(bigint) parser_tables___ParserTable___action_table_row1359},
-  {(bigint) parser_tables___ParserTable___action_table_row1360},
-  {(bigint) parser_tables___ParserTable___action_table_row1361},
-  {(bigint) parser_tables___ParserTable___action_table_row1362},
-  {(bigint) parser_tables___ParserTable___action_table_row1363},
-  {(bigint) parser_tables___ParserTable___action_table_row1364},
-  {(bigint) parser_tables___ParserTable___action_table_row1365},
-  {(bigint) parser_tables___ParserTable___action_table_row1366},
-  {(bigint) parser_tables___ParserTable___action_table_row1367},
-  {(bigint) parser_tables___ParserTable___action_table_row1368},
-  {(bigint) parser_tables___ParserTable___action_table_row1369},
-  {(bigint) parser_tables___ParserTable___action_table_row1370},
-  {(bigint) parser_tables___ParserTable___action_table_row1371},
-  {(bigint) parser_tables___ParserTable___action_table_row1372},
-  {(bigint) parser_tables___ParserTable___action_table_row1373},
-  {(bigint) parser_tables___ParserTable___action_table_row1374},
-  {(bigint) parser_tables___ParserTable___action_table_row1375},
-  {(bigint) parser_tables___ParserTable___action_table_row1376},
-  {(bigint) parser_tables___ParserTable___action_table_row1377},
-  {(bigint) parser_tables___ParserTable___action_table_row1378},
-  {(bigint) parser_tables___ParserTable___action_table_row1379},
-  {(bigint) parser_tables___ParserTable___action_table_row1380},
-  {(bigint) parser_tables___ParserTable___action_table_row1381},
-  {(bigint) parser_tables___ParserTable___action_table_row1382},
-  {(bigint) parser_tables___ParserTable___action_table_row1383},
-  {(bigint) parser_tables___ParserTable___action_table_row1384},
-  {(bigint) parser_tables___ParserTable___action_table_row1385},
-  {(bigint) parser_tables___ParserTable___action_table_row1386},
-  {(bigint) parser_tables___ParserTable___action_table_row1387},
-  {(bigint) parser_tables___ParserTable___action_table_row1388},
-  {(bigint) parser_tables___ParserTable___action_table_row1389},
-  {(bigint) parser_tables___ParserTable___action_table_row1390},
-  {(bigint) parser_tables___ParserTable___action_table_row1391},
-  {(bigint) parser_tables___ParserTable___action_table_row1392},
-  {(bigint) parser_tables___ParserTable___action_table_row1393},
-  {(bigint) parser_tables___ParserTable___action_table_row1394},
-  {(bigint) parser_tables___ParserTable___action_table_row1395},
-  {(bigint) parser_tables___ParserTable___action_table_row1396},
-  {(bigint) parser_tables___ParserTable___action_table_row1397},
-  {(bigint) parser_tables___ParserTable___action_table_row1398},
-  {(bigint) parser_tables___ParserTable___action_table_row1399},
-  {(bigint) parser_tables___ParserTable___action_table_row1400},
-  {(bigint) parser_tables___ParserTable___action_table_row1401},
-  {(bigint) parser_tables___ParserTable___action_table_row1402},
-  {(bigint) parser_tables___ParserTable___action_table_row1403},
-  {(bigint) parser_tables___ParserTable___action_table_row1404},
-  {(bigint) parser_tables___ParserTable___action_table_row1405},
-  {(bigint) parser_tables___ParserTable___action_table_row1406},
-  {(bigint) parser_tables___ParserTable___action_table_row1407},
-  {(bigint) parser_tables___ParserTable___action_table_row1408},
-  {(bigint) parser_tables___ParserTable___action_table_row1409},
-  {(bigint) parser_tables___ParserTable___action_table_row1410},
-  {(bigint) parser_tables___ParserTable___action_table_row1411},
-  {(bigint) parser_tables___ParserTable___action_table_row1412},
-  {(bigint) parser_tables___ParserTable___action_table_row1413},
-  {(bigint) parser_tables___ParserTable___action_table_row1414},
-  {(bigint) parser_tables___ParserTable___action_table_row1415},
-  {(bigint) parser_tables___ParserTable___action_table_row1416},
-  {(bigint) parser_tables___ParserTable___action_table_row1417},
-  {(bigint) parser_tables___ParserTable___action_table_row1418},
-  {(bigint) parser_tables___ParserTable___action_table_row1419},
-  {(bigint) parser_tables___ParserTable___action_table_row1420},
-  {(bigint) parser_tables___ParserTable___action_table_row1421},
-  {(bigint) parser_tables___ParserTable___action_table_row1422},
-  {(bigint) parser_tables___ParserTable___action_table_row1423},
-  {(bigint) parser_tables___ParserTable___action_table_row1424},
-  {(bigint) parser_tables___ParserTable___action_table_row1425},
-  {(bigint) parser_tables___ParserTable___action_table_row1426},
-  {(bigint) parser_tables___ParserTable___action_table_row1427},
-  {(bigint) parser_tables___ParserTable___action_table_row1428},
-  {(bigint) parser_tables___ParserTable___action_table_row1429},
-  {(bigint) parser_tables___ParserTable___action_table_row1430},
-  {(bigint) parser_tables___ParserTable___action_table_row1431},
-  {(bigint) parser_tables___ParserTable___action_table_row1432},
-  {(bigint) parser_tables___ParserTable___action_table_row1433},
-  {(bigint) parser_tables___ParserTable___action_table_row1434},
-  {(bigint) parser_tables___ParserTable___action_table_row1435},
-  {(bigint) parser_tables___ParserTable___action_table_row1436},
-  {(bigint) parser_tables___ParserTable___action_table_row1437},
-  {(bigint) parser_tables___ParserTable___action_table_row1438},
-  {(bigint) parser_tables___ParserTable___action_table_row1439},
-  {(bigint) parser_tables___ParserTable___action_table_row1440},
-  {(bigint) parser_tables___ParserTable___action_table_row1441},
-  {(bigint) parser_tables___ParserTable___action_table_row1442},
-  {(bigint) parser_tables___ParserTable___action_table_row1443},
-  {(bigint) parser_tables___ParserTable___action_table_row1444},
-  {(bigint) parser_tables___ParserTable___action_table_row1445},
-  {(bigint) parser_tables___ParserTable___action_table_row1446},
-  {(bigint) parser_tables___ParserTable___action_table_row1447},
-  {(bigint) parser_tables___ParserTable___action_table_row1448},
-  {(bigint) parser_tables___ParserTable___action_table_row1449},
-  {(bigint) parser_tables___ParserTable___action_table_row1450},
-  {(bigint) parser_tables___ParserTable___action_table_row1451},
-  {(bigint) parser_tables___ParserTable___action_table_row1452},
-  {(bigint) parser_tables___ParserTable___action_table_row1453},
-  {(bigint) parser_tables___ParserTable___action_table_row1454},
-  {(bigint) parser_tables___ParserTable___action_table_row1455},
-  {(bigint) parser_tables___ParserTable___action_table_row1456},
-  {(bigint) parser_tables___ParserTable___action_table_row1457},
-  {(bigint) parser_tables___ParserTable___action_table_row1458},
-  {(bigint) parser_tables___ParserTable___action_table_row1459},
-  {(bigint) parser_tables___ParserTable___action_table_row1460},
-  {(bigint) parser_tables___ParserTable___action_table_row1461},
-  {(bigint) parser_tables___ParserTable___action_table_row1462},
-  {(bigint) parser_tables___ParserTable___action_table_row1463},
-  {(bigint) parser_tables___ParserTable___action_table_row1464},
-  {(bigint) parser_tables___ParserTable___action_table_row1465},
-  {(bigint) parser_tables___ParserTable___action_table_row1466},
-  {(bigint) parser_tables___ParserTable___action_table_row1467},
-  {(bigint) parser_tables___ParserTable___action_table_row1468},
-  {(bigint) parser_tables___ParserTable___action_table_row1469},
-  {(bigint) parser_tables___ParserTable___action_table_row1470},
-  {(bigint) parser_tables___ParserTable___action_table_row1471},
-  {(bigint) parser_tables___ParserTable___action_table_row1472},
-  {(bigint) parser_tables___ParserTable___action_table_row1473},
-  {(bigint) parser_tables___ParserTable___action_table_row1474},
-  {(bigint) parser_tables___ParserTable___action_table_row1475},
-  {(bigint) parser_tables___ParserTable___action_table_row1476},
-  {(bigint) parser_tables___ParserTable___action_table_row1477},
-  {(bigint) parser_tables___ParserTable___action_table_row1478},
-  {(bigint) parser_tables___ParserTable___action_table_row1479},
-  {(bigint) parser_tables___ParserTable___action_table_row1480},
-  {(bigint) parser_tables___ParserTable___action_table_row1481},
-  {(bigint) parser_tables___ParserTable___action_table_row1482},
-  {(bigint) parser_tables___ParserTable___action_table_row1483},
-  {(bigint) parser_tables___ParserTable___action_table_row1484},
-  {(bigint) parser_tables___ParserTable___action_table_row1485},
-  {(bigint) parser_tables___ParserTable___action_table_row1486},
-  {(bigint) parser_tables___ParserTable___action_table_row1487},
-  {(bigint) parser_tables___ParserTable___action_table_row1488},
-  {(bigint) parser_tables___ParserTable___action_table_row1489},
-  {(bigint) parser_tables___ParserTable___action_table_row1490},
-  {(bigint) parser_tables___ParserTable___action_table_row1491},
-  {(bigint) parser_tables___ParserTable___action_table_row1492},
-  {(bigint) parser_tables___ParserTable___action_table_row1493},
-  {(bigint) parser_tables___ParserTable___action_table_row1494},
-  {(bigint) parser_tables___ParserTable___action_table_row1495},
-  {(bigint) parser_tables___ParserTable___action_table_row1496},
-  {(bigint) parser_tables___ParserTable___action_table_row1497},
-  {(bigint) parser_tables___ParserTable___action_table_row1498},
-  {(bigint) parser_tables___ParserTable___action_table_row1499},
-  {(bigint) parser_tables___ParserTable___action_table_row1500},
-  {(bigint) parser_tables___ParserTable___action_table_row1501},
-  {(bigint) parser_tables___ParserTable___action_table_row1502},
-  {(bigint) parser_tables___ParserTable___action_table_row1503},
-  {(bigint) parser_tables___ParserTable___action_table_row1504},
-  {(bigint) parser_tables___ParserTable___action_table_row1505},
-  {(bigint) parser_tables___ParserTable___action_table_row1506},
-  {(bigint) parser_tables___ParserTable___action_table_row1507},
-  {(bigint) parser_tables___ParserTable___action_table_row1508},
-  {(bigint) parser_tables___ParserTable___action_table_row1509},
-  {(bigint) parser_tables___ParserTable___action_table_row1510},
-  {(bigint) parser_tables___ParserTable___action_table_row1511},
-  {(bigint) parser_tables___ParserTable___action_table_row1512},
-  {(bigint) parser_tables___ParserTable___build_goto_table},
-  {(bigint) parser_tables___ParserTable___error_messages},
-  {(bigint) parser_tables___ParserTable___errors},
-  {(bigint) parser_tables___ParserTable___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ParserTable::_action_table */
-/* 2: Attribute ParserTable::_goto_table */
-val_t NEW_ParserTable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_ParserTable;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_tables___ParserTable____action_table(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_tables___ParserTable____goto_table(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ParserTable(val_t self, char *from) {
-}
-val_t NEW_ParserTable_parser_tables___ParserTable___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_ParserTable();
-  parser_tables___ParserTable___init(self, init_table);
-  CHECKNEW_ParserTable(self, "parser_tables::ParserTable::init for ParserTable");
-  return self;
-}
-const classtable_elt_t VFT_State[49] = {
-  {(bigint) 31 /* 0: Identity */},
-  {(bigint) 3 /* 1: State < Object: superclass typecheck marker */},
-  {(bigint) 31 /* 2: State < State: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -45929,22 +17414,147 @@ const classtable_elt_t VFT_State[49] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: State < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 2 /* 62: AbstractArrayRead < Collection: superclass init_table position */},
+  {(bigint) array___AbstractArrayRead___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) array___AbstractArrayRead___is_empty},
+  {(bigint) array___AbstractArrayRead___length},
+  {(bigint) array___AbstractArrayRead___has},
+  {(bigint) array___AbstractArrayRead___has_only},
+  {(bigint) array___AbstractArrayRead___count},
+  {(bigint) abstract_collection___SequenceRead___first},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 75: AbstractArrayRead < MapRead: superclass init_table position */},
+  {(bigint) abstract_collection___MapRead_____bra},
+  {(bigint) array___AbstractArrayRead___has_key},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 81: AbstractArrayRead < SequenceRead: superclass init_table position */},
+  {(bigint) abstract_collection___SequenceRead___last},
+  {(bigint) array___AbstractArrayRead___index_of},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 97: AbstractArrayRead < AbstractArrayRead: superclass init_table position */},
+  {(bigint) array___AbstractArrayRead___last_index_of},
+  {(bigint) array___AbstractArrayRead___index_of_from},
+  {(bigint) array___AbstractArrayRead___last_index_of_from},
+  {(bigint) array___AbstractArrayRead___reversed},
+  {(bigint) array___AbstractArrayRead___copy_to},
+  {(bigint) array___AbstractArrayRead___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AbstractArrayRead::_length */
+void INIT_ATTRIBUTES__AbstractArrayRead(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AbstractArrayRead;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AbstractArrayRead(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_AbstractArrayRead;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AbstractArrayRead(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AbstractArrayRead;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AbstractArrayRead_array___AbstractArrayRead___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AbstractArrayRead_array___AbstractArrayRead___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_AbstractArrayRead();
+  INIT_ATTRIBUTES__AbstractArrayRead(fra.me.REG[0]);
+  array___AbstractArrayRead___init(fra.me.REG[0], init_table);
+  CHECKNEW_AbstractArrayRead(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_AbstractArray[104] = {
+  {(bigint) 3295 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AbstractArray < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 251 /* 5: AbstractArray < Collection: superclass typecheck marker */},
+  {(bigint) 327 /* 6: AbstractArray < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 1915 /* 7: AbstractArray < MapRead: superclass typecheck marker */},
+  {(bigint) 2543 /* 8: AbstractArray < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 2547 /* 9: AbstractArray < SequenceRead: superclass typecheck marker */},
+  {(bigint) 2587 /* 10: AbstractArray < Map: superclass typecheck marker */},
+  {(bigint) 2915 /* 11: AbstractArray < Sequence: superclass typecheck marker */},
+  {(bigint) 2979 /* 12: AbstractArray < AbstractArrayRead: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3295 /* 14: AbstractArray < AbstractArray: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: AbstractArray < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
+  {(bigint) array___AbstractArrayRead_____eqeq},
   {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
+  {(bigint) array___AbstractArrayRead___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -45952,47 +17562,23 @@ const classtable_elt_t VFT_State[49] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: State < State: superclass init_table position */},
-  {(bigint) parser___State___state},
-  {(bigint) parser___State___state__eq},
-  {(bigint) parser___State___nodes},
-  {(bigint) parser___State___nodes__eq},
-  {(bigint) parser___State___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute State::_state */
-/* 2: Attribute State::_nodes */
-val_t NEW_State(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_State;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_State(val_t self, char *from) {
-}
-val_t NEW_State_parser___State___init(val_t p0, val_t p1) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_State();
-  parser___State___init(self, p0, p1, init_table);
-  CHECKNEW_State(self, "parser::State::init for State");
-  return self;
-}
-const classtable_elt_t VFT_Parser[1569] = {
-  {(bigint) 3199 /* 0: Identity */},
-  {(bigint) 3 /* 1: Parser < Object: superclass typecheck marker */},
-  {(bigint) 59 /* 2: Parser < ParserTable: superclass typecheck marker */},
-  {(bigint) 3199 /* 3: Parser < Parser: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 9 /* 48: AbstractArray < AbstractArray: superclass init_table position */},
+  {(bigint) array___AbstractArray___enlarge},
+  {(bigint) array___AbstractArray___insert},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46002,22 +17588,145 @@ const classtable_elt_t VFT_Parser[1569] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Parser < Object: superclass init_table position */},
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 2 /* 62: AbstractArray < Collection: superclass init_table position */},
+  {(bigint) array___AbstractArrayRead___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) array___AbstractArrayRead___is_empty},
+  {(bigint) array___AbstractArrayRead___length},
+  {(bigint) array___AbstractArrayRead___has},
+  {(bigint) array___AbstractArrayRead___has_only},
+  {(bigint) array___AbstractArrayRead___count},
+  {(bigint) abstract_collection___SequenceRead___first},
+  {(bigint) 8 /* 71: AbstractArray < RemovableCollection: superclass init_table position */},
+  {(bigint) array___AbstractArray___clear},
+  {(bigint) array___AbstractArray___remove},
+  {(bigint) array___AbstractArray___remove_all},
+  {(bigint) 1 /* 75: AbstractArray < MapRead: superclass init_table position */},
+  {(bigint) abstract_collection___MapRead_____bra},
+  {(bigint) array___AbstractArrayRead___has_key},
+  {(bigint) 7 /* 78: AbstractArray < SimpleCollection: superclass init_table position */},
+  {(bigint) array___AbstractArray___add},
+  {(bigint) abstract_collection___SimpleCollection___add_all},
+  {(bigint) 0 /* 81: AbstractArray < SequenceRead: superclass init_table position */},
+  {(bigint) abstract_collection___SequenceRead___last},
+  {(bigint) array___AbstractArrayRead___index_of},
+  {(bigint) string___Map___map_join},
+  {(bigint) 6 /* 85: AbstractArray < Map: superclass init_table position */},
+  {(bigint) abstract_collection___Map_____braeq},
+  {(bigint) array___AbstractArray___remove_at},
+  {(bigint) abstract_collection___Map___recover_with},
+  {(bigint) 5 /* 89: AbstractArray < Sequence: superclass init_table position */},
+  {(bigint) abstract_collection___Sequence___first__eq},
+  {(bigint) abstract_collection___Sequence___last__eq},
+  {(bigint) array___AbstractArray___push},
+  {(bigint) abstract_collection___Sequence___append},
+  {(bigint) array___AbstractArray___pop},
+  {(bigint) array___AbstractArray___unshift},
+  {(bigint) array___AbstractArray___shift},
+  {(bigint) 4 /* 97: AbstractArray < AbstractArrayRead: superclass init_table position */},
+  {(bigint) array___AbstractArrayRead___last_index_of},
+  {(bigint) array___AbstractArrayRead___index_of_from},
+  {(bigint) array___AbstractArrayRead___last_index_of_from},
+  {(bigint) array___AbstractArrayRead___reversed},
+  {(bigint) array___AbstractArrayRead___copy_to},
+  {(bigint) array___AbstractArrayRead___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AbstractArray::_length */
+void INIT_ATTRIBUTES__AbstractArray(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AbstractArray;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AbstractArray(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_AbstractArray;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AbstractArray(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AbstractArray;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AbstractArray_array___AbstractArrayRead___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AbstractArray_array___AbstractArrayRead___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_AbstractArray();
+  INIT_ATTRIBUTES__AbstractArray(fra.me.REG[0]);
+  array___AbstractArrayRead___init(fra.me.REG[0], init_table);
+  CHECKNEW_AbstractArray(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_Array[104] = {
+  {(bigint) 3455 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Array < Object: superclass typecheck marker */},
+  {(bigint) 263 /* 3: Array < ArrayCapable: superclass typecheck marker */},
+  {(bigint) 3455 /* 4: Array < Array: superclass typecheck marker */},
+  {(bigint) 251 /* 5: Array < Collection: superclass typecheck marker */},
+  {(bigint) 327 /* 6: Array < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 1915 /* 7: Array < MapRead: superclass typecheck marker */},
+  {(bigint) 2543 /* 8: Array < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 2547 /* 9: Array < SequenceRead: superclass typecheck marker */},
+  {(bigint) 2587 /* 10: Array < Map: superclass typecheck marker */},
+  {(bigint) 2915 /* 11: Array < Sequence: superclass typecheck marker */},
+  {(bigint) 2979 /* 12: Array < AbstractArrayRead: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3295 /* 14: Array < AbstractArray: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: Array < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
+  {(bigint) array___AbstractArrayRead_____eqeq},
   {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
+  {(bigint) array___AbstractArrayRead___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -46025,1572 +17734,254 @@ const classtable_elt_t VFT_Parser[1569] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Array___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: Parser < ParserTable: superclass init_table position */},
-  {(bigint) parser_tables___ParserTable___build_action_table},
-  {(bigint) parser_tables___ParserTable___action_table_row1},
-  {(bigint) parser_tables___ParserTable___action_table_row2},
-  {(bigint) parser_tables___ParserTable___action_table_row3},
-  {(bigint) parser_tables___ParserTable___action_table_row4},
-  {(bigint) parser_tables___ParserTable___action_table_row5},
-  {(bigint) parser_tables___ParserTable___action_table_row6},
-  {(bigint) parser_tables___ParserTable___action_table_row7},
-  {(bigint) parser_tables___ParserTable___action_table_row8},
-  {(bigint) parser_tables___ParserTable___action_table_row9},
-  {(bigint) parser_tables___ParserTable___action_table_row10},
-  {(bigint) parser_tables___ParserTable___action_table_row11},
-  {(bigint) parser_tables___ParserTable___action_table_row12},
-  {(bigint) parser_tables___ParserTable___action_table_row13},
-  {(bigint) parser_tables___ParserTable___action_table_row14},
-  {(bigint) parser_tables___ParserTable___action_table_row15},
-  {(bigint) parser_tables___ParserTable___action_table_row16},
-  {(bigint) parser_tables___ParserTable___action_table_row17},
-  {(bigint) parser_tables___ParserTable___action_table_row18},
-  {(bigint) parser_tables___ParserTable___action_table_row19},
-  {(bigint) parser_tables___ParserTable___action_table_row20},
-  {(bigint) parser_tables___ParserTable___action_table_row21},
-  {(bigint) parser_tables___ParserTable___action_table_row22},
-  {(bigint) parser_tables___ParserTable___action_table_row23},
-  {(bigint) parser_tables___ParserTable___action_table_row24},
-  {(bigint) parser_tables___ParserTable___action_table_row25},
-  {(bigint) parser_tables___ParserTable___action_table_row26},
-  {(bigint) parser_tables___ParserTable___action_table_row27},
-  {(bigint) parser_tables___ParserTable___action_table_row28},
-  {(bigint) parser_tables___ParserTable___action_table_row29},
-  {(bigint) parser_tables___ParserTable___action_table_row30},
-  {(bigint) parser_tables___ParserTable___action_table_row31},
-  {(bigint) parser_tables___ParserTable___action_table_row32},
-  {(bigint) parser_tables___ParserTable___action_table_row33},
-  {(bigint) parser_tables___ParserTable___action_table_row34},
-  {(bigint) parser_tables___ParserTable___action_table_row35},
-  {(bigint) parser_tables___ParserTable___action_table_row36},
-  {(bigint) parser_tables___ParserTable___action_table_row37},
-  {(bigint) parser_tables___ParserTable___action_table_row38},
-  {(bigint) parser_tables___ParserTable___action_table_row39},
-  {(bigint) parser_tables___ParserTable___action_table_row40},
-  {(bigint) parser_tables___ParserTable___action_table_row41},
-  {(bigint) parser_tables___ParserTable___action_table_row42},
-  {(bigint) parser_tables___ParserTable___action_table_row43},
-  {(bigint) parser_tables___ParserTable___action_table_row44},
-  {(bigint) parser_tables___ParserTable___action_table_row45},
-  {(bigint) parser_tables___ParserTable___action_table_row46},
-  {(bigint) parser_tables___ParserTable___action_table_row47},
-  {(bigint) parser_tables___ParserTable___action_table_row48},
-  {(bigint) parser_tables___ParserTable___action_table_row49},
-  {(bigint) parser_tables___ParserTable___action_table_row50},
-  {(bigint) parser_tables___ParserTable___action_table_row51},
-  {(bigint) parser_tables___ParserTable___action_table_row52},
-  {(bigint) parser_tables___ParserTable___action_table_row53},
-  {(bigint) parser_tables___ParserTable___action_table_row54},
-  {(bigint) parser_tables___ParserTable___action_table_row55},
-  {(bigint) parser_tables___ParserTable___action_table_row56},
-  {(bigint) parser_tables___ParserTable___action_table_row57},
-  {(bigint) parser_tables___ParserTable___action_table_row58},
-  {(bigint) parser_tables___ParserTable___action_table_row59},
-  {(bigint) parser_tables___ParserTable___action_table_row60},
-  {(bigint) parser_tables___ParserTable___action_table_row61},
-  {(bigint) parser_tables___ParserTable___action_table_row62},
-  {(bigint) parser_tables___ParserTable___action_table_row63},
-  {(bigint) parser_tables___ParserTable___action_table_row64},
-  {(bigint) parser_tables___ParserTable___action_table_row65},
-  {(bigint) parser_tables___ParserTable___action_table_row66},
-  {(bigint) parser_tables___ParserTable___action_table_row67},
-  {(bigint) parser_tables___ParserTable___action_table_row68},
-  {(bigint) parser_tables___ParserTable___action_table_row69},
-  {(bigint) parser_tables___ParserTable___action_table_row70},
-  {(bigint) parser_tables___ParserTable___action_table_row71},
-  {(bigint) parser_tables___ParserTable___action_table_row72},
-  {(bigint) parser_tables___ParserTable___action_table_row73},
-  {(bigint) parser_tables___ParserTable___action_table_row74},
-  {(bigint) parser_tables___ParserTable___action_table_row75},
-  {(bigint) parser_tables___ParserTable___action_table_row76},
-  {(bigint) parser_tables___ParserTable___action_table_row77},
-  {(bigint) parser_tables___ParserTable___action_table_row78},
-  {(bigint) parser_tables___ParserTable___action_table_row79},
-  {(bigint) parser_tables___ParserTable___action_table_row80},
-  {(bigint) parser_tables___ParserTable___action_table_row81},
-  {(bigint) parser_tables___ParserTable___action_table_row82},
-  {(bigint) parser_tables___ParserTable___action_table_row83},
-  {(bigint) parser_tables___ParserTable___action_table_row84},
-  {(bigint) parser_tables___ParserTable___action_table_row85},
-  {(bigint) parser_tables___ParserTable___action_table_row86},
-  {(bigint) parser_tables___ParserTable___action_table_row87},
-  {(bigint) parser_tables___ParserTable___action_table_row88},
-  {(bigint) parser_tables___ParserTable___action_table_row89},
-  {(bigint) parser_tables___ParserTable___action_table_row90},
-  {(bigint) parser_tables___ParserTable___action_table_row91},
-  {(bigint) parser_tables___ParserTable___action_table_row92},
-  {(bigint) parser_tables___ParserTable___action_table_row93},
-  {(bigint) parser_tables___ParserTable___action_table_row94},
-  {(bigint) parser_tables___ParserTable___action_table_row95},
-  {(bigint) parser_tables___ParserTable___action_table_row96},
-  {(bigint) parser_tables___ParserTable___action_table_row97},
-  {(bigint) parser_tables___ParserTable___action_table_row98},
-  {(bigint) parser_tables___ParserTable___action_table_row99},
-  {(bigint) parser_tables___ParserTable___action_table_row100},
-  {(bigint) parser_tables___ParserTable___action_table_row101},
-  {(bigint) parser_tables___ParserTable___action_table_row102},
-  {(bigint) parser_tables___ParserTable___action_table_row103},
-  {(bigint) parser_tables___ParserTable___action_table_row104},
-  {(bigint) parser_tables___ParserTable___action_table_row105},
-  {(bigint) parser_tables___ParserTable___action_table_row106},
-  {(bigint) parser_tables___ParserTable___action_table_row107},
-  {(bigint) parser_tables___ParserTable___action_table_row108},
-  {(bigint) parser_tables___ParserTable___action_table_row109},
-  {(bigint) parser_tables___ParserTable___action_table_row110},
-  {(bigint) parser_tables___ParserTable___action_table_row111},
-  {(bigint) parser_tables___ParserTable___action_table_row112},
-  {(bigint) parser_tables___ParserTable___action_table_row113},
-  {(bigint) parser_tables___ParserTable___action_table_row114},
-  {(bigint) parser_tables___ParserTable___action_table_row115},
-  {(bigint) parser_tables___ParserTable___action_table_row116},
-  {(bigint) parser_tables___ParserTable___action_table_row117},
-  {(bigint) parser_tables___ParserTable___action_table_row118},
-  {(bigint) parser_tables___ParserTable___action_table_row119},
-  {(bigint) parser_tables___ParserTable___action_table_row120},
-  {(bigint) parser_tables___ParserTable___action_table_row121},
-  {(bigint) parser_tables___ParserTable___action_table_row122},
-  {(bigint) parser_tables___ParserTable___action_table_row123},
-  {(bigint) parser_tables___ParserTable___action_table_row124},
-  {(bigint) parser_tables___ParserTable___action_table_row125},
-  {(bigint) parser_tables___ParserTable___action_table_row126},
-  {(bigint) parser_tables___ParserTable___action_table_row127},
-  {(bigint) parser_tables___ParserTable___action_table_row128},
-  {(bigint) parser_tables___ParserTable___action_table_row129},
-  {(bigint) parser_tables___ParserTable___action_table_row130},
-  {(bigint) parser_tables___ParserTable___action_table_row131},
-  {(bigint) parser_tables___ParserTable___action_table_row132},
-  {(bigint) parser_tables___ParserTable___action_table_row133},
-  {(bigint) parser_tables___ParserTable___action_table_row134},
-  {(bigint) parser_tables___ParserTable___action_table_row135},
-  {(bigint) parser_tables___ParserTable___action_table_row136},
-  {(bigint) parser_tables___ParserTable___action_table_row137},
-  {(bigint) parser_tables___ParserTable___action_table_row138},
-  {(bigint) parser_tables___ParserTable___action_table_row139},
-  {(bigint) parser_tables___ParserTable___action_table_row140},
-  {(bigint) parser_tables___ParserTable___action_table_row141},
-  {(bigint) parser_tables___ParserTable___action_table_row142},
-  {(bigint) parser_tables___ParserTable___action_table_row143},
-  {(bigint) parser_tables___ParserTable___action_table_row144},
-  {(bigint) parser_tables___ParserTable___action_table_row145},
-  {(bigint) parser_tables___ParserTable___action_table_row146},
-  {(bigint) parser_tables___ParserTable___action_table_row147},
-  {(bigint) parser_tables___ParserTable___action_table_row148},
-  {(bigint) parser_tables___ParserTable___action_table_row149},
-  {(bigint) parser_tables___ParserTable___action_table_row150},
-  {(bigint) parser_tables___ParserTable___action_table_row151},
-  {(bigint) parser_tables___ParserTable___action_table_row152},
-  {(bigint) parser_tables___ParserTable___action_table_row153},
-  {(bigint) parser_tables___ParserTable___action_table_row154},
-  {(bigint) parser_tables___ParserTable___action_table_row155},
-  {(bigint) parser_tables___ParserTable___action_table_row156},
-  {(bigint) parser_tables___ParserTable___action_table_row157},
-  {(bigint) parser_tables___ParserTable___action_table_row158},
-  {(bigint) parser_tables___ParserTable___action_table_row159},
-  {(bigint) parser_tables___ParserTable___action_table_row160},
-  {(bigint) parser_tables___ParserTable___action_table_row161},
-  {(bigint) parser_tables___ParserTable___action_table_row162},
-  {(bigint) parser_tables___ParserTable___action_table_row163},
-  {(bigint) parser_tables___ParserTable___action_table_row164},
-  {(bigint) parser_tables___ParserTable___action_table_row165},
-  {(bigint) parser_tables___ParserTable___action_table_row166},
-  {(bigint) parser_tables___ParserTable___action_table_row167},
-  {(bigint) parser_tables___ParserTable___action_table_row168},
-  {(bigint) parser_tables___ParserTable___action_table_row169},
-  {(bigint) parser_tables___ParserTable___action_table_row170},
-  {(bigint) parser_tables___ParserTable___action_table_row171},
-  {(bigint) parser_tables___ParserTable___action_table_row172},
-  {(bigint) parser_tables___ParserTable___action_table_row173},
-  {(bigint) parser_tables___ParserTable___action_table_row174},
-  {(bigint) parser_tables___ParserTable___action_table_row175},
-  {(bigint) parser_tables___ParserTable___action_table_row176},
-  {(bigint) parser_tables___ParserTable___action_table_row177},
-  {(bigint) parser_tables___ParserTable___action_table_row178},
-  {(bigint) parser_tables___ParserTable___action_table_row179},
-  {(bigint) parser_tables___ParserTable___action_table_row180},
-  {(bigint) parser_tables___ParserTable___action_table_row181},
-  {(bigint) parser_tables___ParserTable___action_table_row182},
-  {(bigint) parser_tables___ParserTable___action_table_row183},
-  {(bigint) parser_tables___ParserTable___action_table_row184},
-  {(bigint) parser_tables___ParserTable___action_table_row185},
-  {(bigint) parser_tables___ParserTable___action_table_row186},
-  {(bigint) parser_tables___ParserTable___action_table_row187},
-  {(bigint) parser_tables___ParserTable___action_table_row188},
-  {(bigint) parser_tables___ParserTable___action_table_row189},
-  {(bigint) parser_tables___ParserTable___action_table_row190},
-  {(bigint) parser_tables___ParserTable___action_table_row191},
-  {(bigint) parser_tables___ParserTable___action_table_row192},
-  {(bigint) parser_tables___ParserTable___action_table_row193},
-  {(bigint) parser_tables___ParserTable___action_table_row194},
-  {(bigint) parser_tables___ParserTable___action_table_row195},
-  {(bigint) parser_tables___ParserTable___action_table_row196},
-  {(bigint) parser_tables___ParserTable___action_table_row197},
-  {(bigint) parser_tables___ParserTable___action_table_row198},
-  {(bigint) parser_tables___ParserTable___action_table_row199},
-  {(bigint) parser_tables___ParserTable___action_table_row200},
-  {(bigint) parser_tables___ParserTable___action_table_row201},
-  {(bigint) parser_tables___ParserTable___action_table_row202},
-  {(bigint) parser_tables___ParserTable___action_table_row203},
-  {(bigint) parser_tables___ParserTable___action_table_row204},
-  {(bigint) parser_tables___ParserTable___action_table_row205},
-  {(bigint) parser_tables___ParserTable___action_table_row206},
-  {(bigint) parser_tables___ParserTable___action_table_row207},
-  {(bigint) parser_tables___ParserTable___action_table_row208},
-  {(bigint) parser_tables___ParserTable___action_table_row209},
-  {(bigint) parser_tables___ParserTable___action_table_row210},
-  {(bigint) parser_tables___ParserTable___action_table_row211},
-  {(bigint) parser_tables___ParserTable___action_table_row212},
-  {(bigint) parser_tables___ParserTable___action_table_row213},
-  {(bigint) parser_tables___ParserTable___action_table_row214},
-  {(bigint) parser_tables___ParserTable___action_table_row215},
-  {(bigint) parser_tables___ParserTable___action_table_row216},
-  {(bigint) parser_tables___ParserTable___action_table_row217},
-  {(bigint) parser_tables___ParserTable___action_table_row218},
-  {(bigint) parser_tables___ParserTable___action_table_row219},
-  {(bigint) parser_tables___ParserTable___action_table_row220},
-  {(bigint) parser_tables___ParserTable___action_table_row221},
-  {(bigint) parser_tables___ParserTable___action_table_row222},
-  {(bigint) parser_tables___ParserTable___action_table_row223},
-  {(bigint) parser_tables___ParserTable___action_table_row224},
-  {(bigint) parser_tables___ParserTable___action_table_row225},
-  {(bigint) parser_tables___ParserTable___action_table_row226},
-  {(bigint) parser_tables___ParserTable___action_table_row227},
-  {(bigint) parser_tables___ParserTable___action_table_row228},
-  {(bigint) parser_tables___ParserTable___action_table_row229},
-  {(bigint) parser_tables___ParserTable___action_table_row230},
-  {(bigint) parser_tables___ParserTable___action_table_row231},
-  {(bigint) parser_tables___ParserTable___action_table_row232},
-  {(bigint) parser_tables___ParserTable___action_table_row233},
-  {(bigint) parser_tables___ParserTable___action_table_row234},
-  {(bigint) parser_tables___ParserTable___action_table_row235},
-  {(bigint) parser_tables___ParserTable___action_table_row236},
-  {(bigint) parser_tables___ParserTable___action_table_row237},
-  {(bigint) parser_tables___ParserTable___action_table_row238},
-  {(bigint) parser_tables___ParserTable___action_table_row239},
-  {(bigint) parser_tables___ParserTable___action_table_row240},
-  {(bigint) parser_tables___ParserTable___action_table_row241},
-  {(bigint) parser_tables___ParserTable___action_table_row242},
-  {(bigint) parser_tables___ParserTable___action_table_row243},
-  {(bigint) parser_tables___ParserTable___action_table_row244},
-  {(bigint) parser_tables___ParserTable___action_table_row245},
-  {(bigint) parser_tables___ParserTable___action_table_row246},
-  {(bigint) parser_tables___ParserTable___action_table_row247},
-  {(bigint) parser_tables___ParserTable___action_table_row248},
-  {(bigint) parser_tables___ParserTable___action_table_row249},
-  {(bigint) parser_tables___ParserTable___action_table_row250},
-  {(bigint) parser_tables___ParserTable___action_table_row251},
-  {(bigint) parser_tables___ParserTable___action_table_row252},
-  {(bigint) parser_tables___ParserTable___action_table_row253},
-  {(bigint) parser_tables___ParserTable___action_table_row254},
-  {(bigint) parser_tables___ParserTable___action_table_row255},
-  {(bigint) parser_tables___ParserTable___action_table_row256},
-  {(bigint) parser_tables___ParserTable___action_table_row257},
-  {(bigint) parser_tables___ParserTable___action_table_row258},
-  {(bigint) parser_tables___ParserTable___action_table_row259},
-  {(bigint) parser_tables___ParserTable___action_table_row260},
-  {(bigint) parser_tables___ParserTable___action_table_row261},
-  {(bigint) parser_tables___ParserTable___action_table_row262},
-  {(bigint) parser_tables___ParserTable___action_table_row263},
-  {(bigint) parser_tables___ParserTable___action_table_row264},
-  {(bigint) parser_tables___ParserTable___action_table_row265},
-  {(bigint) parser_tables___ParserTable___action_table_row266},
-  {(bigint) parser_tables___ParserTable___action_table_row267},
-  {(bigint) parser_tables___ParserTable___action_table_row268},
-  {(bigint) parser_tables___ParserTable___action_table_row269},
-  {(bigint) parser_tables___ParserTable___action_table_row270},
-  {(bigint) parser_tables___ParserTable___action_table_row271},
-  {(bigint) parser_tables___ParserTable___action_table_row272},
-  {(bigint) parser_tables___ParserTable___action_table_row273},
-  {(bigint) parser_tables___ParserTable___action_table_row274},
-  {(bigint) parser_tables___ParserTable___action_table_row275},
-  {(bigint) parser_tables___ParserTable___action_table_row276},
-  {(bigint) parser_tables___ParserTable___action_table_row277},
-  {(bigint) parser_tables___ParserTable___action_table_row278},
-  {(bigint) parser_tables___ParserTable___action_table_row279},
-  {(bigint) parser_tables___ParserTable___action_table_row280},
-  {(bigint) parser_tables___ParserTable___action_table_row281},
-  {(bigint) parser_tables___ParserTable___action_table_row282},
-  {(bigint) parser_tables___ParserTable___action_table_row283},
-  {(bigint) parser_tables___ParserTable___action_table_row284},
-  {(bigint) parser_tables___ParserTable___action_table_row285},
-  {(bigint) parser_tables___ParserTable___action_table_row286},
-  {(bigint) parser_tables___ParserTable___action_table_row287},
-  {(bigint) parser_tables___ParserTable___action_table_row288},
-  {(bigint) parser_tables___ParserTable___action_table_row289},
-  {(bigint) parser_tables___ParserTable___action_table_row290},
-  {(bigint) parser_tables___ParserTable___action_table_row291},
-  {(bigint) parser_tables___ParserTable___action_table_row292},
-  {(bigint) parser_tables___ParserTable___action_table_row293},
-  {(bigint) parser_tables___ParserTable___action_table_row294},
-  {(bigint) parser_tables___ParserTable___action_table_row295},
-  {(bigint) parser_tables___ParserTable___action_table_row296},
-  {(bigint) parser_tables___ParserTable___action_table_row297},
-  {(bigint) parser_tables___ParserTable___action_table_row298},
-  {(bigint) parser_tables___ParserTable___action_table_row299},
-  {(bigint) parser_tables___ParserTable___action_table_row300},
-  {(bigint) parser_tables___ParserTable___action_table_row301},
-  {(bigint) parser_tables___ParserTable___action_table_row302},
-  {(bigint) parser_tables___ParserTable___action_table_row303},
-  {(bigint) parser_tables___ParserTable___action_table_row304},
-  {(bigint) parser_tables___ParserTable___action_table_row305},
-  {(bigint) parser_tables___ParserTable___action_table_row306},
-  {(bigint) parser_tables___ParserTable___action_table_row307},
-  {(bigint) parser_tables___ParserTable___action_table_row308},
-  {(bigint) parser_tables___ParserTable___action_table_row309},
-  {(bigint) parser_tables___ParserTable___action_table_row310},
-  {(bigint) parser_tables___ParserTable___action_table_row311},
-  {(bigint) parser_tables___ParserTable___action_table_row312},
-  {(bigint) parser_tables___ParserTable___action_table_row313},
-  {(bigint) parser_tables___ParserTable___action_table_row314},
-  {(bigint) parser_tables___ParserTable___action_table_row315},
-  {(bigint) parser_tables___ParserTable___action_table_row316},
-  {(bigint) parser_tables___ParserTable___action_table_row317},
-  {(bigint) parser_tables___ParserTable___action_table_row318},
-  {(bigint) parser_tables___ParserTable___action_table_row319},
-  {(bigint) parser_tables___ParserTable___action_table_row320},
-  {(bigint) parser_tables___ParserTable___action_table_row321},
-  {(bigint) parser_tables___ParserTable___action_table_row322},
-  {(bigint) parser_tables___ParserTable___action_table_row323},
-  {(bigint) parser_tables___ParserTable___action_table_row324},
-  {(bigint) parser_tables___ParserTable___action_table_row325},
-  {(bigint) parser_tables___ParserTable___action_table_row326},
-  {(bigint) parser_tables___ParserTable___action_table_row327},
-  {(bigint) parser_tables___ParserTable___action_table_row328},
-  {(bigint) parser_tables___ParserTable___action_table_row329},
-  {(bigint) parser_tables___ParserTable___action_table_row330},
-  {(bigint) parser_tables___ParserTable___action_table_row331},
-  {(bigint) parser_tables___ParserTable___action_table_row332},
-  {(bigint) parser_tables___ParserTable___action_table_row333},
-  {(bigint) parser_tables___ParserTable___action_table_row334},
-  {(bigint) parser_tables___ParserTable___action_table_row335},
-  {(bigint) parser_tables___ParserTable___action_table_row336},
-  {(bigint) parser_tables___ParserTable___action_table_row337},
-  {(bigint) parser_tables___ParserTable___action_table_row338},
-  {(bigint) parser_tables___ParserTable___action_table_row339},
-  {(bigint) parser_tables___ParserTable___action_table_row340},
-  {(bigint) parser_tables___ParserTable___action_table_row341},
-  {(bigint) parser_tables___ParserTable___action_table_row342},
-  {(bigint) parser_tables___ParserTable___action_table_row343},
-  {(bigint) parser_tables___ParserTable___action_table_row344},
-  {(bigint) parser_tables___ParserTable___action_table_row345},
-  {(bigint) parser_tables___ParserTable___action_table_row346},
-  {(bigint) parser_tables___ParserTable___action_table_row347},
-  {(bigint) parser_tables___ParserTable___action_table_row348},
-  {(bigint) parser_tables___ParserTable___action_table_row349},
-  {(bigint) parser_tables___ParserTable___action_table_row350},
-  {(bigint) parser_tables___ParserTable___action_table_row351},
-  {(bigint) parser_tables___ParserTable___action_table_row352},
-  {(bigint) parser_tables___ParserTable___action_table_row353},
-  {(bigint) parser_tables___ParserTable___action_table_row354},
-  {(bigint) parser_tables___ParserTable___action_table_row355},
-  {(bigint) parser_tables___ParserTable___action_table_row356},
-  {(bigint) parser_tables___ParserTable___action_table_row357},
-  {(bigint) parser_tables___ParserTable___action_table_row358},
-  {(bigint) parser_tables___ParserTable___action_table_row359},
-  {(bigint) parser_tables___ParserTable___action_table_row360},
-  {(bigint) parser_tables___ParserTable___action_table_row361},
-  {(bigint) parser_tables___ParserTable___action_table_row362},
-  {(bigint) parser_tables___ParserTable___action_table_row363},
-  {(bigint) parser_tables___ParserTable___action_table_row364},
-  {(bigint) parser_tables___ParserTable___action_table_row365},
-  {(bigint) parser_tables___ParserTable___action_table_row366},
-  {(bigint) parser_tables___ParserTable___action_table_row367},
-  {(bigint) parser_tables___ParserTable___action_table_row368},
-  {(bigint) parser_tables___ParserTable___action_table_row369},
-  {(bigint) parser_tables___ParserTable___action_table_row370},
-  {(bigint) parser_tables___ParserTable___action_table_row371},
-  {(bigint) parser_tables___ParserTable___action_table_row372},
-  {(bigint) parser_tables___ParserTable___action_table_row373},
-  {(bigint) parser_tables___ParserTable___action_table_row374},
-  {(bigint) parser_tables___ParserTable___action_table_row375},
-  {(bigint) parser_tables___ParserTable___action_table_row376},
-  {(bigint) parser_tables___ParserTable___action_table_row377},
-  {(bigint) parser_tables___ParserTable___action_table_row378},
-  {(bigint) parser_tables___ParserTable___action_table_row379},
-  {(bigint) parser_tables___ParserTable___action_table_row380},
-  {(bigint) parser_tables___ParserTable___action_table_row381},
-  {(bigint) parser_tables___ParserTable___action_table_row382},
-  {(bigint) parser_tables___ParserTable___action_table_row383},
-  {(bigint) parser_tables___ParserTable___action_table_row384},
-  {(bigint) parser_tables___ParserTable___action_table_row385},
-  {(bigint) parser_tables___ParserTable___action_table_row386},
-  {(bigint) parser_tables___ParserTable___action_table_row387},
-  {(bigint) parser_tables___ParserTable___action_table_row388},
-  {(bigint) parser_tables___ParserTable___action_table_row389},
-  {(bigint) parser_tables___ParserTable___action_table_row390},
-  {(bigint) parser_tables___ParserTable___action_table_row391},
-  {(bigint) parser_tables___ParserTable___action_table_row392},
-  {(bigint) parser_tables___ParserTable___action_table_row393},
-  {(bigint) parser_tables___ParserTable___action_table_row394},
-  {(bigint) parser_tables___ParserTable___action_table_row395},
-  {(bigint) parser_tables___ParserTable___action_table_row396},
-  {(bigint) parser_tables___ParserTable___action_table_row397},
-  {(bigint) parser_tables___ParserTable___action_table_row398},
-  {(bigint) parser_tables___ParserTable___action_table_row399},
-  {(bigint) parser_tables___ParserTable___action_table_row400},
-  {(bigint) parser_tables___ParserTable___action_table_row401},
-  {(bigint) parser_tables___ParserTable___action_table_row402},
-  {(bigint) parser_tables___ParserTable___action_table_row403},
-  {(bigint) parser_tables___ParserTable___action_table_row404},
-  {(bigint) parser_tables___ParserTable___action_table_row405},
-  {(bigint) parser_tables___ParserTable___action_table_row406},
-  {(bigint) parser_tables___ParserTable___action_table_row407},
-  {(bigint) parser_tables___ParserTable___action_table_row408},
-  {(bigint) parser_tables___ParserTable___action_table_row409},
-  {(bigint) parser_tables___ParserTable___action_table_row410},
-  {(bigint) parser_tables___ParserTable___action_table_row411},
-  {(bigint) parser_tables___ParserTable___action_table_row412},
-  {(bigint) parser_tables___ParserTable___action_table_row413},
-  {(bigint) parser_tables___ParserTable___action_table_row414},
-  {(bigint) parser_tables___ParserTable___action_table_row415},
-  {(bigint) parser_tables___ParserTable___action_table_row416},
-  {(bigint) parser_tables___ParserTable___action_table_row417},
-  {(bigint) parser_tables___ParserTable___action_table_row418},
-  {(bigint) parser_tables___ParserTable___action_table_row419},
-  {(bigint) parser_tables___ParserTable___action_table_row420},
-  {(bigint) parser_tables___ParserTable___action_table_row421},
-  {(bigint) parser_tables___ParserTable___action_table_row422},
-  {(bigint) parser_tables___ParserTable___action_table_row423},
-  {(bigint) parser_tables___ParserTable___action_table_row424},
-  {(bigint) parser_tables___ParserTable___action_table_row425},
-  {(bigint) parser_tables___ParserTable___action_table_row426},
-  {(bigint) parser_tables___ParserTable___action_table_row427},
-  {(bigint) parser_tables___ParserTable___action_table_row428},
-  {(bigint) parser_tables___ParserTable___action_table_row429},
-  {(bigint) parser_tables___ParserTable___action_table_row430},
-  {(bigint) parser_tables___ParserTable___action_table_row431},
-  {(bigint) parser_tables___ParserTable___action_table_row432},
-  {(bigint) parser_tables___ParserTable___action_table_row433},
-  {(bigint) parser_tables___ParserTable___action_table_row434},
-  {(bigint) parser_tables___ParserTable___action_table_row435},
-  {(bigint) parser_tables___ParserTable___action_table_row436},
-  {(bigint) parser_tables___ParserTable___action_table_row437},
-  {(bigint) parser_tables___ParserTable___action_table_row438},
-  {(bigint) parser_tables___ParserTable___action_table_row439},
-  {(bigint) parser_tables___ParserTable___action_table_row440},
-  {(bigint) parser_tables___ParserTable___action_table_row441},
-  {(bigint) parser_tables___ParserTable___action_table_row442},
-  {(bigint) parser_tables___ParserTable___action_table_row443},
-  {(bigint) parser_tables___ParserTable___action_table_row444},
-  {(bigint) parser_tables___ParserTable___action_table_row445},
-  {(bigint) parser_tables___ParserTable___action_table_row446},
-  {(bigint) parser_tables___ParserTable___action_table_row447},
-  {(bigint) parser_tables___ParserTable___action_table_row448},
-  {(bigint) parser_tables___ParserTable___action_table_row449},
-  {(bigint) parser_tables___ParserTable___action_table_row450},
-  {(bigint) parser_tables___ParserTable___action_table_row451},
-  {(bigint) parser_tables___ParserTable___action_table_row452},
-  {(bigint) parser_tables___ParserTable___action_table_row453},
-  {(bigint) parser_tables___ParserTable___action_table_row454},
-  {(bigint) parser_tables___ParserTable___action_table_row455},
-  {(bigint) parser_tables___ParserTable___action_table_row456},
-  {(bigint) parser_tables___ParserTable___action_table_row457},
-  {(bigint) parser_tables___ParserTable___action_table_row458},
-  {(bigint) parser_tables___ParserTable___action_table_row459},
-  {(bigint) parser_tables___ParserTable___action_table_row460},
-  {(bigint) parser_tables___ParserTable___action_table_row461},
-  {(bigint) parser_tables___ParserTable___action_table_row462},
-  {(bigint) parser_tables___ParserTable___action_table_row463},
-  {(bigint) parser_tables___ParserTable___action_table_row464},
-  {(bigint) parser_tables___ParserTable___action_table_row465},
-  {(bigint) parser_tables___ParserTable___action_table_row466},
-  {(bigint) parser_tables___ParserTable___action_table_row467},
-  {(bigint) parser_tables___ParserTable___action_table_row468},
-  {(bigint) parser_tables___ParserTable___action_table_row469},
-  {(bigint) parser_tables___ParserTable___action_table_row470},
-  {(bigint) parser_tables___ParserTable___action_table_row471},
-  {(bigint) parser_tables___ParserTable___action_table_row472},
-  {(bigint) parser_tables___ParserTable___action_table_row473},
-  {(bigint) parser_tables___ParserTable___action_table_row474},
-  {(bigint) parser_tables___ParserTable___action_table_row475},
-  {(bigint) parser_tables___ParserTable___action_table_row476},
-  {(bigint) parser_tables___ParserTable___action_table_row477},
-  {(bigint) parser_tables___ParserTable___action_table_row478},
-  {(bigint) parser_tables___ParserTable___action_table_row479},
-  {(bigint) parser_tables___ParserTable___action_table_row480},
-  {(bigint) parser_tables___ParserTable___action_table_row481},
-  {(bigint) parser_tables___ParserTable___action_table_row482},
-  {(bigint) parser_tables___ParserTable___action_table_row483},
-  {(bigint) parser_tables___ParserTable___action_table_row484},
-  {(bigint) parser_tables___ParserTable___action_table_row485},
-  {(bigint) parser_tables___ParserTable___action_table_row486},
-  {(bigint) parser_tables___ParserTable___action_table_row487},
-  {(bigint) parser_tables___ParserTable___action_table_row488},
-  {(bigint) parser_tables___ParserTable___action_table_row489},
-  {(bigint) parser_tables___ParserTable___action_table_row490},
-  {(bigint) parser_tables___ParserTable___action_table_row491},
-  {(bigint) parser_tables___ParserTable___action_table_row492},
-  {(bigint) parser_tables___ParserTable___action_table_row493},
-  {(bigint) parser_tables___ParserTable___action_table_row494},
-  {(bigint) parser_tables___ParserTable___action_table_row495},
-  {(bigint) parser_tables___ParserTable___action_table_row496},
-  {(bigint) parser_tables___ParserTable___action_table_row497},
-  {(bigint) parser_tables___ParserTable___action_table_row498},
-  {(bigint) parser_tables___ParserTable___action_table_row499},
-  {(bigint) parser_tables___ParserTable___action_table_row500},
-  {(bigint) parser_tables___ParserTable___action_table_row501},
-  {(bigint) parser_tables___ParserTable___action_table_row502},
-  {(bigint) parser_tables___ParserTable___action_table_row503},
-  {(bigint) parser_tables___ParserTable___action_table_row504},
-  {(bigint) parser_tables___ParserTable___action_table_row505},
-  {(bigint) parser_tables___ParserTable___action_table_row506},
-  {(bigint) parser_tables___ParserTable___action_table_row507},
-  {(bigint) parser_tables___ParserTable___action_table_row508},
-  {(bigint) parser_tables___ParserTable___action_table_row509},
-  {(bigint) parser_tables___ParserTable___action_table_row510},
-  {(bigint) parser_tables___ParserTable___action_table_row511},
-  {(bigint) parser_tables___ParserTable___action_table_row512},
-  {(bigint) parser_tables___ParserTable___action_table_row513},
-  {(bigint) parser_tables___ParserTable___action_table_row514},
-  {(bigint) parser_tables___ParserTable___action_table_row515},
-  {(bigint) parser_tables___ParserTable___action_table_row516},
-  {(bigint) parser_tables___ParserTable___action_table_row517},
-  {(bigint) parser_tables___ParserTable___action_table_row518},
-  {(bigint) parser_tables___ParserTable___action_table_row519},
-  {(bigint) parser_tables___ParserTable___action_table_row520},
-  {(bigint) parser_tables___ParserTable___action_table_row521},
-  {(bigint) parser_tables___ParserTable___action_table_row522},
-  {(bigint) parser_tables___ParserTable___action_table_row523},
-  {(bigint) parser_tables___ParserTable___action_table_row524},
-  {(bigint) parser_tables___ParserTable___action_table_row525},
-  {(bigint) parser_tables___ParserTable___action_table_row526},
-  {(bigint) parser_tables___ParserTable___action_table_row527},
-  {(bigint) parser_tables___ParserTable___action_table_row528},
-  {(bigint) parser_tables___ParserTable___action_table_row529},
-  {(bigint) parser_tables___ParserTable___action_table_row530},
-  {(bigint) parser_tables___ParserTable___action_table_row531},
-  {(bigint) parser_tables___ParserTable___action_table_row532},
-  {(bigint) parser_tables___ParserTable___action_table_row533},
-  {(bigint) parser_tables___ParserTable___action_table_row534},
-  {(bigint) parser_tables___ParserTable___action_table_row535},
-  {(bigint) parser_tables___ParserTable___action_table_row536},
-  {(bigint) parser_tables___ParserTable___action_table_row537},
-  {(bigint) parser_tables___ParserTable___action_table_row538},
-  {(bigint) parser_tables___ParserTable___action_table_row539},
-  {(bigint) parser_tables___ParserTable___action_table_row540},
-  {(bigint) parser_tables___ParserTable___action_table_row541},
-  {(bigint) parser_tables___ParserTable___action_table_row542},
-  {(bigint) parser_tables___ParserTable___action_table_row543},
-  {(bigint) parser_tables___ParserTable___action_table_row544},
-  {(bigint) parser_tables___ParserTable___action_table_row545},
-  {(bigint) parser_tables___ParserTable___action_table_row546},
-  {(bigint) parser_tables___ParserTable___action_table_row547},
-  {(bigint) parser_tables___ParserTable___action_table_row548},
-  {(bigint) parser_tables___ParserTable___action_table_row549},
-  {(bigint) parser_tables___ParserTable___action_table_row550},
-  {(bigint) parser_tables___ParserTable___action_table_row551},
-  {(bigint) parser_tables___ParserTable___action_table_row552},
-  {(bigint) parser_tables___ParserTable___action_table_row553},
-  {(bigint) parser_tables___ParserTable___action_table_row554},
-  {(bigint) parser_tables___ParserTable___action_table_row555},
-  {(bigint) parser_tables___ParserTable___action_table_row556},
-  {(bigint) parser_tables___ParserTable___action_table_row557},
-  {(bigint) parser_tables___ParserTable___action_table_row558},
-  {(bigint) parser_tables___ParserTable___action_table_row559},
-  {(bigint) parser_tables___ParserTable___action_table_row560},
-  {(bigint) parser_tables___ParserTable___action_table_row561},
-  {(bigint) parser_tables___ParserTable___action_table_row562},
-  {(bigint) parser_tables___ParserTable___action_table_row563},
-  {(bigint) parser_tables___ParserTable___action_table_row564},
-  {(bigint) parser_tables___ParserTable___action_table_row565},
-  {(bigint) parser_tables___ParserTable___action_table_row566},
-  {(bigint) parser_tables___ParserTable___action_table_row567},
-  {(bigint) parser_tables___ParserTable___action_table_row568},
-  {(bigint) parser_tables___ParserTable___action_table_row569},
-  {(bigint) parser_tables___ParserTable___action_table_row570},
-  {(bigint) parser_tables___ParserTable___action_table_row571},
-  {(bigint) parser_tables___ParserTable___action_table_row572},
-  {(bigint) parser_tables___ParserTable___action_table_row573},
-  {(bigint) parser_tables___ParserTable___action_table_row574},
-  {(bigint) parser_tables___ParserTable___action_table_row575},
-  {(bigint) parser_tables___ParserTable___action_table_row576},
-  {(bigint) parser_tables___ParserTable___action_table_row577},
-  {(bigint) parser_tables___ParserTable___action_table_row578},
-  {(bigint) parser_tables___ParserTable___action_table_row579},
-  {(bigint) parser_tables___ParserTable___action_table_row580},
-  {(bigint) parser_tables___ParserTable___action_table_row581},
-  {(bigint) parser_tables___ParserTable___action_table_row582},
-  {(bigint) parser_tables___ParserTable___action_table_row583},
-  {(bigint) parser_tables___ParserTable___action_table_row584},
-  {(bigint) parser_tables___ParserTable___action_table_row585},
-  {(bigint) parser_tables___ParserTable___action_table_row586},
-  {(bigint) parser_tables___ParserTable___action_table_row587},
-  {(bigint) parser_tables___ParserTable___action_table_row588},
-  {(bigint) parser_tables___ParserTable___action_table_row589},
-  {(bigint) parser_tables___ParserTable___action_table_row590},
-  {(bigint) parser_tables___ParserTable___action_table_row591},
-  {(bigint) parser_tables___ParserTable___action_table_row592},
-  {(bigint) parser_tables___ParserTable___action_table_row593},
-  {(bigint) parser_tables___ParserTable___action_table_row594},
-  {(bigint) parser_tables___ParserTable___action_table_row595},
-  {(bigint) parser_tables___ParserTable___action_table_row596},
-  {(bigint) parser_tables___ParserTable___action_table_row597},
-  {(bigint) parser_tables___ParserTable___action_table_row598},
-  {(bigint) parser_tables___ParserTable___action_table_row599},
-  {(bigint) parser_tables___ParserTable___action_table_row600},
-  {(bigint) parser_tables___ParserTable___action_table_row601},
-  {(bigint) parser_tables___ParserTable___action_table_row602},
-  {(bigint) parser_tables___ParserTable___action_table_row603},
-  {(bigint) parser_tables___ParserTable___action_table_row604},
-  {(bigint) parser_tables___ParserTable___action_table_row605},
-  {(bigint) parser_tables___ParserTable___action_table_row606},
-  {(bigint) parser_tables___ParserTable___action_table_row607},
-  {(bigint) parser_tables___ParserTable___action_table_row608},
-  {(bigint) parser_tables___ParserTable___action_table_row609},
-  {(bigint) parser_tables___ParserTable___action_table_row610},
-  {(bigint) parser_tables___ParserTable___action_table_row611},
-  {(bigint) parser_tables___ParserTable___action_table_row612},
-  {(bigint) parser_tables___ParserTable___action_table_row613},
-  {(bigint) parser_tables___ParserTable___action_table_row614},
-  {(bigint) parser_tables___ParserTable___action_table_row615},
-  {(bigint) parser_tables___ParserTable___action_table_row616},
-  {(bigint) parser_tables___ParserTable___action_table_row617},
-  {(bigint) parser_tables___ParserTable___action_table_row618},
-  {(bigint) parser_tables___ParserTable___action_table_row619},
-  {(bigint) parser_tables___ParserTable___action_table_row620},
-  {(bigint) parser_tables___ParserTable___action_table_row621},
-  {(bigint) parser_tables___ParserTable___action_table_row622},
-  {(bigint) parser_tables___ParserTable___action_table_row623},
-  {(bigint) parser_tables___ParserTable___action_table_row624},
-  {(bigint) parser_tables___ParserTable___action_table_row625},
-  {(bigint) parser_tables___ParserTable___action_table_row626},
-  {(bigint) parser_tables___ParserTable___action_table_row627},
-  {(bigint) parser_tables___ParserTable___action_table_row628},
-  {(bigint) parser_tables___ParserTable___action_table_row629},
-  {(bigint) parser_tables___ParserTable___action_table_row630},
-  {(bigint) parser_tables___ParserTable___action_table_row631},
-  {(bigint) parser_tables___ParserTable___action_table_row632},
-  {(bigint) parser_tables___ParserTable___action_table_row633},
-  {(bigint) parser_tables___ParserTable___action_table_row634},
-  {(bigint) parser_tables___ParserTable___action_table_row635},
-  {(bigint) parser_tables___ParserTable___action_table_row636},
-  {(bigint) parser_tables___ParserTable___action_table_row637},
-  {(bigint) parser_tables___ParserTable___action_table_row638},
-  {(bigint) parser_tables___ParserTable___action_table_row639},
-  {(bigint) parser_tables___ParserTable___action_table_row640},
-  {(bigint) parser_tables___ParserTable___action_table_row641},
-  {(bigint) parser_tables___ParserTable___action_table_row642},
-  {(bigint) parser_tables___ParserTable___action_table_row643},
-  {(bigint) parser_tables___ParserTable___action_table_row644},
-  {(bigint) parser_tables___ParserTable___action_table_row645},
-  {(bigint) parser_tables___ParserTable___action_table_row646},
-  {(bigint) parser_tables___ParserTable___action_table_row647},
-  {(bigint) parser_tables___ParserTable___action_table_row648},
-  {(bigint) parser_tables___ParserTable___action_table_row649},
-  {(bigint) parser_tables___ParserTable___action_table_row650},
-  {(bigint) parser_tables___ParserTable___action_table_row651},
-  {(bigint) parser_tables___ParserTable___action_table_row652},
-  {(bigint) parser_tables___ParserTable___action_table_row653},
-  {(bigint) parser_tables___ParserTable___action_table_row654},
-  {(bigint) parser_tables___ParserTable___action_table_row655},
-  {(bigint) parser_tables___ParserTable___action_table_row656},
-  {(bigint) parser_tables___ParserTable___action_table_row657},
-  {(bigint) parser_tables___ParserTable___action_table_row658},
-  {(bigint) parser_tables___ParserTable___action_table_row659},
-  {(bigint) parser_tables___ParserTable___action_table_row660},
-  {(bigint) parser_tables___ParserTable___action_table_row661},
-  {(bigint) parser_tables___ParserTable___action_table_row662},
-  {(bigint) parser_tables___ParserTable___action_table_row663},
-  {(bigint) parser_tables___ParserTable___action_table_row664},
-  {(bigint) parser_tables___ParserTable___action_table_row665},
-  {(bigint) parser_tables___ParserTable___action_table_row666},
-  {(bigint) parser_tables___ParserTable___action_table_row667},
-  {(bigint) parser_tables___ParserTable___action_table_row668},
-  {(bigint) parser_tables___ParserTable___action_table_row669},
-  {(bigint) parser_tables___ParserTable___action_table_row670},
-  {(bigint) parser_tables___ParserTable___action_table_row671},
-  {(bigint) parser_tables___ParserTable___action_table_row672},
-  {(bigint) parser_tables___ParserTable___action_table_row673},
-  {(bigint) parser_tables___ParserTable___action_table_row674},
-  {(bigint) parser_tables___ParserTable___action_table_row675},
-  {(bigint) parser_tables___ParserTable___action_table_row676},
-  {(bigint) parser_tables___ParserTable___action_table_row677},
-  {(bigint) parser_tables___ParserTable___action_table_row678},
-  {(bigint) parser_tables___ParserTable___action_table_row679},
-  {(bigint) parser_tables___ParserTable___action_table_row680},
-  {(bigint) parser_tables___ParserTable___action_table_row681},
-  {(bigint) parser_tables___ParserTable___action_table_row682},
-  {(bigint) parser_tables___ParserTable___action_table_row683},
-  {(bigint) parser_tables___ParserTable___action_table_row684},
-  {(bigint) parser_tables___ParserTable___action_table_row685},
-  {(bigint) parser_tables___ParserTable___action_table_row686},
-  {(bigint) parser_tables___ParserTable___action_table_row687},
-  {(bigint) parser_tables___ParserTable___action_table_row688},
-  {(bigint) parser_tables___ParserTable___action_table_row689},
-  {(bigint) parser_tables___ParserTable___action_table_row690},
-  {(bigint) parser_tables___ParserTable___action_table_row691},
-  {(bigint) parser_tables___ParserTable___action_table_row692},
-  {(bigint) parser_tables___ParserTable___action_table_row693},
-  {(bigint) parser_tables___ParserTable___action_table_row694},
-  {(bigint) parser_tables___ParserTable___action_table_row695},
-  {(bigint) parser_tables___ParserTable___action_table_row696},
-  {(bigint) parser_tables___ParserTable___action_table_row697},
-  {(bigint) parser_tables___ParserTable___action_table_row698},
-  {(bigint) parser_tables___ParserTable___action_table_row699},
-  {(bigint) parser_tables___ParserTable___action_table_row700},
-  {(bigint) parser_tables___ParserTable___action_table_row701},
-  {(bigint) parser_tables___ParserTable___action_table_row702},
-  {(bigint) parser_tables___ParserTable___action_table_row703},
-  {(bigint) parser_tables___ParserTable___action_table_row704},
-  {(bigint) parser_tables___ParserTable___action_table_row705},
-  {(bigint) parser_tables___ParserTable___action_table_row706},
-  {(bigint) parser_tables___ParserTable___action_table_row707},
-  {(bigint) parser_tables___ParserTable___action_table_row708},
-  {(bigint) parser_tables___ParserTable___action_table_row709},
-  {(bigint) parser_tables___ParserTable___action_table_row710},
-  {(bigint) parser_tables___ParserTable___action_table_row711},
-  {(bigint) parser_tables___ParserTable___action_table_row712},
-  {(bigint) parser_tables___ParserTable___action_table_row713},
-  {(bigint) parser_tables___ParserTable___action_table_row714},
-  {(bigint) parser_tables___ParserTable___action_table_row715},
-  {(bigint) parser_tables___ParserTable___action_table_row716},
-  {(bigint) parser_tables___ParserTable___action_table_row717},
-  {(bigint) parser_tables___ParserTable___action_table_row718},
-  {(bigint) parser_tables___ParserTable___action_table_row719},
-  {(bigint) parser_tables___ParserTable___action_table_row720},
-  {(bigint) parser_tables___ParserTable___action_table_row721},
-  {(bigint) parser_tables___ParserTable___action_table_row722},
-  {(bigint) parser_tables___ParserTable___action_table_row723},
-  {(bigint) parser_tables___ParserTable___action_table_row724},
-  {(bigint) parser_tables___ParserTable___action_table_row725},
-  {(bigint) parser_tables___ParserTable___action_table_row726},
-  {(bigint) parser_tables___ParserTable___action_table_row727},
-  {(bigint) parser_tables___ParserTable___action_table_row728},
-  {(bigint) parser_tables___ParserTable___action_table_row729},
-  {(bigint) parser_tables___ParserTable___action_table_row730},
-  {(bigint) parser_tables___ParserTable___action_table_row731},
-  {(bigint) parser_tables___ParserTable___action_table_row732},
-  {(bigint) parser_tables___ParserTable___action_table_row733},
-  {(bigint) parser_tables___ParserTable___action_table_row734},
-  {(bigint) parser_tables___ParserTable___action_table_row735},
-  {(bigint) parser_tables___ParserTable___action_table_row736},
-  {(bigint) parser_tables___ParserTable___action_table_row737},
-  {(bigint) parser_tables___ParserTable___action_table_row738},
-  {(bigint) parser_tables___ParserTable___action_table_row739},
-  {(bigint) parser_tables___ParserTable___action_table_row740},
-  {(bigint) parser_tables___ParserTable___action_table_row741},
-  {(bigint) parser_tables___ParserTable___action_table_row742},
-  {(bigint) parser_tables___ParserTable___action_table_row743},
-  {(bigint) parser_tables___ParserTable___action_table_row744},
-  {(bigint) parser_tables___ParserTable___action_table_row745},
-  {(bigint) parser_tables___ParserTable___action_table_row746},
-  {(bigint) parser_tables___ParserTable___action_table_row747},
-  {(bigint) parser_tables___ParserTable___action_table_row748},
-  {(bigint) parser_tables___ParserTable___action_table_row749},
-  {(bigint) parser_tables___ParserTable___action_table_row750},
-  {(bigint) parser_tables___ParserTable___action_table_row751},
-  {(bigint) parser_tables___ParserTable___action_table_row752},
-  {(bigint) parser_tables___ParserTable___action_table_row753},
-  {(bigint) parser_tables___ParserTable___action_table_row754},
-  {(bigint) parser_tables___ParserTable___action_table_row755},
-  {(bigint) parser_tables___ParserTable___action_table_row756},
-  {(bigint) parser_tables___ParserTable___action_table_row757},
-  {(bigint) parser_tables___ParserTable___action_table_row758},
-  {(bigint) parser_tables___ParserTable___action_table_row759},
-  {(bigint) parser_tables___ParserTable___action_table_row760},
-  {(bigint) parser_tables___ParserTable___action_table_row761},
-  {(bigint) parser_tables___ParserTable___action_table_row762},
-  {(bigint) parser_tables___ParserTable___action_table_row763},
-  {(bigint) parser_tables___ParserTable___action_table_row764},
-  {(bigint) parser_tables___ParserTable___action_table_row765},
-  {(bigint) parser_tables___ParserTable___action_table_row766},
-  {(bigint) parser_tables___ParserTable___action_table_row767},
-  {(bigint) parser_tables___ParserTable___action_table_row768},
-  {(bigint) parser_tables___ParserTable___action_table_row769},
-  {(bigint) parser_tables___ParserTable___action_table_row770},
-  {(bigint) parser_tables___ParserTable___action_table_row771},
-  {(bigint) parser_tables___ParserTable___action_table_row772},
-  {(bigint) parser_tables___ParserTable___action_table_row773},
-  {(bigint) parser_tables___ParserTable___action_table_row774},
-  {(bigint) parser_tables___ParserTable___action_table_row775},
-  {(bigint) parser_tables___ParserTable___action_table_row776},
-  {(bigint) parser_tables___ParserTable___action_table_row777},
-  {(bigint) parser_tables___ParserTable___action_table_row778},
-  {(bigint) parser_tables___ParserTable___action_table_row779},
-  {(bigint) parser_tables___ParserTable___action_table_row780},
-  {(bigint) parser_tables___ParserTable___action_table_row781},
-  {(bigint) parser_tables___ParserTable___action_table_row782},
-  {(bigint) parser_tables___ParserTable___action_table_row783},
-  {(bigint) parser_tables___ParserTable___action_table_row784},
-  {(bigint) parser_tables___ParserTable___action_table_row785},
-  {(bigint) parser_tables___ParserTable___action_table_row786},
-  {(bigint) parser_tables___ParserTable___action_table_row787},
-  {(bigint) parser_tables___ParserTable___action_table_row788},
-  {(bigint) parser_tables___ParserTable___action_table_row789},
-  {(bigint) parser_tables___ParserTable___action_table_row790},
-  {(bigint) parser_tables___ParserTable___action_table_row791},
-  {(bigint) parser_tables___ParserTable___action_table_row792},
-  {(bigint) parser_tables___ParserTable___action_table_row793},
-  {(bigint) parser_tables___ParserTable___action_table_row794},
-  {(bigint) parser_tables___ParserTable___action_table_row795},
-  {(bigint) parser_tables___ParserTable___action_table_row796},
-  {(bigint) parser_tables___ParserTable___action_table_row797},
-  {(bigint) parser_tables___ParserTable___action_table_row798},
-  {(bigint) parser_tables___ParserTable___action_table_row799},
-  {(bigint) parser_tables___ParserTable___action_table_row800},
-  {(bigint) parser_tables___ParserTable___action_table_row801},
-  {(bigint) parser_tables___ParserTable___action_table_row802},
-  {(bigint) parser_tables___ParserTable___action_table_row803},
-  {(bigint) parser_tables___ParserTable___action_table_row804},
-  {(bigint) parser_tables___ParserTable___action_table_row805},
-  {(bigint) parser_tables___ParserTable___action_table_row806},
-  {(bigint) parser_tables___ParserTable___action_table_row807},
-  {(bigint) parser_tables___ParserTable___action_table_row808},
-  {(bigint) parser_tables___ParserTable___action_table_row809},
-  {(bigint) parser_tables___ParserTable___action_table_row810},
-  {(bigint) parser_tables___ParserTable___action_table_row811},
-  {(bigint) parser_tables___ParserTable___action_table_row812},
-  {(bigint) parser_tables___ParserTable___action_table_row813},
-  {(bigint) parser_tables___ParserTable___action_table_row814},
-  {(bigint) parser_tables___ParserTable___action_table_row815},
-  {(bigint) parser_tables___ParserTable___action_table_row816},
-  {(bigint) parser_tables___ParserTable___action_table_row817},
-  {(bigint) parser_tables___ParserTable___action_table_row818},
-  {(bigint) parser_tables___ParserTable___action_table_row819},
-  {(bigint) parser_tables___ParserTable___action_table_row820},
-  {(bigint) parser_tables___ParserTable___action_table_row821},
-  {(bigint) parser_tables___ParserTable___action_table_row822},
-  {(bigint) parser_tables___ParserTable___action_table_row823},
-  {(bigint) parser_tables___ParserTable___action_table_row824},
-  {(bigint) parser_tables___ParserTable___action_table_row825},
-  {(bigint) parser_tables___ParserTable___action_table_row826},
-  {(bigint) parser_tables___ParserTable___action_table_row827},
-  {(bigint) parser_tables___ParserTable___action_table_row828},
-  {(bigint) parser_tables___ParserTable___action_table_row829},
-  {(bigint) parser_tables___ParserTable___action_table_row830},
-  {(bigint) parser_tables___ParserTable___action_table_row831},
-  {(bigint) parser_tables___ParserTable___action_table_row832},
-  {(bigint) parser_tables___ParserTable___action_table_row833},
-  {(bigint) parser_tables___ParserTable___action_table_row834},
-  {(bigint) parser_tables___ParserTable___action_table_row835},
-  {(bigint) parser_tables___ParserTable___action_table_row836},
-  {(bigint) parser_tables___ParserTable___action_table_row837},
-  {(bigint) parser_tables___ParserTable___action_table_row838},
-  {(bigint) parser_tables___ParserTable___action_table_row839},
-  {(bigint) parser_tables___ParserTable___action_table_row840},
-  {(bigint) parser_tables___ParserTable___action_table_row841},
-  {(bigint) parser_tables___ParserTable___action_table_row842},
-  {(bigint) parser_tables___ParserTable___action_table_row843},
-  {(bigint) parser_tables___ParserTable___action_table_row844},
-  {(bigint) parser_tables___ParserTable___action_table_row845},
-  {(bigint) parser_tables___ParserTable___action_table_row846},
-  {(bigint) parser_tables___ParserTable___action_table_row847},
-  {(bigint) parser_tables___ParserTable___action_table_row848},
-  {(bigint) parser_tables___ParserTable___action_table_row849},
-  {(bigint) parser_tables___ParserTable___action_table_row850},
-  {(bigint) parser_tables___ParserTable___action_table_row851},
-  {(bigint) parser_tables___ParserTable___action_table_row852},
-  {(bigint) parser_tables___ParserTable___action_table_row853},
-  {(bigint) parser_tables___ParserTable___action_table_row854},
-  {(bigint) parser_tables___ParserTable___action_table_row855},
-  {(bigint) parser_tables___ParserTable___action_table_row856},
-  {(bigint) parser_tables___ParserTable___action_table_row857},
-  {(bigint) parser_tables___ParserTable___action_table_row858},
-  {(bigint) parser_tables___ParserTable___action_table_row859},
-  {(bigint) parser_tables___ParserTable___action_table_row860},
-  {(bigint) parser_tables___ParserTable___action_table_row861},
-  {(bigint) parser_tables___ParserTable___action_table_row862},
-  {(bigint) parser_tables___ParserTable___action_table_row863},
-  {(bigint) parser_tables___ParserTable___action_table_row864},
-  {(bigint) parser_tables___ParserTable___action_table_row865},
-  {(bigint) parser_tables___ParserTable___action_table_row866},
-  {(bigint) parser_tables___ParserTable___action_table_row867},
-  {(bigint) parser_tables___ParserTable___action_table_row868},
-  {(bigint) parser_tables___ParserTable___action_table_row869},
-  {(bigint) parser_tables___ParserTable___action_table_row870},
-  {(bigint) parser_tables___ParserTable___action_table_row871},
-  {(bigint) parser_tables___ParserTable___action_table_row872},
-  {(bigint) parser_tables___ParserTable___action_table_row873},
-  {(bigint) parser_tables___ParserTable___action_table_row874},
-  {(bigint) parser_tables___ParserTable___action_table_row875},
-  {(bigint) parser_tables___ParserTable___action_table_row876},
-  {(bigint) parser_tables___ParserTable___action_table_row877},
-  {(bigint) parser_tables___ParserTable___action_table_row878},
-  {(bigint) parser_tables___ParserTable___action_table_row879},
-  {(bigint) parser_tables___ParserTable___action_table_row880},
-  {(bigint) parser_tables___ParserTable___action_table_row881},
-  {(bigint) parser_tables___ParserTable___action_table_row882},
-  {(bigint) parser_tables___ParserTable___action_table_row883},
-  {(bigint) parser_tables___ParserTable___action_table_row884},
-  {(bigint) parser_tables___ParserTable___action_table_row885},
-  {(bigint) parser_tables___ParserTable___action_table_row886},
-  {(bigint) parser_tables___ParserTable___action_table_row887},
-  {(bigint) parser_tables___ParserTable___action_table_row888},
-  {(bigint) parser_tables___ParserTable___action_table_row889},
-  {(bigint) parser_tables___ParserTable___action_table_row890},
-  {(bigint) parser_tables___ParserTable___action_table_row891},
-  {(bigint) parser_tables___ParserTable___action_table_row892},
-  {(bigint) parser_tables___ParserTable___action_table_row893},
-  {(bigint) parser_tables___ParserTable___action_table_row894},
-  {(bigint) parser_tables___ParserTable___action_table_row895},
-  {(bigint) parser_tables___ParserTable___action_table_row896},
-  {(bigint) parser_tables___ParserTable___action_table_row897},
-  {(bigint) parser_tables___ParserTable___action_table_row898},
-  {(bigint) parser_tables___ParserTable___action_table_row899},
-  {(bigint) parser_tables___ParserTable___action_table_row900},
-  {(bigint) parser_tables___ParserTable___action_table_row901},
-  {(bigint) parser_tables___ParserTable___action_table_row902},
-  {(bigint) parser_tables___ParserTable___action_table_row903},
-  {(bigint) parser_tables___ParserTable___action_table_row904},
-  {(bigint) parser_tables___ParserTable___action_table_row905},
-  {(bigint) parser_tables___ParserTable___action_table_row906},
-  {(bigint) parser_tables___ParserTable___action_table_row907},
-  {(bigint) parser_tables___ParserTable___action_table_row908},
-  {(bigint) parser_tables___ParserTable___action_table_row909},
-  {(bigint) parser_tables___ParserTable___action_table_row910},
-  {(bigint) parser_tables___ParserTable___action_table_row911},
-  {(bigint) parser_tables___ParserTable___action_table_row912},
-  {(bigint) parser_tables___ParserTable___action_table_row913},
-  {(bigint) parser_tables___ParserTable___action_table_row914},
-  {(bigint) parser_tables___ParserTable___action_table_row915},
-  {(bigint) parser_tables___ParserTable___action_table_row916},
-  {(bigint) parser_tables___ParserTable___action_table_row917},
-  {(bigint) parser_tables___ParserTable___action_table_row918},
-  {(bigint) parser_tables___ParserTable___action_table_row919},
-  {(bigint) parser_tables___ParserTable___action_table_row920},
-  {(bigint) parser_tables___ParserTable___action_table_row921},
-  {(bigint) parser_tables___ParserTable___action_table_row922},
-  {(bigint) parser_tables___ParserTable___action_table_row923},
-  {(bigint) parser_tables___ParserTable___action_table_row924},
-  {(bigint) parser_tables___ParserTable___action_table_row925},
-  {(bigint) parser_tables___ParserTable___action_table_row926},
-  {(bigint) parser_tables___ParserTable___action_table_row927},
-  {(bigint) parser_tables___ParserTable___action_table_row928},
-  {(bigint) parser_tables___ParserTable___action_table_row929},
-  {(bigint) parser_tables___ParserTable___action_table_row930},
-  {(bigint) parser_tables___ParserTable___action_table_row931},
-  {(bigint) parser_tables___ParserTable___action_table_row932},
-  {(bigint) parser_tables___ParserTable___action_table_row933},
-  {(bigint) parser_tables___ParserTable___action_table_row934},
-  {(bigint) parser_tables___ParserTable___action_table_row935},
-  {(bigint) parser_tables___ParserTable___action_table_row936},
-  {(bigint) parser_tables___ParserTable___action_table_row937},
-  {(bigint) parser_tables___ParserTable___action_table_row938},
-  {(bigint) parser_tables___ParserTable___action_table_row939},
-  {(bigint) parser_tables___ParserTable___action_table_row940},
-  {(bigint) parser_tables___ParserTable___action_table_row941},
-  {(bigint) parser_tables___ParserTable___action_table_row942},
-  {(bigint) parser_tables___ParserTable___action_table_row943},
-  {(bigint) parser_tables___ParserTable___action_table_row944},
-  {(bigint) parser_tables___ParserTable___action_table_row945},
-  {(bigint) parser_tables___ParserTable___action_table_row946},
-  {(bigint) parser_tables___ParserTable___action_table_row947},
-  {(bigint) parser_tables___ParserTable___action_table_row948},
-  {(bigint) parser_tables___ParserTable___action_table_row949},
-  {(bigint) parser_tables___ParserTable___action_table_row950},
-  {(bigint) parser_tables___ParserTable___action_table_row951},
-  {(bigint) parser_tables___ParserTable___action_table_row952},
-  {(bigint) parser_tables___ParserTable___action_table_row953},
-  {(bigint) parser_tables___ParserTable___action_table_row954},
-  {(bigint) parser_tables___ParserTable___action_table_row955},
-  {(bigint) parser_tables___ParserTable___action_table_row956},
-  {(bigint) parser_tables___ParserTable___action_table_row957},
-  {(bigint) parser_tables___ParserTable___action_table_row958},
-  {(bigint) parser_tables___ParserTable___action_table_row959},
-  {(bigint) parser_tables___ParserTable___action_table_row960},
-  {(bigint) parser_tables___ParserTable___action_table_row961},
-  {(bigint) parser_tables___ParserTable___action_table_row962},
-  {(bigint) parser_tables___ParserTable___action_table_row963},
-  {(bigint) parser_tables___ParserTable___action_table_row964},
-  {(bigint) parser_tables___ParserTable___action_table_row965},
-  {(bigint) parser_tables___ParserTable___action_table_row966},
-  {(bigint) parser_tables___ParserTable___action_table_row967},
-  {(bigint) parser_tables___ParserTable___action_table_row968},
-  {(bigint) parser_tables___ParserTable___action_table_row969},
-  {(bigint) parser_tables___ParserTable___action_table_row970},
-  {(bigint) parser_tables___ParserTable___action_table_row971},
-  {(bigint) parser_tables___ParserTable___action_table_row972},
-  {(bigint) parser_tables___ParserTable___action_table_row973},
-  {(bigint) parser_tables___ParserTable___action_table_row974},
-  {(bigint) parser_tables___ParserTable___action_table_row975},
-  {(bigint) parser_tables___ParserTable___action_table_row976},
-  {(bigint) parser_tables___ParserTable___action_table_row977},
-  {(bigint) parser_tables___ParserTable___action_table_row978},
-  {(bigint) parser_tables___ParserTable___action_table_row979},
-  {(bigint) parser_tables___ParserTable___action_table_row980},
-  {(bigint) parser_tables___ParserTable___action_table_row981},
-  {(bigint) parser_tables___ParserTable___action_table_row982},
-  {(bigint) parser_tables___ParserTable___action_table_row983},
-  {(bigint) parser_tables___ParserTable___action_table_row984},
-  {(bigint) parser_tables___ParserTable___action_table_row985},
-  {(bigint) parser_tables___ParserTable___action_table_row986},
-  {(bigint) parser_tables___ParserTable___action_table_row987},
-  {(bigint) parser_tables___ParserTable___action_table_row988},
-  {(bigint) parser_tables___ParserTable___action_table_row989},
-  {(bigint) parser_tables___ParserTable___action_table_row990},
-  {(bigint) parser_tables___ParserTable___action_table_row991},
-  {(bigint) parser_tables___ParserTable___action_table_row992},
-  {(bigint) parser_tables___ParserTable___action_table_row993},
-  {(bigint) parser_tables___ParserTable___action_table_row994},
-  {(bigint) parser_tables___ParserTable___action_table_row995},
-  {(bigint) parser_tables___ParserTable___action_table_row996},
-  {(bigint) parser_tables___ParserTable___action_table_row997},
-  {(bigint) parser_tables___ParserTable___action_table_row998},
-  {(bigint) parser_tables___ParserTable___action_table_row999},
-  {(bigint) parser_tables___ParserTable___action_table_row1000},
-  {(bigint) parser_tables___ParserTable___action_table_row1001},
-  {(bigint) parser_tables___ParserTable___action_table_row1002},
-  {(bigint) parser_tables___ParserTable___action_table_row1003},
-  {(bigint) parser_tables___ParserTable___action_table_row1004},
-  {(bigint) parser_tables___ParserTable___action_table_row1005},
-  {(bigint) parser_tables___ParserTable___action_table_row1006},
-  {(bigint) parser_tables___ParserTable___action_table_row1007},
-  {(bigint) parser_tables___ParserTable___action_table_row1008},
-  {(bigint) parser_tables___ParserTable___action_table_row1009},
-  {(bigint) parser_tables___ParserTable___action_table_row1010},
-  {(bigint) parser_tables___ParserTable___action_table_row1011},
-  {(bigint) parser_tables___ParserTable___action_table_row1012},
-  {(bigint) parser_tables___ParserTable___action_table_row1013},
-  {(bigint) parser_tables___ParserTable___action_table_row1014},
-  {(bigint) parser_tables___ParserTable___action_table_row1015},
-  {(bigint) parser_tables___ParserTable___action_table_row1016},
-  {(bigint) parser_tables___ParserTable___action_table_row1017},
-  {(bigint) parser_tables___ParserTable___action_table_row1018},
-  {(bigint) parser_tables___ParserTable___action_table_row1019},
-  {(bigint) parser_tables___ParserTable___action_table_row1020},
-  {(bigint) parser_tables___ParserTable___action_table_row1021},
-  {(bigint) parser_tables___ParserTable___action_table_row1022},
-  {(bigint) parser_tables___ParserTable___action_table_row1023},
-  {(bigint) parser_tables___ParserTable___action_table_row1024},
-  {(bigint) parser_tables___ParserTable___action_table_row1025},
-  {(bigint) parser_tables___ParserTable___action_table_row1026},
-  {(bigint) parser_tables___ParserTable___action_table_row1027},
-  {(bigint) parser_tables___ParserTable___action_table_row1028},
-  {(bigint) parser_tables___ParserTable___action_table_row1029},
-  {(bigint) parser_tables___ParserTable___action_table_row1030},
-  {(bigint) parser_tables___ParserTable___action_table_row1031},
-  {(bigint) parser_tables___ParserTable___action_table_row1032},
-  {(bigint) parser_tables___ParserTable___action_table_row1033},
-  {(bigint) parser_tables___ParserTable___action_table_row1034},
-  {(bigint) parser_tables___ParserTable___action_table_row1035},
-  {(bigint) parser_tables___ParserTable___action_table_row1036},
-  {(bigint) parser_tables___ParserTable___action_table_row1037},
-  {(bigint) parser_tables___ParserTable___action_table_row1038},
-  {(bigint) parser_tables___ParserTable___action_table_row1039},
-  {(bigint) parser_tables___ParserTable___action_table_row1040},
-  {(bigint) parser_tables___ParserTable___action_table_row1041},
-  {(bigint) parser_tables___ParserTable___action_table_row1042},
-  {(bigint) parser_tables___ParserTable___action_table_row1043},
-  {(bigint) parser_tables___ParserTable___action_table_row1044},
-  {(bigint) parser_tables___ParserTable___action_table_row1045},
-  {(bigint) parser_tables___ParserTable___action_table_row1046},
-  {(bigint) parser_tables___ParserTable___action_table_row1047},
-  {(bigint) parser_tables___ParserTable___action_table_row1048},
-  {(bigint) parser_tables___ParserTable___action_table_row1049},
-  {(bigint) parser_tables___ParserTable___action_table_row1050},
-  {(bigint) parser_tables___ParserTable___action_table_row1051},
-  {(bigint) parser_tables___ParserTable___action_table_row1052},
-  {(bigint) parser_tables___ParserTable___action_table_row1053},
-  {(bigint) parser_tables___ParserTable___action_table_row1054},
-  {(bigint) parser_tables___ParserTable___action_table_row1055},
-  {(bigint) parser_tables___ParserTable___action_table_row1056},
-  {(bigint) parser_tables___ParserTable___action_table_row1057},
-  {(bigint) parser_tables___ParserTable___action_table_row1058},
-  {(bigint) parser_tables___ParserTable___action_table_row1059},
-  {(bigint) parser_tables___ParserTable___action_table_row1060},
-  {(bigint) parser_tables___ParserTable___action_table_row1061},
-  {(bigint) parser_tables___ParserTable___action_table_row1062},
-  {(bigint) parser_tables___ParserTable___action_table_row1063},
-  {(bigint) parser_tables___ParserTable___action_table_row1064},
-  {(bigint) parser_tables___ParserTable___action_table_row1065},
-  {(bigint) parser_tables___ParserTable___action_table_row1066},
-  {(bigint) parser_tables___ParserTable___action_table_row1067},
-  {(bigint) parser_tables___ParserTable___action_table_row1068},
-  {(bigint) parser_tables___ParserTable___action_table_row1069},
-  {(bigint) parser_tables___ParserTable___action_table_row1070},
-  {(bigint) parser_tables___ParserTable___action_table_row1071},
-  {(bigint) parser_tables___ParserTable___action_table_row1072},
-  {(bigint) parser_tables___ParserTable___action_table_row1073},
-  {(bigint) parser_tables___ParserTable___action_table_row1074},
-  {(bigint) parser_tables___ParserTable___action_table_row1075},
-  {(bigint) parser_tables___ParserTable___action_table_row1076},
-  {(bigint) parser_tables___ParserTable___action_table_row1077},
-  {(bigint) parser_tables___ParserTable___action_table_row1078},
-  {(bigint) parser_tables___ParserTable___action_table_row1079},
-  {(bigint) parser_tables___ParserTable___action_table_row1080},
-  {(bigint) parser_tables___ParserTable___action_table_row1081},
-  {(bigint) parser_tables___ParserTable___action_table_row1082},
-  {(bigint) parser_tables___ParserTable___action_table_row1083},
-  {(bigint) parser_tables___ParserTable___action_table_row1084},
-  {(bigint) parser_tables___ParserTable___action_table_row1085},
-  {(bigint) parser_tables___ParserTable___action_table_row1086},
-  {(bigint) parser_tables___ParserTable___action_table_row1087},
-  {(bigint) parser_tables___ParserTable___action_table_row1088},
-  {(bigint) parser_tables___ParserTable___action_table_row1089},
-  {(bigint) parser_tables___ParserTable___action_table_row1090},
-  {(bigint) parser_tables___ParserTable___action_table_row1091},
-  {(bigint) parser_tables___ParserTable___action_table_row1092},
-  {(bigint) parser_tables___ParserTable___action_table_row1093},
-  {(bigint) parser_tables___ParserTable___action_table_row1094},
-  {(bigint) parser_tables___ParserTable___action_table_row1095},
-  {(bigint) parser_tables___ParserTable___action_table_row1096},
-  {(bigint) parser_tables___ParserTable___action_table_row1097},
-  {(bigint) parser_tables___ParserTable___action_table_row1098},
-  {(bigint) parser_tables___ParserTable___action_table_row1099},
-  {(bigint) parser_tables___ParserTable___action_table_row1100},
-  {(bigint) parser_tables___ParserTable___action_table_row1101},
-  {(bigint) parser_tables___ParserTable___action_table_row1102},
-  {(bigint) parser_tables___ParserTable___action_table_row1103},
-  {(bigint) parser_tables___ParserTable___action_table_row1104},
-  {(bigint) parser_tables___ParserTable___action_table_row1105},
-  {(bigint) parser_tables___ParserTable___action_table_row1106},
-  {(bigint) parser_tables___ParserTable___action_table_row1107},
-  {(bigint) parser_tables___ParserTable___action_table_row1108},
-  {(bigint) parser_tables___ParserTable___action_table_row1109},
-  {(bigint) parser_tables___ParserTable___action_table_row1110},
-  {(bigint) parser_tables___ParserTable___action_table_row1111},
-  {(bigint) parser_tables___ParserTable___action_table_row1112},
-  {(bigint) parser_tables___ParserTable___action_table_row1113},
-  {(bigint) parser_tables___ParserTable___action_table_row1114},
-  {(bigint) parser_tables___ParserTable___action_table_row1115},
-  {(bigint) parser_tables___ParserTable___action_table_row1116},
-  {(bigint) parser_tables___ParserTable___action_table_row1117},
-  {(bigint) parser_tables___ParserTable___action_table_row1118},
-  {(bigint) parser_tables___ParserTable___action_table_row1119},
-  {(bigint) parser_tables___ParserTable___action_table_row1120},
-  {(bigint) parser_tables___ParserTable___action_table_row1121},
-  {(bigint) parser_tables___ParserTable___action_table_row1122},
-  {(bigint) parser_tables___ParserTable___action_table_row1123},
-  {(bigint) parser_tables___ParserTable___action_table_row1124},
-  {(bigint) parser_tables___ParserTable___action_table_row1125},
-  {(bigint) parser_tables___ParserTable___action_table_row1126},
-  {(bigint) parser_tables___ParserTable___action_table_row1127},
-  {(bigint) parser_tables___ParserTable___action_table_row1128},
-  {(bigint) parser_tables___ParserTable___action_table_row1129},
-  {(bigint) parser_tables___ParserTable___action_table_row1130},
-  {(bigint) parser_tables___ParserTable___action_table_row1131},
-  {(bigint) parser_tables___ParserTable___action_table_row1132},
-  {(bigint) parser_tables___ParserTable___action_table_row1133},
-  {(bigint) parser_tables___ParserTable___action_table_row1134},
-  {(bigint) parser_tables___ParserTable___action_table_row1135},
-  {(bigint) parser_tables___ParserTable___action_table_row1136},
-  {(bigint) parser_tables___ParserTable___action_table_row1137},
-  {(bigint) parser_tables___ParserTable___action_table_row1138},
-  {(bigint) parser_tables___ParserTable___action_table_row1139},
-  {(bigint) parser_tables___ParserTable___action_table_row1140},
-  {(bigint) parser_tables___ParserTable___action_table_row1141},
-  {(bigint) parser_tables___ParserTable___action_table_row1142},
-  {(bigint) parser_tables___ParserTable___action_table_row1143},
-  {(bigint) parser_tables___ParserTable___action_table_row1144},
-  {(bigint) parser_tables___ParserTable___action_table_row1145},
-  {(bigint) parser_tables___ParserTable___action_table_row1146},
-  {(bigint) parser_tables___ParserTable___action_table_row1147},
-  {(bigint) parser_tables___ParserTable___action_table_row1148},
-  {(bigint) parser_tables___ParserTable___action_table_row1149},
-  {(bigint) parser_tables___ParserTable___action_table_row1150},
-  {(bigint) parser_tables___ParserTable___action_table_row1151},
-  {(bigint) parser_tables___ParserTable___action_table_row1152},
-  {(bigint) parser_tables___ParserTable___action_table_row1153},
-  {(bigint) parser_tables___ParserTable___action_table_row1154},
-  {(bigint) parser_tables___ParserTable___action_table_row1155},
-  {(bigint) parser_tables___ParserTable___action_table_row1156},
-  {(bigint) parser_tables___ParserTable___action_table_row1157},
-  {(bigint) parser_tables___ParserTable___action_table_row1158},
-  {(bigint) parser_tables___ParserTable___action_table_row1159},
-  {(bigint) parser_tables___ParserTable___action_table_row1160},
-  {(bigint) parser_tables___ParserTable___action_table_row1161},
-  {(bigint) parser_tables___ParserTable___action_table_row1162},
-  {(bigint) parser_tables___ParserTable___action_table_row1163},
-  {(bigint) parser_tables___ParserTable___action_table_row1164},
-  {(bigint) parser_tables___ParserTable___action_table_row1165},
-  {(bigint) parser_tables___ParserTable___action_table_row1166},
-  {(bigint) parser_tables___ParserTable___action_table_row1167},
-  {(bigint) parser_tables___ParserTable___action_table_row1168},
-  {(bigint) parser_tables___ParserTable___action_table_row1169},
-  {(bigint) parser_tables___ParserTable___action_table_row1170},
-  {(bigint) parser_tables___ParserTable___action_table_row1171},
-  {(bigint) parser_tables___ParserTable___action_table_row1172},
-  {(bigint) parser_tables___ParserTable___action_table_row1173},
-  {(bigint) parser_tables___ParserTable___action_table_row1174},
-  {(bigint) parser_tables___ParserTable___action_table_row1175},
-  {(bigint) parser_tables___ParserTable___action_table_row1176},
-  {(bigint) parser_tables___ParserTable___action_table_row1177},
-  {(bigint) parser_tables___ParserTable___action_table_row1178},
-  {(bigint) parser_tables___ParserTable___action_table_row1179},
-  {(bigint) parser_tables___ParserTable___action_table_row1180},
-  {(bigint) parser_tables___ParserTable___action_table_row1181},
-  {(bigint) parser_tables___ParserTable___action_table_row1182},
-  {(bigint) parser_tables___ParserTable___action_table_row1183},
-  {(bigint) parser_tables___ParserTable___action_table_row1184},
-  {(bigint) parser_tables___ParserTable___action_table_row1185},
-  {(bigint) parser_tables___ParserTable___action_table_row1186},
-  {(bigint) parser_tables___ParserTable___action_table_row1187},
-  {(bigint) parser_tables___ParserTable___action_table_row1188},
-  {(bigint) parser_tables___ParserTable___action_table_row1189},
-  {(bigint) parser_tables___ParserTable___action_table_row1190},
-  {(bigint) parser_tables___ParserTable___action_table_row1191},
-  {(bigint) parser_tables___ParserTable___action_table_row1192},
-  {(bigint) parser_tables___ParserTable___action_table_row1193},
-  {(bigint) parser_tables___ParserTable___action_table_row1194},
-  {(bigint) parser_tables___ParserTable___action_table_row1195},
-  {(bigint) parser_tables___ParserTable___action_table_row1196},
-  {(bigint) parser_tables___ParserTable___action_table_row1197},
-  {(bigint) parser_tables___ParserTable___action_table_row1198},
-  {(bigint) parser_tables___ParserTable___action_table_row1199},
-  {(bigint) parser_tables___ParserTable___action_table_row1200},
-  {(bigint) parser_tables___ParserTable___action_table_row1201},
-  {(bigint) parser_tables___ParserTable___action_table_row1202},
-  {(bigint) parser_tables___ParserTable___action_table_row1203},
-  {(bigint) parser_tables___ParserTable___action_table_row1204},
-  {(bigint) parser_tables___ParserTable___action_table_row1205},
-  {(bigint) parser_tables___ParserTable___action_table_row1206},
-  {(bigint) parser_tables___ParserTable___action_table_row1207},
-  {(bigint) parser_tables___ParserTable___action_table_row1208},
-  {(bigint) parser_tables___ParserTable___action_table_row1209},
-  {(bigint) parser_tables___ParserTable___action_table_row1210},
-  {(bigint) parser_tables___ParserTable___action_table_row1211},
-  {(bigint) parser_tables___ParserTable___action_table_row1212},
-  {(bigint) parser_tables___ParserTable___action_table_row1213},
-  {(bigint) parser_tables___ParserTable___action_table_row1214},
-  {(bigint) parser_tables___ParserTable___action_table_row1215},
-  {(bigint) parser_tables___ParserTable___action_table_row1216},
-  {(bigint) parser_tables___ParserTable___action_table_row1217},
-  {(bigint) parser_tables___ParserTable___action_table_row1218},
-  {(bigint) parser_tables___ParserTable___action_table_row1219},
-  {(bigint) parser_tables___ParserTable___action_table_row1220},
-  {(bigint) parser_tables___ParserTable___action_table_row1221},
-  {(bigint) parser_tables___ParserTable___action_table_row1222},
-  {(bigint) parser_tables___ParserTable___action_table_row1223},
-  {(bigint) parser_tables___ParserTable___action_table_row1224},
-  {(bigint) parser_tables___ParserTable___action_table_row1225},
-  {(bigint) parser_tables___ParserTable___action_table_row1226},
-  {(bigint) parser_tables___ParserTable___action_table_row1227},
-  {(bigint) parser_tables___ParserTable___action_table_row1228},
-  {(bigint) parser_tables___ParserTable___action_table_row1229},
-  {(bigint) parser_tables___ParserTable___action_table_row1230},
-  {(bigint) parser_tables___ParserTable___action_table_row1231},
-  {(bigint) parser_tables___ParserTable___action_table_row1232},
-  {(bigint) parser_tables___ParserTable___action_table_row1233},
-  {(bigint) parser_tables___ParserTable___action_table_row1234},
-  {(bigint) parser_tables___ParserTable___action_table_row1235},
-  {(bigint) parser_tables___ParserTable___action_table_row1236},
-  {(bigint) parser_tables___ParserTable___action_table_row1237},
-  {(bigint) parser_tables___ParserTable___action_table_row1238},
-  {(bigint) parser_tables___ParserTable___action_table_row1239},
-  {(bigint) parser_tables___ParserTable___action_table_row1240},
-  {(bigint) parser_tables___ParserTable___action_table_row1241},
-  {(bigint) parser_tables___ParserTable___action_table_row1242},
-  {(bigint) parser_tables___ParserTable___action_table_row1243},
-  {(bigint) parser_tables___ParserTable___action_table_row1244},
-  {(bigint) parser_tables___ParserTable___action_table_row1245},
-  {(bigint) parser_tables___ParserTable___action_table_row1246},
-  {(bigint) parser_tables___ParserTable___action_table_row1247},
-  {(bigint) parser_tables___ParserTable___action_table_row1248},
-  {(bigint) parser_tables___ParserTable___action_table_row1249},
-  {(bigint) parser_tables___ParserTable___action_table_row1250},
-  {(bigint) parser_tables___ParserTable___action_table_row1251},
-  {(bigint) parser_tables___ParserTable___action_table_row1252},
-  {(bigint) parser_tables___ParserTable___action_table_row1253},
-  {(bigint) parser_tables___ParserTable___action_table_row1254},
-  {(bigint) parser_tables___ParserTable___action_table_row1255},
-  {(bigint) parser_tables___ParserTable___action_table_row1256},
-  {(bigint) parser_tables___ParserTable___action_table_row1257},
-  {(bigint) parser_tables___ParserTable___action_table_row1258},
-  {(bigint) parser_tables___ParserTable___action_table_row1259},
-  {(bigint) parser_tables___ParserTable___action_table_row1260},
-  {(bigint) parser_tables___ParserTable___action_table_row1261},
-  {(bigint) parser_tables___ParserTable___action_table_row1262},
-  {(bigint) parser_tables___ParserTable___action_table_row1263},
-  {(bigint) parser_tables___ParserTable___action_table_row1264},
-  {(bigint) parser_tables___ParserTable___action_table_row1265},
-  {(bigint) parser_tables___ParserTable___action_table_row1266},
-  {(bigint) parser_tables___ParserTable___action_table_row1267},
-  {(bigint) parser_tables___ParserTable___action_table_row1268},
-  {(bigint) parser_tables___ParserTable___action_table_row1269},
-  {(bigint) parser_tables___ParserTable___action_table_row1270},
-  {(bigint) parser_tables___ParserTable___action_table_row1271},
-  {(bigint) parser_tables___ParserTable___action_table_row1272},
-  {(bigint) parser_tables___ParserTable___action_table_row1273},
-  {(bigint) parser_tables___ParserTable___action_table_row1274},
-  {(bigint) parser_tables___ParserTable___action_table_row1275},
-  {(bigint) parser_tables___ParserTable___action_table_row1276},
-  {(bigint) parser_tables___ParserTable___action_table_row1277},
-  {(bigint) parser_tables___ParserTable___action_table_row1278},
-  {(bigint) parser_tables___ParserTable___action_table_row1279},
-  {(bigint) parser_tables___ParserTable___action_table_row1280},
-  {(bigint) parser_tables___ParserTable___action_table_row1281},
-  {(bigint) parser_tables___ParserTable___action_table_row1282},
-  {(bigint) parser_tables___ParserTable___action_table_row1283},
-  {(bigint) parser_tables___ParserTable___action_table_row1284},
-  {(bigint) parser_tables___ParserTable___action_table_row1285},
-  {(bigint) parser_tables___ParserTable___action_table_row1286},
-  {(bigint) parser_tables___ParserTable___action_table_row1287},
-  {(bigint) parser_tables___ParserTable___action_table_row1288},
-  {(bigint) parser_tables___ParserTable___action_table_row1289},
-  {(bigint) parser_tables___ParserTable___action_table_row1290},
-  {(bigint) parser_tables___ParserTable___action_table_row1291},
-  {(bigint) parser_tables___ParserTable___action_table_row1292},
-  {(bigint) parser_tables___ParserTable___action_table_row1293},
-  {(bigint) parser_tables___ParserTable___action_table_row1294},
-  {(bigint) parser_tables___ParserTable___action_table_row1295},
-  {(bigint) parser_tables___ParserTable___action_table_row1296},
-  {(bigint) parser_tables___ParserTable___action_table_row1297},
-  {(bigint) parser_tables___ParserTable___action_table_row1298},
-  {(bigint) parser_tables___ParserTable___action_table_row1299},
-  {(bigint) parser_tables___ParserTable___action_table_row1300},
-  {(bigint) parser_tables___ParserTable___action_table_row1301},
-  {(bigint) parser_tables___ParserTable___action_table_row1302},
-  {(bigint) parser_tables___ParserTable___action_table_row1303},
-  {(bigint) parser_tables___ParserTable___action_table_row1304},
-  {(bigint) parser_tables___ParserTable___action_table_row1305},
-  {(bigint) parser_tables___ParserTable___action_table_row1306},
-  {(bigint) parser_tables___ParserTable___action_table_row1307},
-  {(bigint) parser_tables___ParserTable___action_table_row1308},
-  {(bigint) parser_tables___ParserTable___action_table_row1309},
-  {(bigint) parser_tables___ParserTable___action_table_row1310},
-  {(bigint) parser_tables___ParserTable___action_table_row1311},
-  {(bigint) parser_tables___ParserTable___action_table_row1312},
-  {(bigint) parser_tables___ParserTable___action_table_row1313},
-  {(bigint) parser_tables___ParserTable___action_table_row1314},
-  {(bigint) parser_tables___ParserTable___action_table_row1315},
-  {(bigint) parser_tables___ParserTable___action_table_row1316},
-  {(bigint) parser_tables___ParserTable___action_table_row1317},
-  {(bigint) parser_tables___ParserTable___action_table_row1318},
-  {(bigint) parser_tables___ParserTable___action_table_row1319},
-  {(bigint) parser_tables___ParserTable___action_table_row1320},
-  {(bigint) parser_tables___ParserTable___action_table_row1321},
-  {(bigint) parser_tables___ParserTable___action_table_row1322},
-  {(bigint) parser_tables___ParserTable___action_table_row1323},
-  {(bigint) parser_tables___ParserTable___action_table_row1324},
-  {(bigint) parser_tables___ParserTable___action_table_row1325},
-  {(bigint) parser_tables___ParserTable___action_table_row1326},
-  {(bigint) parser_tables___ParserTable___action_table_row1327},
-  {(bigint) parser_tables___ParserTable___action_table_row1328},
-  {(bigint) parser_tables___ParserTable___action_table_row1329},
-  {(bigint) parser_tables___ParserTable___action_table_row1330},
-  {(bigint) parser_tables___ParserTable___action_table_row1331},
-  {(bigint) parser_tables___ParserTable___action_table_row1332},
-  {(bigint) parser_tables___ParserTable___action_table_row1333},
-  {(bigint) parser_tables___ParserTable___action_table_row1334},
-  {(bigint) parser_tables___ParserTable___action_table_row1335},
-  {(bigint) parser_tables___ParserTable___action_table_row1336},
-  {(bigint) parser_tables___ParserTable___action_table_row1337},
-  {(bigint) parser_tables___ParserTable___action_table_row1338},
-  {(bigint) parser_tables___ParserTable___action_table_row1339},
-  {(bigint) parser_tables___ParserTable___action_table_row1340},
-  {(bigint) parser_tables___ParserTable___action_table_row1341},
-  {(bigint) parser_tables___ParserTable___action_table_row1342},
-  {(bigint) parser_tables___ParserTable___action_table_row1343},
-  {(bigint) parser_tables___ParserTable___action_table_row1344},
-  {(bigint) parser_tables___ParserTable___action_table_row1345},
-  {(bigint) parser_tables___ParserTable___action_table_row1346},
-  {(bigint) parser_tables___ParserTable___action_table_row1347},
-  {(bigint) parser_tables___ParserTable___action_table_row1348},
-  {(bigint) parser_tables___ParserTable___action_table_row1349},
-  {(bigint) parser_tables___ParserTable___action_table_row1350},
-  {(bigint) parser_tables___ParserTable___action_table_row1351},
-  {(bigint) parser_tables___ParserTable___action_table_row1352},
-  {(bigint) parser_tables___ParserTable___action_table_row1353},
-  {(bigint) parser_tables___ParserTable___action_table_row1354},
-  {(bigint) parser_tables___ParserTable___action_table_row1355},
-  {(bigint) parser_tables___ParserTable___action_table_row1356},
-  {(bigint) parser_tables___ParserTable___action_table_row1357},
-  {(bigint) parser_tables___ParserTable___action_table_row1358},
-  {(bigint) parser_tables___ParserTable___action_table_row1359},
-  {(bigint) parser_tables___ParserTable___action_table_row1360},
-  {(bigint) parser_tables___ParserTable___action_table_row1361},
-  {(bigint) parser_tables___ParserTable___action_table_row1362},
-  {(bigint) parser_tables___ParserTable___action_table_row1363},
-  {(bigint) parser_tables___ParserTable___action_table_row1364},
-  {(bigint) parser_tables___ParserTable___action_table_row1365},
-  {(bigint) parser_tables___ParserTable___action_table_row1366},
-  {(bigint) parser_tables___ParserTable___action_table_row1367},
-  {(bigint) parser_tables___ParserTable___action_table_row1368},
-  {(bigint) parser_tables___ParserTable___action_table_row1369},
-  {(bigint) parser_tables___ParserTable___action_table_row1370},
-  {(bigint) parser_tables___ParserTable___action_table_row1371},
-  {(bigint) parser_tables___ParserTable___action_table_row1372},
-  {(bigint) parser_tables___ParserTable___action_table_row1373},
-  {(bigint) parser_tables___ParserTable___action_table_row1374},
-  {(bigint) parser_tables___ParserTable___action_table_row1375},
-  {(bigint) parser_tables___ParserTable___action_table_row1376},
-  {(bigint) parser_tables___ParserTable___action_table_row1377},
-  {(bigint) parser_tables___ParserTable___action_table_row1378},
-  {(bigint) parser_tables___ParserTable___action_table_row1379},
-  {(bigint) parser_tables___ParserTable___action_table_row1380},
-  {(bigint) parser_tables___ParserTable___action_table_row1381},
-  {(bigint) parser_tables___ParserTable___action_table_row1382},
-  {(bigint) parser_tables___ParserTable___action_table_row1383},
-  {(bigint) parser_tables___ParserTable___action_table_row1384},
-  {(bigint) parser_tables___ParserTable___action_table_row1385},
-  {(bigint) parser_tables___ParserTable___action_table_row1386},
-  {(bigint) parser_tables___ParserTable___action_table_row1387},
-  {(bigint) parser_tables___ParserTable___action_table_row1388},
-  {(bigint) parser_tables___ParserTable___action_table_row1389},
-  {(bigint) parser_tables___ParserTable___action_table_row1390},
-  {(bigint) parser_tables___ParserTable___action_table_row1391},
-  {(bigint) parser_tables___ParserTable___action_table_row1392},
-  {(bigint) parser_tables___ParserTable___action_table_row1393},
-  {(bigint) parser_tables___ParserTable___action_table_row1394},
-  {(bigint) parser_tables___ParserTable___action_table_row1395},
-  {(bigint) parser_tables___ParserTable___action_table_row1396},
-  {(bigint) parser_tables___ParserTable___action_table_row1397},
-  {(bigint) parser_tables___ParserTable___action_table_row1398},
-  {(bigint) parser_tables___ParserTable___action_table_row1399},
-  {(bigint) parser_tables___ParserTable___action_table_row1400},
-  {(bigint) parser_tables___ParserTable___action_table_row1401},
-  {(bigint) parser_tables___ParserTable___action_table_row1402},
-  {(bigint) parser_tables___ParserTable___action_table_row1403},
-  {(bigint) parser_tables___ParserTable___action_table_row1404},
-  {(bigint) parser_tables___ParserTable___action_table_row1405},
-  {(bigint) parser_tables___ParserTable___action_table_row1406},
-  {(bigint) parser_tables___ParserTable___action_table_row1407},
-  {(bigint) parser_tables___ParserTable___action_table_row1408},
-  {(bigint) parser_tables___ParserTable___action_table_row1409},
-  {(bigint) parser_tables___ParserTable___action_table_row1410},
-  {(bigint) parser_tables___ParserTable___action_table_row1411},
-  {(bigint) parser_tables___ParserTable___action_table_row1412},
-  {(bigint) parser_tables___ParserTable___action_table_row1413},
-  {(bigint) parser_tables___ParserTable___action_table_row1414},
-  {(bigint) parser_tables___ParserTable___action_table_row1415},
-  {(bigint) parser_tables___ParserTable___action_table_row1416},
-  {(bigint) parser_tables___ParserTable___action_table_row1417},
-  {(bigint) parser_tables___ParserTable___action_table_row1418},
-  {(bigint) parser_tables___ParserTable___action_table_row1419},
-  {(bigint) parser_tables___ParserTable___action_table_row1420},
-  {(bigint) parser_tables___ParserTable___action_table_row1421},
-  {(bigint) parser_tables___ParserTable___action_table_row1422},
-  {(bigint) parser_tables___ParserTable___action_table_row1423},
-  {(bigint) parser_tables___ParserTable___action_table_row1424},
-  {(bigint) parser_tables___ParserTable___action_table_row1425},
-  {(bigint) parser_tables___ParserTable___action_table_row1426},
-  {(bigint) parser_tables___ParserTable___action_table_row1427},
-  {(bigint) parser_tables___ParserTable___action_table_row1428},
-  {(bigint) parser_tables___ParserTable___action_table_row1429},
-  {(bigint) parser_tables___ParserTable___action_table_row1430},
-  {(bigint) parser_tables___ParserTable___action_table_row1431},
-  {(bigint) parser_tables___ParserTable___action_table_row1432},
-  {(bigint) parser_tables___ParserTable___action_table_row1433},
-  {(bigint) parser_tables___ParserTable___action_table_row1434},
-  {(bigint) parser_tables___ParserTable___action_table_row1435},
-  {(bigint) parser_tables___ParserTable___action_table_row1436},
-  {(bigint) parser_tables___ParserTable___action_table_row1437},
-  {(bigint) parser_tables___ParserTable___action_table_row1438},
-  {(bigint) parser_tables___ParserTable___action_table_row1439},
-  {(bigint) parser_tables___ParserTable___action_table_row1440},
-  {(bigint) parser_tables___ParserTable___action_table_row1441},
-  {(bigint) parser_tables___ParserTable___action_table_row1442},
-  {(bigint) parser_tables___ParserTable___action_table_row1443},
-  {(bigint) parser_tables___ParserTable___action_table_row1444},
-  {(bigint) parser_tables___ParserTable___action_table_row1445},
-  {(bigint) parser_tables___ParserTable___action_table_row1446},
-  {(bigint) parser_tables___ParserTable___action_table_row1447},
-  {(bigint) parser_tables___ParserTable___action_table_row1448},
-  {(bigint) parser_tables___ParserTable___action_table_row1449},
-  {(bigint) parser_tables___ParserTable___action_table_row1450},
-  {(bigint) parser_tables___ParserTable___action_table_row1451},
-  {(bigint) parser_tables___ParserTable___action_table_row1452},
-  {(bigint) parser_tables___ParserTable___action_table_row1453},
-  {(bigint) parser_tables___ParserTable___action_table_row1454},
-  {(bigint) parser_tables___ParserTable___action_table_row1455},
-  {(bigint) parser_tables___ParserTable___action_table_row1456},
-  {(bigint) parser_tables___ParserTable___action_table_row1457},
-  {(bigint) parser_tables___ParserTable___action_table_row1458},
-  {(bigint) parser_tables___ParserTable___action_table_row1459},
-  {(bigint) parser_tables___ParserTable___action_table_row1460},
-  {(bigint) parser_tables___ParserTable___action_table_row1461},
-  {(bigint) parser_tables___ParserTable___action_table_row1462},
-  {(bigint) parser_tables___ParserTable___action_table_row1463},
-  {(bigint) parser_tables___ParserTable___action_table_row1464},
-  {(bigint) parser_tables___ParserTable___action_table_row1465},
-  {(bigint) parser_tables___ParserTable___action_table_row1466},
-  {(bigint) parser_tables___ParserTable___action_table_row1467},
-  {(bigint) parser_tables___ParserTable___action_table_row1468},
-  {(bigint) parser_tables___ParserTable___action_table_row1469},
-  {(bigint) parser_tables___ParserTable___action_table_row1470},
-  {(bigint) parser_tables___ParserTable___action_table_row1471},
-  {(bigint) parser_tables___ParserTable___action_table_row1472},
-  {(bigint) parser_tables___ParserTable___action_table_row1473},
-  {(bigint) parser_tables___ParserTable___action_table_row1474},
-  {(bigint) parser_tables___ParserTable___action_table_row1475},
-  {(bigint) parser_tables___ParserTable___action_table_row1476},
-  {(bigint) parser_tables___ParserTable___action_table_row1477},
-  {(bigint) parser_tables___ParserTable___action_table_row1478},
-  {(bigint) parser_tables___ParserTable___action_table_row1479},
-  {(bigint) parser_tables___ParserTable___action_table_row1480},
-  {(bigint) parser_tables___ParserTable___action_table_row1481},
-  {(bigint) parser_tables___ParserTable___action_table_row1482},
-  {(bigint) parser_tables___ParserTable___action_table_row1483},
-  {(bigint) parser_tables___ParserTable___action_table_row1484},
-  {(bigint) parser_tables___ParserTable___action_table_row1485},
-  {(bigint) parser_tables___ParserTable___action_table_row1486},
-  {(bigint) parser_tables___ParserTable___action_table_row1487},
-  {(bigint) parser_tables___ParserTable___action_table_row1488},
-  {(bigint) parser_tables___ParserTable___action_table_row1489},
-  {(bigint) parser_tables___ParserTable___action_table_row1490},
-  {(bigint) parser_tables___ParserTable___action_table_row1491},
-  {(bigint) parser_tables___ParserTable___action_table_row1492},
-  {(bigint) parser_tables___ParserTable___action_table_row1493},
-  {(bigint) parser_tables___ParserTable___action_table_row1494},
-  {(bigint) parser_tables___ParserTable___action_table_row1495},
-  {(bigint) parser_tables___ParserTable___action_table_row1496},
-  {(bigint) parser_tables___ParserTable___action_table_row1497},
-  {(bigint) parser_tables___ParserTable___action_table_row1498},
-  {(bigint) parser_tables___ParserTable___action_table_row1499},
-  {(bigint) parser_tables___ParserTable___action_table_row1500},
-  {(bigint) parser_tables___ParserTable___action_table_row1501},
-  {(bigint) parser_tables___ParserTable___action_table_row1502},
-  {(bigint) parser_tables___ParserTable___action_table_row1503},
-  {(bigint) parser_tables___ParserTable___action_table_row1504},
-  {(bigint) parser_tables___ParserTable___action_table_row1505},
-  {(bigint) parser_tables___ParserTable___action_table_row1506},
-  {(bigint) parser_tables___ParserTable___action_table_row1507},
-  {(bigint) parser_tables___ParserTable___action_table_row1508},
-  {(bigint) parser_tables___ParserTable___action_table_row1509},
-  {(bigint) parser_tables___ParserTable___action_table_row1510},
-  {(bigint) parser_tables___ParserTable___action_table_row1511},
-  {(bigint) parser_tables___ParserTable___action_table_row1512},
-  {(bigint) parser_tables___ParserTable___build_goto_table},
-  {(bigint) parser_tables___ParserTable___error_messages},
-  {(bigint) parser_tables___ParserTable___errors},
-  {(bigint) parser_tables___ParserTable___init},
-  {(bigint) 2 /* 1561: Parser < Parser: superclass init_table position */},
-  {(bigint) parser___Parser___init},
-  {(bigint) parser___Parser___go_to},
-  {(bigint) parser___Parser___push},
-  {(bigint) parser___Parser___state},
-  {(bigint) parser___Parser___pop},
-  {(bigint) parser___Parser___parse},
-  {(bigint) parser___Parser___build_reduce_table},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 10 /* 45: Array < ArrayCapable: superclass init_table position */},
+  {(bigint) array___ArrayCapable___calloc_array},
+  {0} /* Class Hole :( */,
+  {(bigint) 9 /* 48: Array < AbstractArray: superclass init_table position */},
+  {(bigint) array___Array___enlarge},
+  {(bigint) array___AbstractArray___insert},
+  {(bigint) 11 /* 51: Array < Array: superclass init_table position */},
+  {(bigint) array___Array___init},
+  {(bigint) array___Array___with_items},
+  {(bigint) array___Array___with_capacity},
+  {(bigint) array___Array___filled_with},
+  {(bigint) array___Array___with_native},
+  {(bigint) array___Array___intern_items},
+  {(bigint) array___Array___sort},
+  {(bigint) array___Array___sub_sort},
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 2 /* 62: Array < Collection: superclass init_table position */},
+  {(bigint) array___AbstractArrayRead___iterator},
+  {(bigint) array___Array___iterate},
+  {(bigint) array___AbstractArrayRead___is_empty},
+  {(bigint) array___AbstractArrayRead___length},
+  {(bigint) array___AbstractArrayRead___has},
+  {(bigint) array___AbstractArrayRead___has_only},
+  {(bigint) array___AbstractArrayRead___count},
+  {(bigint) abstract_collection___SequenceRead___first},
+  {(bigint) 8 /* 71: Array < RemovableCollection: superclass init_table position */},
+  {(bigint) array___AbstractArray___clear},
+  {(bigint) array___AbstractArray___remove},
+  {(bigint) array___AbstractArray___remove_all},
+  {(bigint) 1 /* 75: Array < MapRead: superclass init_table position */},
+  {(bigint) array___Array_____bra},
+  {(bigint) array___AbstractArrayRead___has_key},
+  {(bigint) 7 /* 78: Array < SimpleCollection: superclass init_table position */},
+  {(bigint) array___Array___add},
+  {(bigint) abstract_collection___SimpleCollection___add_all},
+  {(bigint) 0 /* 81: Array < SequenceRead: superclass init_table position */},
+  {(bigint) abstract_collection___SequenceRead___last},
+  {(bigint) array___AbstractArrayRead___index_of},
+  {(bigint) string___Map___map_join},
+  {(bigint) 6 /* 85: Array < Map: superclass init_table position */},
+  {(bigint) array___Array_____braeq},
+  {(bigint) array___AbstractArray___remove_at},
+  {(bigint) abstract_collection___Map___recover_with},
+  {(bigint) 5 /* 89: Array < Sequence: superclass init_table position */},
+  {(bigint) abstract_collection___Sequence___first__eq},
+  {(bigint) abstract_collection___Sequence___last__eq},
+  {(bigint) array___AbstractArray___push},
+  {(bigint) abstract_collection___Sequence___append},
+  {(bigint) array___AbstractArray___pop},
+  {(bigint) array___AbstractArray___unshift},
+  {(bigint) array___AbstractArray___shift},
+  {(bigint) 4 /* 97: Array < AbstractArrayRead: superclass init_table position */},
+  {(bigint) array___AbstractArrayRead___last_index_of},
+  {(bigint) array___AbstractArrayRead___index_of_from},
+  {(bigint) array___AbstractArrayRead___last_index_of_from},
+  {(bigint) array___AbstractArrayRead___reversed},
+  {(bigint) array___AbstractArrayRead___copy_to},
+  {(bigint) array___AbstractArrayRead___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute Parser::_action_table */
-/* 2: Attribute Parser::_goto_table */
-/* 3: Attribute Parser::_lexer */
-/* 4: Attribute Parser::_stack */
-/* 5: Attribute Parser::_stack_pos */
-/* 6: Attribute Parser::_reduce_table */
-val_t NEW_Parser(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute Array::_length */
+/* 3: Attribute Array::_items */
+/* 4: Attribute Array::_capacity */
+void INIT_ATTRIBUTES__Array(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Array;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:329 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//array.nit:337 */
+  REGB0 = TAG_Int(0);
+  ATTR_array___Array____capacity(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//collection//array.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Array(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_Parser;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_tables___ParserTable____action_table(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_tables___ParserTable____goto_table(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Parser(val_t self, char *from) {
-}
-val_t NEW_Parser_parser___Parser___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_Parser();
-  parser___Parser___init(self, p0, init_table);
-  CHECKNEW_Parser(self, "parser::Parser::init for Parser");
-  return self;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_Array;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Array(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Array;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_array___Array____capacity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_SearchTokensVisitor[48] = {
-  {(bigint) 223 /* 0: Identity */},
-  {(bigint) 3 /* 1: SearchTokensVisitor < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 2: SearchTokensVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 223 /* 3: SearchTokensVisitor < SearchTokensVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_Array_array___Array___with_capacity(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 297;
+  fra.me.meth = LOCATE_NEW_Array_array___Array___with_capacity;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./../lib/standard//collection//array.nit:297 */
+  fra.me.REG[0] = NEW_Array();
+  INIT_ATTRIBUTES__Array(fra.me.REG[0]);
+  array___Array___with_capacity(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_Array(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_Array_array___Array___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 282;
+  fra.me.meth = LOCATE_NEW_Array_array___Array___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//collection//array.nit:282 */
+  fra.me.REG[0] = NEW_Array();
+  INIT_ATTRIBUTES__Array(fra.me.REG[0]);
+  array___Array___init(fra.me.REG[0], init_table);
+  CHECKNEW_Array(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_Array_array___Array___filled_with(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 306;
+  fra.me.meth = LOCATE_NEW_Array_array___Array___filled_with;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//collection//array.nit:306 */
+  fra.me.REG[1] = NEW_Array();
+  INIT_ATTRIBUTES__Array(fra.me.REG[1]);
+  array___Array___filled_with(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_Array(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_Array_array___Array___with_items(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 289;
+  fra.me.meth = LOCATE_NEW_Array_array___Array___with_items;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:289 */
+  fra.me.REG[1] = NEW_Array();
+  INIT_ATTRIBUTES__Array(fra.me.REG[1]);
+  array___Array___with_items(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_Array(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_Array_array___Array___with_native(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 320;
+  fra.me.meth = LOCATE_NEW_Array_array___Array___with_native;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//collection//array.nit:320 */
+  fra.me.REG[1] = NEW_Array();
+  INIT_ATTRIBUTES__Array(fra.me.REG[1]);
+  array___Array___with_native(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_Array(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ArrayIterator[56] = {
+  {(bigint) 2975 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ArrayIterator < Object: superclass typecheck marker */},
+  {(bigint) 175 /* 3: ArrayIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 1919 /* 4: ArrayIterator < MapIterator: superclass typecheck marker */},
+  {(bigint) 2627 /* 5: ArrayIterator < IndexedIterator: superclass typecheck marker */},
+  {(bigint) 2975 /* 6: ArrayIterator < ArrayIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47601,14 +17992,9 @@ const classtable_elt_t VFT_SearchTokensVisitor[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: SearchTokensVisitor < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: ArrayIterator < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -47616,7 +18002,6 @@ const classtable_elt_t VFT_SearchTokensVisitor[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -47624,48 +18009,115 @@ const classtable_elt_t VFT_SearchTokensVisitor[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: SearchTokensVisitor < Visitor: superclass init_table position */},
-  {(bigint) parser___SearchTokensVisitor___visit},
-  {(bigint) parser_prod___Visitor___init},
-  {(bigint) 2 /* 46: SearchTokensVisitor < SearchTokensVisitor: superclass init_table position */},
-  {(bigint) parser___SearchTokensVisitor___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) array___Iterator___to_a},
+  {(bigint) 2 /* 46: ArrayIterator < Iterator: superclass init_table position */},
+  {(bigint) array___ArrayIterator___item},
+  {(bigint) array___ArrayIterator___next},
+  {(bigint) array___ArrayIterator___is_ok},
+  {(bigint) 1 /* 50: ArrayIterator < MapIterator: superclass init_table position */},
+  {(bigint) abstract_collection___IndexedIterator___key},
+  {(bigint) 0 /* 52: ArrayIterator < IndexedIterator: superclass init_table position */},
+  {(bigint) array___ArrayIterator___index},
+  {(bigint) 4 /* 54: ArrayIterator < ArrayIterator: superclass init_table position */},
+  {(bigint) array___ArrayIterator___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute SearchTokensVisitor::_untokenned_nodes */
-/* 2: Attribute SearchTokensVisitor::_last_token */
-val_t NEW_SearchTokensVisitor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ArrayIterator::_index */
+/* 3: Attribute ArrayIterator::_array */
+void INIT_ATTRIBUTES__ArrayIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ArrayIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:409 */
+  REGB0 = TAG_Int(0);
+  ATTR_array___ArrayIterator____index(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ArrayIterator(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_SearchTokensVisitor;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_SearchTokensVisitor(val_t self, char *from) {
-}
-val_t NEW_SearchTokensVisitor_parser___SearchTokensVisitor___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_SearchTokensVisitor();
-  parser___SearchTokensVisitor___init(self, init_table);
-  CHECKNEW_SearchTokensVisitor(self, "parser::SearchTokensVisitor::init for SearchTokensVisitor");
-  return self;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_ArrayIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ArrayIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ArrayIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_array___ArrayIterator____index(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_index", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_array___ArrayIterator____array(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction[46] = {
-  {(bigint) 39 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction < ReduceAction: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ArrayIterator_array___ArrayIterator___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 403;
+  fra.me.meth = LOCATE_NEW_ArrayIterator_array___ArrayIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:403 */
+  fra.me.REG[1] = NEW_ArrayIterator();
+  INIT_ATTRIBUTES__ArrayIterator(fra.me.REG[1]);
+  array___ArrayIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ArrayIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ArraySet[86] = {
+  {(bigint) 3283 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ArraySet < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 251 /* 5: ArraySet < Collection: superclass typecheck marker */},
+  {(bigint) 327 /* 6: ArraySet < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 2911 /* 7: ArraySet < Set: superclass typecheck marker */},
+  {(bigint) 2543 /* 8: ArraySet < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 3283 /* 9: ArraySet < ArraySet: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47673,14 +18125,9 @@ const classtable_elt_t VFT_ReduceAction[46] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 4 /* 19: ArraySet < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -47688,7 +18135,6 @@ const classtable_elt_t VFT_ReduceAction[46] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -47696,39 +18142,17 @@ const classtable_elt_t VFT_ReduceAction[46] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction___action},
-  {(bigint) parser___ReduceAction___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction(val_t self, char *from) {
-}
-val_t NEW_ReduceAction_parser___ReduceAction___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_ReduceAction();
-  parser___ReduceAction___init(self, init_table);
-  CHECKNEW_ReduceAction(self, "parser::ReduceAction::init for ReduceAction");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction0[48] = {
-  {(bigint) 3183 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction0 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction0 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3183 /* 3: ReduceAction0 < ReduceAction0: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47741,64 +18165,124 @@ const classtable_elt_t VFT_ReduceAction0[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction0 < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction0 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction0___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction0 < ReduceAction0: superclass init_table position */},
-  {(bigint) parser___ReduceAction0___init},
+  {(bigint) 0 /* 57: ArraySet < Set: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 3 /* 62: ArraySet < Collection: superclass init_table position */},
+  {(bigint) array___ArraySet___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) array___ArraySet___is_empty},
+  {(bigint) array___ArraySet___length},
+  {(bigint) array___ArraySet___has},
+  {(bigint) abstract_collection___Set___has_only},
+  {(bigint) abstract_collection___Set___count},
+  {(bigint) array___ArraySet___first},
+  {(bigint) 2 /* 71: ArraySet < RemovableCollection: superclass init_table position */},
+  {(bigint) array___ArraySet___clear},
+  {(bigint) array___ArraySet___remove},
+  {(bigint) array___ArraySet___remove_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 78: ArraySet < SimpleCollection: superclass init_table position */},
+  {(bigint) array___ArraySet___add},
+  {(bigint) abstract_collection___SimpleCollection___add_all},
+  {(bigint) 5 /* 81: ArraySet < ArraySet: superclass init_table position */},
+  {(bigint) array___ArraySet___enlarge},
+  {(bigint) array___ArraySet___remove_at},
+  {(bigint) array___ArraySet___init},
+  {(bigint) array___ArraySet___with_capacity},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction0(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction0;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction0(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ArraySet::_array */
+void INIT_ATTRIBUTES__ArraySet(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ArraySet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction0_parser___ReduceAction0___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction0();
-  parser___ReduceAction0___init(self, init_table);
-  CHECKNEW_ReduceAction0(self, "parser::ReduceAction0::init for ReduceAction0");
-  return self;
+val_t NEW_ArraySet(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ArraySet;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ArraySet(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ArraySet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_array___ArraySet____array(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction1[48] = {
-  {(bigint) 3179 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction1 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction1 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3179 /* 3: ReduceAction1 < ReduceAction1: superclass typecheck marker */},
+val_t NEW_ArraySet_array___ArraySet___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 456;
+  fra.me.meth = LOCATE_NEW_ArraySet_array___ArraySet___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//collection//array.nit:456 */
+  fra.me.REG[0] = NEW_ArraySet();
+  INIT_ATTRIBUTES__ArraySet(fra.me.REG[0]);
+  array___ArraySet___init(fra.me.REG[0], init_table);
+  CHECKNEW_ArraySet(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ArraySet_array___ArraySet___with_capacity(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 459;
+  fra.me.meth = LOCATE_NEW_ArraySet_array___ArraySet___with_capacity;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./../lib/standard//collection//array.nit:459 */
+  fra.me.REG[0] = NEW_ArraySet();
+  INIT_ATTRIBUTES__ArraySet(fra.me.REG[0]);
+  array___ArraySet___with_capacity(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ArraySet(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ArraySetIterator[52] = {
+  {(bigint) 2131 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ArraySetIterator < Object: superclass typecheck marker */},
+  {(bigint) 175 /* 3: ArraySetIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 2131 /* 4: ArraySetIterator < ArraySetIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47811,14 +18295,9 @@ const classtable_elt_t VFT_ReduceAction1[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction1 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ArraySetIterator < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -47826,7 +18305,6 @@ const classtable_elt_t VFT_ReduceAction1[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -47834,61 +18312,109 @@ const classtable_elt_t VFT_ReduceAction1[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction1 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction1___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction1 < ReduceAction1: superclass init_table position */},
-  {(bigint) parser___ReduceAction1___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) array___Iterator___to_a},
+  {(bigint) 0 /* 46: ArraySetIterator < Iterator: superclass init_table position */},
+  {(bigint) array___ArraySetIterator___item},
+  {(bigint) array___ArraySetIterator___next},
+  {(bigint) array___ArraySetIterator___is_ok},
+  {(bigint) 2 /* 50: ArraySetIterator < ArraySetIterator: superclass init_table position */},
+  {(bigint) array___ArraySetIterator___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction1(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction1;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ArraySetIterator::_iter */
+void INIT_ATTRIBUTES__ArraySetIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ArraySetIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction1(val_t self, char *from) {
-}
-val_t NEW_ReduceAction1_parser___ReduceAction1___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction1();
-  parser___ReduceAction1___init(self, init_table);
-  CHECKNEW_ReduceAction1(self, "parser::ReduceAction1::init for ReduceAction1");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction2[48] = {
-  {(bigint) 2735 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction2 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction2 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2735 /* 3: ReduceAction2 < ReduceAction2: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ArraySetIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ArraySetIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ArraySetIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ArraySetIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_array___ArraySetIterator____iter(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ArraySetIterator_array___ArraySetIterator___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 473;
+  fra.me.meth = LOCATE_NEW_ArraySetIterator_array___ArraySetIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:473 */
+  fra.me.REG[1] = NEW_ArraySetIterator();
+  INIT_ATTRIBUTES__ArraySetIterator(fra.me.REG[1]);
+  array___ArraySetIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ArraySetIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ArrayMap[96] = {
+  {(bigint) 3287 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ArrayMap < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 251 /* 5: ArrayMap < Collection: superclass typecheck marker */},
+  {(bigint) 327 /* 6: ArrayMap < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 1915 /* 7: ArrayMap < MapRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 2587 /* 10: ArrayMap < Map: superclass typecheck marker */},
+  {(bigint) 2971 /* 11: ArrayMap < CoupleMap: superclass typecheck marker */},
+  {(bigint) 3287 /* 12: ArrayMap < ArrayMap: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction2 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ArrayMap < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -47896,7 +18422,6 @@ const classtable_elt_t VFT_ReduceAction2[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -47904,41 +18429,17 @@ const classtable_elt_t VFT_ReduceAction2[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction2 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction2___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction2 < ReduceAction2: superclass init_table position */},
-  {(bigint) parser___ReduceAction2___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction2(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction2;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction2(val_t self, char *from) {
-}
-val_t NEW_ReduceAction2_parser___ReduceAction2___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction2();
-  parser___ReduceAction2___init(self, init_table);
-  CHECKNEW_ReduceAction2(self, "parser::ReduceAction2::init for ReduceAction2");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction3[48] = {
-  {(bigint) 2291 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction3 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction3 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2291 /* 3: ReduceAction3 < ReduceAction3: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47951,64 +18452,124 @@ const classtable_elt_t VFT_ReduceAction3[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction3 < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction3 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction3___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction3 < ReduceAction3: superclass init_table position */},
-  {(bigint) parser___ReduceAction3___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 4 /* 62: ArrayMap < Collection: superclass init_table position */},
+  {(bigint) array___ArrayMap___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) array___ArrayMap___is_empty},
+  {(bigint) array___ArrayMap___length},
+  {(bigint) array___ArrayMap___has},
+  {(bigint) array___ArrayMap___has_only},
+  {(bigint) array___ArrayMap___count},
+  {(bigint) array___ArrayMap___first},
+  {(bigint) 2 /* 71: ArrayMap < RemovableCollection: superclass init_table position */},
+  {(bigint) array___ArrayMap___clear},
+  {(bigint) array___ArrayMap___remove},
+  {(bigint) array___ArrayMap___remove_all},
+  {(bigint) 3 /* 75: ArrayMap < MapRead: superclass init_table position */},
+  {(bigint) array___ArrayMap_____bra},
+  {(bigint) array___ArrayMap___has_key},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) string___Map___map_join},
+  {(bigint) 1 /* 85: ArrayMap < Map: superclass init_table position */},
+  {(bigint) array___ArrayMap_____braeq},
+  {(bigint) array___ArrayMap___remove_at},
+  {(bigint) abstract_collection___Map___recover_with},
+  {(bigint) 0 /* 89: ArrayMap < CoupleMap: superclass init_table position */},
+  {(bigint) array___ArrayMap___couple_at},
+  {(bigint) 6 /* 91: ArrayMap < ArrayMap: superclass init_table position */},
+  {(bigint) array___ArrayMap___enlarge},
+  {(bigint) array___ArrayMap___remove_at_index},
+  {(bigint) array___ArrayMap___index},
+  {(bigint) array___ArrayMap___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction3(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ArrayMap::_items */
+/* 3: Attribute ArrayMap::_last_index */
+void INIT_ATTRIBUTES__ArrayMap(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ArrayMap;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:594 */
+  REGB0 = TAG_Int(0);
+  ATTR_array___ArrayMap____last_index(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ArrayMap(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction3;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction3(val_t self, char *from) {
-}
-val_t NEW_ReduceAction3_parser___ReduceAction3___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction3();
-  parser___ReduceAction3___init(self, init_table);
-  CHECKNEW_ReduceAction3(self, "parser::ReduceAction3::init for ReduceAction3");
-  return self;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_ArrayMap;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ArrayMap(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ArrayMap;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_array___ArrayMap____last_index(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_last_index", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction4[48] = {
-  {(bigint) 1847 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction4 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction4 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1847 /* 3: ReduceAction4 < ReduceAction4: superclass typecheck marker */},
+val_t NEW_ArrayMap_array___ArrayMap___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 614;
+  fra.me.meth = LOCATE_NEW_ArrayMap_array___ArrayMap___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//collection//array.nit:614 */
+  fra.me.REG[0] = NEW_ArrayMap();
+  INIT_ATTRIBUTES__ArrayMap(fra.me.REG[0]);
+  array___ArrayMap___init(fra.me.REG[0], init_table);
+  CHECKNEW_ArrayMap(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_NativeArray[49] = {
+  {(bigint) 119 /* 0: Identity */},
+  {(bigint) -1 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: NativeArray < Object: superclass typecheck marker */},
+  {(bigint) 119 /* 3: NativeArray < NativeArray: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48021,14 +18582,10 @@ const classtable_elt_t VFT_ReduceAction4[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction4 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: NativeArray < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48036,7 +18593,6 @@ const classtable_elt_t VFT_ReduceAction4[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48044,41 +18600,38 @@ const classtable_elt_t VFT_ReduceAction4[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction4 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction4___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction4 < ReduceAction4: superclass init_table position */},
-  {(bigint) parser___ReduceAction4___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: NativeArray < NativeArray: superclass init_table position */},
+  {(bigint) array___NativeArray_____bra},
+  {(bigint) array___NativeArray_____braeq},
+  {(bigint) array___NativeArray___copy_to},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction4(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction4;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction4(val_t self, char *from) {
-}
-val_t NEW_ReduceAction4_parser___ReduceAction4___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction4();
-  parser___ReduceAction4___init(self, init_table);
-  CHECKNEW_ReduceAction4(self, "parser::ReduceAction4::init for ReduceAction4");
-  return self;
+/* 1: Object_id */
+val_t NEW_NativeArray(size_t length, size_t size) {
+  Nit_NativeArray array;
+  array = (Nit_NativeArray)alloc(sizeof(struct Nit_NativeArray) + ((length - 1) * size));
+  array->vft = (classtable_elt_t*)VFT_NativeArray;
+  array->object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  array->size = length;
+  return OBJ2VAL(array);
 }
-const classtable_elt_t VFT_ReduceAction5[48] = {
-  {(bigint) 1403 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction5 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction5 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1403 /* 3: ReduceAction5 < ReduceAction5: superclass typecheck marker */},
+const classtable_elt_t VFT_AbstractSorter[52] = {
+  {(bigint) 267 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AbstractSorter < Object: superclass typecheck marker */},
+  {(bigint) 267 /* 3: AbstractSorter < AbstractSorter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48091,14 +18644,10 @@ const classtable_elt_t VFT_ReduceAction5[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction5 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: AbstractSorter < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48106,7 +18655,6 @@ const classtable_elt_t VFT_ReduceAction5[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48114,41 +18662,82 @@ const classtable_elt_t VFT_ReduceAction5[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction5 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction5___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction5 < ReduceAction5: superclass init_table position */},
-  {(bigint) parser___ReduceAction5___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: AbstractSorter < AbstractSorter: superclass init_table position */},
+  {(bigint) sorter___AbstractSorter___compare},
+  {(bigint) sorter___AbstractSorter___sort},
+  {(bigint) sorter___AbstractSorter___sub_sort},
+  {(bigint) sorter___AbstractSorter___quick_sort},
+  {(bigint) sorter___AbstractSorter___bubble_sort},
+  {(bigint) sorter___AbstractSorter___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction5(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction5;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction5(val_t self, char *from) {
+/* 1: Object_id */
+void INIT_ATTRIBUTES__AbstractSorter(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AbstractSorter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction5_parser___ReduceAction5___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction5();
-  parser___ReduceAction5___init(self, init_table);
-  CHECKNEW_ReduceAction5(self, "parser::ReduceAction5::init for ReduceAction5");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction6[48] = {
-  {(bigint) 959 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction6 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction6 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 959 /* 3: ReduceAction6 < ReduceAction6: superclass typecheck marker */},
+val_t NEW_AbstractSorter(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_AbstractSorter;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AbstractSorter(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AbstractSorter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AbstractSorter_sorter___AbstractSorter___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AbstractSorter_sorter___AbstractSorter___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_AbstractSorter();
+  INIT_ATTRIBUTES__AbstractSorter(fra.me.REG[0]);
+  sorter___AbstractSorter___init(fra.me.REG[0], init_table);
+  CHECKNEW_AbstractSorter(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ComparableSorter[54] = {
+  {(bigint) 2103 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ComparableSorter < Object: superclass typecheck marker */},
+  {(bigint) 267 /* 3: ComparableSorter < AbstractSorter: superclass typecheck marker */},
+  {(bigint) 2103 /* 4: ComparableSorter < ComparableSorter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48161,14 +18750,9 @@ const classtable_elt_t VFT_ReduceAction6[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction6 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ComparableSorter < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48176,7 +18760,6 @@ const classtable_elt_t VFT_ReduceAction6[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48184,42 +18767,86 @@ const classtable_elt_t VFT_ReduceAction6[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction6 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction6___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction6 < ReduceAction6: superclass init_table position */},
-  {(bigint) parser___ReduceAction6___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ComparableSorter < AbstractSorter: superclass init_table position */},
+  {(bigint) sorter___ComparableSorter___compare},
+  {(bigint) sorter___AbstractSorter___sort},
+  {(bigint) sorter___AbstractSorter___sub_sort},
+  {(bigint) sorter___AbstractSorter___quick_sort},
+  {(bigint) sorter___AbstractSorter___bubble_sort},
+  {(bigint) sorter___AbstractSorter___init},
+  {(bigint) 2 /* 52: ComparableSorter < ComparableSorter: superclass init_table position */},
+  {(bigint) sorter___ComparableSorter___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction6(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction6;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction6(val_t self, char *from) {
-}
-val_t NEW_ReduceAction6_parser___ReduceAction6___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction6();
-  parser___ReduceAction6___init(self, init_table);
-  CHECKNEW_ReduceAction6(self, "parser::ReduceAction6::init for ReduceAction6");
-  return self;
+/* 1: Object_id */
+void INIT_ATTRIBUTES__ComparableSorter(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ComparableSorter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction7[48] = {
-  {(bigint) 515 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction7 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction7 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 515 /* 3: ReduceAction7 < ReduceAction7: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ComparableSorter(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_ComparableSorter;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ComparableSorter(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ComparableSorter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ComparableSorter_sorter___ComparableSorter___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 96;
+  fra.me.meth = LOCATE_NEW_ComparableSorter_sorter___ComparableSorter___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//collection//sorter.nit:96 */
+  fra.me.REG[0] = NEW_ComparableSorter();
+  INIT_ATTRIBUTES__ComparableSorter(fra.me.REG[0]);
+  sorter___ComparableSorter___init(fra.me.REG[0], init_table);
+  CHECKNEW_ComparableSorter(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_HashCollection[71] = {
+  {(bigint) 2043 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: HashCollection < Object: superclass typecheck marker */},
+  {(bigint) 263 /* 3: HashCollection < ArrayCapable: superclass typecheck marker */},
+  {(bigint) 2043 /* 4: HashCollection < HashCollection: superclass typecheck marker */},
+  {(bigint) 251 /* 5: HashCollection < Collection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48231,14 +18858,9 @@ const classtable_elt_t VFT_ReduceAction7[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction7 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: HashCollection < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48246,7 +18868,6 @@ const classtable_elt_t VFT_ReduceAction7[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48254,41 +18875,145 @@ const classtable_elt_t VFT_ReduceAction7[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction7 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction7___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction7 < ReduceAction7: superclass init_table position */},
-  {(bigint) parser___ReduceAction7___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: HashCollection < ArrayCapable: superclass init_table position */},
+  {(bigint) array___ArrayCapable___calloc_array},
+  {(bigint) 3 /* 47: HashCollection < HashCollection: superclass init_table position */},
+  {(bigint) hash_collection___HashCollection___first_item},
+  {(bigint) hash_collection___HashCollection___index_at},
+  {(bigint) hash_collection___HashCollection___node_at},
+  {(bigint) hash_collection___HashCollection___node_at_idx},
+  {(bigint) hash_collection___HashCollection___store},
+  {(bigint) hash_collection___HashCollection___remove_node},
+  {(bigint) hash_collection___HashCollection___raz},
+  {(bigint) hash_collection___HashCollection___enlarge},
+  {(bigint) hash_collection___HashCollection___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 0 /* 62: HashCollection < Collection: superclass init_table position */},
+  {(bigint) abstract_collection___Collection___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) abstract_collection___Collection___is_empty},
+  {(bigint) hash_collection___HashCollection___length},
+  {(bigint) abstract_collection___Collection___has},
+  {(bigint) abstract_collection___Collection___has_only},
+  {(bigint) abstract_collection___Collection___count},
+  {(bigint) abstract_collection___Collection___first},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction7(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute HashCollection::_array */
+/* 3: Attribute HashCollection::_capacity */
+/* 4: Attribute HashCollection::_length */
+/* 5: Attribute HashCollection::_first_item */
+/* 6: Attribute HashCollection::_last_item */
+/* 7: Attribute HashCollection::_last_accessed_key */
+/* 8: Attribute HashCollection::_last_accessed_node */
+void INIT_ATTRIBUTES__HashCollection(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__HashCollection;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//collection//hash_collection.nit:25 */
+  REGB0 = TAG_Int(0);
+  ATTR_hash_collection___HashCollection____length(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//collection//hash_collection.nit:27 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____last_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:30 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:33 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_HashCollection(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction7;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction7(val_t self, char *from) {
-}
-val_t NEW_ReduceAction7_parser___ReduceAction7___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction7();
-  parser___ReduceAction7___init(self, init_table);
-  CHECKNEW_ReduceAction7(self, "parser::ReduceAction7::init for ReduceAction7");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_HashCollection;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_HashCollection(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_HashCollection;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction8[48] = {
-  {(bigint) 319 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction8 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction8 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 319 /* 3: ReduceAction8 < ReduceAction8: superclass typecheck marker */},
+val_t NEW_HashCollection_hash_collection___HashCollection___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_HashCollection_hash_collection___HashCollection___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_HashCollection();
+  INIT_ATTRIBUTES__HashCollection(fra.me.REG[0]);
+  hash_collection___HashCollection___init(fra.me.REG[0], init_table);
+  CHECKNEW_HashCollection(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_HashNode[51] = {
+  {(bigint) 227 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: HashNode < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 3: HashNode < HashNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48301,14 +19026,10 @@ const classtable_elt_t VFT_ReduceAction8[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction8 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: HashNode < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48316,7 +19037,6 @@ const classtable_elt_t VFT_ReduceAction8[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48324,61 +19044,127 @@ const classtable_elt_t VFT_ReduceAction8[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction8 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction8___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction8 < ReduceAction8: superclass init_table position */},
-  {(bigint) parser___ReduceAction8___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: HashNode < HashNode: superclass init_table position */},
+  {(bigint) hash_collection___HashNode___next_item},
+  {(bigint) hash_collection___HashNode___next_item__eq},
+  {(bigint) hash_collection___HashNode___prev_item},
+  {(bigint) hash_collection___HashNode___prev_item__eq},
+  {(bigint) hash_collection___HashNode___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction8(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction8;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction8(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute HashNode::_key */
+/* 3: Attribute HashNode::_next_item */
+/* 4: Attribute HashNode::_prev_item */
+/* 5: Attribute HashNode::_prev_in_bucklet */
+/* 6: Attribute HashNode::_next_in_bucklet */
+void INIT_ATTRIBUTES__HashNode(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__HashNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:190 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:191 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:192 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____prev_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:193 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction8_parser___ReduceAction8___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction8();
-  parser___ReduceAction8___init(self, init_table);
-  CHECKNEW_ReduceAction8(self, "parser::ReduceAction8::init for ReduceAction8");
-  return self;
+val_t NEW_HashNode(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_HashNode;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_HashNode(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_HashNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_key", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction9[48] = {
-  {(bigint) 275 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction9 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction9 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 275 /* 3: ReduceAction9 < ReduceAction9: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_HashNode_hash_collection___HashNode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 194;
+  fra.me.meth = LOCATE_NEW_HashNode_hash_collection___HashNode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:194 */
+  fra.me.REG[1] = NEW_HashNode();
+  INIT_ATTRIBUTES__HashNode(fra.me.REG[1]);
+  hash_collection___HashNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_HashNode(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_HashMap[89] = {
+  {(bigint) 2963 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: HashMap < Object: superclass typecheck marker */},
+  {(bigint) 263 /* 3: HashMap < ArrayCapable: superclass typecheck marker */},
+  {(bigint) 2043 /* 4: HashMap < HashCollection: superclass typecheck marker */},
+  {(bigint) 251 /* 5: HashMap < Collection: superclass typecheck marker */},
+  {(bigint) 327 /* 6: HashMap < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 1915 /* 7: HashMap < MapRead: superclass typecheck marker */},
+  {(bigint) 2963 /* 8: HashMap < HashMap: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2587 /* 10: HashMap < Map: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction9 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 4 /* 19: HashMap < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48386,7 +19172,6 @@ const classtable_elt_t VFT_ReduceAction9[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48394,41 +19179,165 @@ const classtable_elt_t VFT_ReduceAction9[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction9 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction9___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction9 < ReduceAction9: superclass init_table position */},
-  {(bigint) parser___ReduceAction9___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 5 /* 45: HashMap < ArrayCapable: superclass init_table position */},
+  {(bigint) array___ArrayCapable___calloc_array},
+  {(bigint) 6 /* 47: HashMap < HashCollection: superclass init_table position */},
+  {(bigint) hash_collection___HashCollection___first_item},
+  {(bigint) hash_collection___HashCollection___index_at},
+  {(bigint) hash_collection___HashCollection___node_at},
+  {(bigint) hash_collection___HashCollection___node_at_idx},
+  {(bigint) hash_collection___HashCollection___store},
+  {(bigint) hash_collection___HashCollection___remove_node},
+  {(bigint) hash_collection___HashCollection___raz},
+  {(bigint) hash_collection___HashCollection___enlarge},
+  {(bigint) hash_collection___HashCollection___init},
+  {(bigint) 7 /* 57: HashMap < HashMap: superclass init_table position */},
+  {(bigint) hash_collection___HashMap___init},
+  {0} /* Class Hole :( */,
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 3 /* 62: HashMap < Collection: superclass init_table position */},
+  {(bigint) hash_collection___HashMap___iterator},
+  {(bigint) hash_collection___HashMap___iterate},
+  {(bigint) hash_collection___HashMap___is_empty},
+  {(bigint) hash_collection___HashCollection___length},
+  {(bigint) hash_collection___HashMap___has},
+  {(bigint) hash_collection___HashMap___has_only},
+  {(bigint) hash_collection___HashMap___count},
+  {(bigint) hash_collection___HashMap___first},
+  {(bigint) 1 /* 71: HashMap < RemovableCollection: superclass init_table position */},
+  {(bigint) hash_collection___HashMap___clear},
+  {(bigint) hash_collection___HashMap___remove},
+  {(bigint) abstract_collection___RemovableCollection___remove_all},
+  {(bigint) 2 /* 75: HashMap < MapRead: superclass init_table position */},
+  {(bigint) hash_collection___HashMap_____bra},
+  {(bigint) hash_collection___HashMap___has_key},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) string___Map___map_join},
+  {(bigint) 0 /* 85: HashMap < Map: superclass init_table position */},
+  {(bigint) hash_collection___HashMap_____braeq},
+  {(bigint) hash_collection___HashMap___remove_at},
+  {(bigint) abstract_collection___Map___recover_with},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction9(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute HashMap::_array */
+/* 3: Attribute HashMap::_capacity */
+/* 4: Attribute HashMap::_length */
+/* 5: Attribute HashMap::_first_item */
+/* 6: Attribute HashMap::_last_item */
+/* 7: Attribute HashMap::_last_accessed_key */
+/* 8: Attribute HashMap::_last_accessed_node */
+void INIT_ATTRIBUTES__HashMap(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__HashMap;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//collection//hash_collection.nit:25 */
+  REGB0 = TAG_Int(0);
+  ATTR_hash_collection___HashCollection____length(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//collection//hash_collection.nit:27 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____last_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:30 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:33 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_HashMap(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction9;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction9(val_t self, char *from) {
-}
-val_t NEW_ReduceAction9_parser___ReduceAction9___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction9();
-  parser___ReduceAction9___init(self, init_table);
-  CHECKNEW_ReduceAction9(self, "parser::ReduceAction9::init for ReduceAction9");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_HashMap;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_HashMap(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_HashMap;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction10[48] = {
-  {(bigint) 3175 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction10 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction10 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3175 /* 3: ReduceAction10 < ReduceAction10: superclass typecheck marker */},
+val_t NEW_HashMap_hash_collection___HashMap___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 295;
+  fra.me.meth = LOCATE_NEW_HashMap_hash_collection___HashMap___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//collection//hash_collection.nit:295 */
+  fra.me.REG[0] = NEW_HashMap();
+  INIT_ATTRIBUTES__HashMap(fra.me.REG[0]);
+  hash_collection___HashMap___init(fra.me.REG[0], init_table);
+  CHECKNEW_HashMap(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_HashMapNode[53] = {
+  {(bigint) 2039 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: HashMapNode < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 3: HashMapNode < HashNode: superclass typecheck marker */},
+  {(bigint) 2039 /* 4: HashMapNode < HashMapNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48441,14 +19350,9 @@ const classtable_elt_t VFT_ReduceAction10[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction10 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: HashMapNode < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48456,7 +19360,6 @@ const classtable_elt_t VFT_ReduceAction10[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48464,42 +19367,118 @@ const classtable_elt_t VFT_ReduceAction10[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction10 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction10___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction10 < ReduceAction10: superclass init_table position */},
-  {(bigint) parser___ReduceAction10___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: HashMapNode < HashNode: superclass init_table position */},
+  {(bigint) hash_collection___HashNode___next_item},
+  {(bigint) hash_collection___HashNode___next_item__eq},
+  {(bigint) hash_collection___HashNode___prev_item},
+  {(bigint) hash_collection___HashNode___prev_item__eq},
+  {(bigint) hash_collection___HashNode___init},
+  {(bigint) 2 /* 51: HashMapNode < HashMapNode: superclass init_table position */},
+  {(bigint) hash_collection___HashMapNode___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction10(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction10;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction10(val_t self, char *from) {
-}
-val_t NEW_ReduceAction10_parser___ReduceAction10___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction10();
-  parser___ReduceAction10___init(self, init_table);
-  CHECKNEW_ReduceAction10(self, "parser::ReduceAction10::init for ReduceAction10");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute HashMapNode::_key */
+/* 3: Attribute HashMapNode::_next_item */
+/* 4: Attribute HashMapNode::_prev_item */
+/* 5: Attribute HashMapNode::_prev_in_bucklet */
+/* 6: Attribute HashMapNode::_next_in_bucklet */
+/* 7: Attribute HashMapNode::_value */
+void INIT_ATTRIBUTES__HashMapNode(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__HashMapNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:190 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:191 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:192 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____prev_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:193 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction11[48] = {
-  {(bigint) 3131 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction11 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction11 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3131 /* 3: ReduceAction11 < ReduceAction11: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_HashMapNode(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_HashMapNode;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_HashMapNode(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_HashMapNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_key", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_HashMapNode_hash_collection___HashMapNode___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 308;
+  fra.me.meth = LOCATE_NEW_HashMapNode_hash_collection___HashMapNode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:308 */
+  fra.me.REG[2] = NEW_HashMapNode();
+  INIT_ATTRIBUTES__HashMapNode(fra.me.REG[2]);
+  hash_collection___HashMapNode___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_HashMapNode(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_HashMapIterator[54] = {
+  {(bigint) 2735 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: HashMapIterator < Object: superclass typecheck marker */},
+  {(bigint) 175 /* 3: HashMapIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 1919 /* 4: HashMapIterator < MapIterator: superclass typecheck marker */},
+  {(bigint) 2735 /* 5: HashMapIterator < HashMapIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48511,14 +19490,9 @@ const classtable_elt_t VFT_ReduceAction11[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction11 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: HashMapIterator < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48526,7 +19500,6 @@ const classtable_elt_t VFT_ReduceAction11[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48534,46 +19507,102 @@ const classtable_elt_t VFT_ReduceAction11[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction11 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction11___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction11 < ReduceAction11: superclass init_table position */},
-  {(bigint) parser___ReduceAction11___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction11(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) array___Iterator___to_a},
+  {(bigint) 1 /* 46: HashMapIterator < Iterator: superclass init_table position */},
+  {(bigint) hash_collection___HashMapIterator___item},
+  {(bigint) hash_collection___HashMapIterator___next},
+  {(bigint) hash_collection___HashMapIterator___is_ok},
+  {(bigint) 0 /* 50: HashMapIterator < MapIterator: superclass init_table position */},
+  {(bigint) hash_collection___HashMapIterator___key},
+  {(bigint) 3 /* 52: HashMapIterator < HashMapIterator: superclass init_table position */},
+  {(bigint) hash_collection___HashMapIterator___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute HashMapIterator::_map */
+/* 3: Attribute HashMapIterator::_node */
+void INIT_ATTRIBUTES__HashMapIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__HashMapIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_HashMapIterator(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction11;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction11(val_t self, char *from) {
-}
-val_t NEW_ReduceAction11_parser___ReduceAction11___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction11();
-  parser___ReduceAction11___init(self, init_table);
-  CHECKNEW_ReduceAction11(self, "parser::ReduceAction11::init for ReduceAction11");
-  return self;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_HashMapIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_HashMapIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_HashMapIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_hash_collection___HashMapIterator____map(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_map", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction12[48] = {
-  {(bigint) 3087 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction12 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction12 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3087 /* 3: ReduceAction12 < ReduceAction12: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_HashMapIterator_hash_collection___HashMapIterator___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 349;
+  fra.me.meth = LOCATE_NEW_HashMapIterator_hash_collection___HashMapIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:349 */
+  fra.me.REG[1] = NEW_HashMapIterator();
+  INIT_ATTRIBUTES__HashMapIterator(fra.me.REG[1]);
+  hash_collection___HashMapIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_HashMapIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_HashSet[81] = {
+  {(bigint) 3279 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: HashSet < Object: superclass typecheck marker */},
+  {(bigint) 263 /* 3: HashSet < ArrayCapable: superclass typecheck marker */},
+  {(bigint) 2043 /* 4: HashSet < HashCollection: superclass typecheck marker */},
+  {(bigint) 251 /* 5: HashSet < Collection: superclass typecheck marker */},
+  {(bigint) 327 /* 6: HashSet < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 2911 /* 7: HashSet < Set: superclass typecheck marker */},
+  {(bigint) 2543 /* 8: HashSet < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 3279 /* 9: HashSet < HashSet: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48581,14 +19610,9 @@ const classtable_elt_t VFT_ReduceAction12[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction12 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 4 /* 19: HashSet < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48596,7 +19620,6 @@ const classtable_elt_t VFT_ReduceAction12[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48604,41 +19627,157 @@ const classtable_elt_t VFT_ReduceAction12[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction12 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction12___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction12 < ReduceAction12: superclass init_table position */},
-  {(bigint) parser___ReduceAction12___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 5 /* 45: HashSet < ArrayCapable: superclass init_table position */},
+  {(bigint) array___ArrayCapable___calloc_array},
+  {(bigint) 6 /* 47: HashSet < HashCollection: superclass init_table position */},
+  {(bigint) hash_collection___HashCollection___first_item},
+  {(bigint) hash_collection___HashCollection___index_at},
+  {(bigint) hash_collection___HashCollection___node_at},
+  {(bigint) hash_collection___HashCollection___node_at_idx},
+  {(bigint) hash_collection___HashCollection___store},
+  {(bigint) hash_collection___HashCollection___remove_node},
+  {(bigint) hash_collection___HashCollection___raz},
+  {(bigint) hash_collection___HashCollection___enlarge},
+  {(bigint) hash_collection___HashCollection___init},
+  {(bigint) 0 /* 57: HashSet < Set: superclass init_table position */},
+  {(bigint) 7 /* 58: HashSet < HashSet: superclass init_table position */},
+  {(bigint) hash_collection___HashSet___init},
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 3 /* 62: HashSet < Collection: superclass init_table position */},
+  {(bigint) hash_collection___HashSet___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) hash_collection___HashSet___is_empty},
+  {(bigint) hash_collection___HashCollection___length},
+  {(bigint) hash_collection___HashSet___has},
+  {(bigint) abstract_collection___Set___has_only},
+  {(bigint) abstract_collection___Set___count},
+  {(bigint) hash_collection___HashSet___first},
+  {(bigint) 2 /* 71: HashSet < RemovableCollection: superclass init_table position */},
+  {(bigint) hash_collection___HashSet___clear},
+  {(bigint) hash_collection___HashSet___remove},
+  {(bigint) abstract_collection___Set___remove_all},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 78: HashSet < SimpleCollection: superclass init_table position */},
+  {(bigint) hash_collection___HashSet___add},
+  {(bigint) abstract_collection___SimpleCollection___add_all},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction12(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute HashSet::_array */
+/* 3: Attribute HashSet::_capacity */
+/* 4: Attribute HashSet::_length */
+/* 5: Attribute HashSet::_first_item */
+/* 6: Attribute HashSet::_last_item */
+/* 7: Attribute HashSet::_last_accessed_key */
+/* 8: Attribute HashSet::_last_accessed_node */
+void INIT_ATTRIBUTES__HashSet(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__HashSet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//collection//hash_collection.nit:25 */
+  REGB0 = TAG_Int(0);
+  ATTR_hash_collection___HashCollection____length(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//collection//hash_collection.nit:27 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____first_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____last_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:30 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:33 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_HashSet(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction12;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction12(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_HashSet;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_HashSet(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_HashSet;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction12_parser___ReduceAction12___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction12();
-  parser___ReduceAction12___init(self, init_table);
-  CHECKNEW_ReduceAction12(self, "parser::ReduceAction12::init for ReduceAction12");
-  return self;
+val_t NEW_HashSet_hash_collection___HashSet___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 390;
+  fra.me.meth = LOCATE_NEW_HashSet_hash_collection___HashSet___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//collection//hash_collection.nit:390 */
+  fra.me.REG[0] = NEW_HashSet();
+  INIT_ATTRIBUTES__HashSet(fra.me.REG[0]);
+  hash_collection___HashSet___init(fra.me.REG[0], init_table);
+  CHECKNEW_HashSet(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction13[48] = {
-  {(bigint) 3043 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction13 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction13 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3043 /* 3: ReduceAction13 < ReduceAction13: superclass typecheck marker */},
+const classtable_elt_t VFT_HashSetNode[53] = {
+  {(bigint) 2031 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: HashSetNode < Object: superclass typecheck marker */},
+  {(bigint) 227 /* 3: HashSetNode < HashNode: superclass typecheck marker */},
+  {(bigint) 2031 /* 4: HashSetNode < HashSetNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48651,14 +19790,9 @@ const classtable_elt_t VFT_ReduceAction13[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction13 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: HashSetNode < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48666,7 +19800,6 @@ const classtable_elt_t VFT_ReduceAction13[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48674,41 +19807,114 @@ const classtable_elt_t VFT_ReduceAction13[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction13 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction13___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction13 < ReduceAction13: superclass init_table position */},
-  {(bigint) parser___ReduceAction13___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: HashSetNode < HashNode: superclass init_table position */},
+  {(bigint) hash_collection___HashNode___next_item},
+  {(bigint) hash_collection___HashNode___next_item__eq},
+  {(bigint) hash_collection___HashNode___prev_item},
+  {(bigint) hash_collection___HashNode___prev_item__eq},
+  {(bigint) hash_collection___HashNode___init},
+  {(bigint) 2 /* 51: HashSetNode < HashSetNode: superclass init_table position */},
+  {(bigint) hash_collection___HashSetNode___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction13(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction13;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction13(val_t self, char *from) {
-}
-val_t NEW_ReduceAction13_parser___ReduceAction13___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction13();
-  parser___ReduceAction13___init(self, init_table);
-  CHECKNEW_ReduceAction13(self, "parser::ReduceAction13::init for ReduceAction13");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute HashSetNode::_key */
+/* 3: Attribute HashSetNode::_next_item */
+/* 4: Attribute HashSetNode::_prev_item */
+/* 5: Attribute HashSetNode::_prev_in_bucklet */
+/* 6: Attribute HashSetNode::_next_in_bucklet */
+void INIT_ATTRIBUTES__HashSetNode(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__HashSetNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:190 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:191 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:192 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____prev_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:193 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction14[48] = {
-  {(bigint) 2999 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction14 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction14 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2999 /* 3: ReduceAction14 < ReduceAction14: superclass typecheck marker */},
+val_t NEW_HashSetNode(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_HashSetNode;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_HashSetNode(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_HashSetNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_key", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_HashSetNode_hash_collection___HashSetNode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 402;
+  fra.me.meth = LOCATE_NEW_HashSetNode_hash_collection___HashSetNode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:402 */
+  fra.me.REG[1] = NEW_HashSetNode();
+  INIT_ATTRIBUTES__HashSetNode(fra.me.REG[1]);
+  hash_collection___HashSetNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_HashSetNode(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_HashSetIterator[52] = {
+  {(bigint) 2035 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: HashSetIterator < Object: superclass typecheck marker */},
+  {(bigint) 175 /* 3: HashSetIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 2035 /* 4: HashSetIterator < HashSetIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48721,14 +19927,9 @@ const classtable_elt_t VFT_ReduceAction14[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction14 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: HashSetIterator < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48736,7 +19937,6 @@ const classtable_elt_t VFT_ReduceAction14[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48744,69 +19944,117 @@ const classtable_elt_t VFT_ReduceAction14[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction14 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction14___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction14 < ReduceAction14: superclass init_table position */},
-  {(bigint) parser___ReduceAction14___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction14(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) array___Iterator___to_a},
+  {(bigint) 0 /* 46: HashSetIterator < Iterator: superclass init_table position */},
+  {(bigint) hash_collection___HashSetIterator___item},
+  {(bigint) hash_collection___HashSetIterator___next},
+  {(bigint) hash_collection___HashSetIterator___is_ok},
+  {(bigint) 2 /* 50: HashSetIterator < HashSetIterator: superclass init_table position */},
+  {(bigint) hash_collection___HashSetIterator___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute HashSetIterator::_set */
+/* 3: Attribute HashSetIterator::_node */
+void INIT_ATTRIBUTES__HashSetIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__HashSetIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_HashSetIterator(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction14;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction14(val_t self, char *from) {
-}
-val_t NEW_ReduceAction14_parser___ReduceAction14___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction14();
-  parser___ReduceAction14___init(self, init_table);
-  CHECKNEW_ReduceAction14(self, "parser::ReduceAction14::init for ReduceAction14");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction15[48] = {
-  {(bigint) 2955 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction15 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction15 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2955 /* 3: ReduceAction15 < ReduceAction15: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_HashSetIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_HashSetIterator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_HashSetIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_hash_collection___HashSetIterator____set(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_set", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_HashSetIterator_hash_collection___HashSetIterator___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 430;
+  fra.me.meth = LOCATE_NEW_HashSetIterator_hash_collection___HashSetIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:430 */
+  fra.me.REG[1] = NEW_HashSetIterator();
+  INIT_ATTRIBUTES__HashSetIterator(fra.me.REG[1]);
+  hash_collection___HashSetIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_HashSetIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_String[136] = {
+  {(bigint) 3447 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: String < Object: superclass typecheck marker */},
+  {(bigint) 99 /* 3: String < Pattern: superclass typecheck marker */},
+  {(bigint) 243 /* 4: String < Comparable: superclass typecheck marker */},
+  {(bigint) 251 /* 5: String < Collection: superclass typecheck marker */},
+  {(bigint) 3447 /* 6: String < String: superclass typecheck marker */},
+  {(bigint) 1915 /* 7: String < MapRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2547 /* 9: String < SequenceRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 2979 /* 12: String < AbstractArrayRead: superclass typecheck marker */},
+  {(bigint) 3291 /* 13: String < AbstractString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction15 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: String < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
+  {(bigint) string___String_____eqeq},
   {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
+  {(bigint) string___AbstractString___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48814,45 +20062,56 @@ const classtable_elt_t VFT_ReduceAction15[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___String___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) string___String___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction15 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction15___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction15 < ReduceAction15: superclass init_table position */},
-  {(bigint) parser___ReduceAction15___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction15(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction15;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction15(val_t self, char *from) {
-}
-val_t NEW_ReduceAction15_parser___ReduceAction15___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction15();
-  parser___ReduceAction15___init(self, init_table);
-  CHECKNEW_ReduceAction15(self, "parser::ReduceAction15::init for ReduceAction15");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction16[48] = {
-  {(bigint) 2911 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction16 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction16 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2911 /* 3: ReduceAction16 < ReduceAction16: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 7 /* 45: String < Pattern: superclass init_table position */},
+  {(bigint) string_search___String___search_index_in},
+  {(bigint) string_search___String___search_in},
+  {(bigint) string_search___Pattern___search_all_in},
+  {(bigint) string_search___Pattern___split_in},
+  {(bigint) string_search___Pattern___init},
+  {(bigint) 0 /* 51: String < Comparable: superclass init_table position */},
+  {(bigint) string___String_____l},
+  {(bigint) kernel___Comparable_____leq},
+  {(bigint) kernel___Comparable_____geq},
+  {(bigint) kernel___Comparable_____g},
+  {(bigint) kernel___Comparable_____leqg},
+  {(bigint) kernel___Comparable___is_between},
+  {(bigint) kernel___Comparable___max},
+  {(bigint) kernel___Comparable___min},
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 5 /* 62: String < Collection: superclass init_table position */},
+  {(bigint) array___AbstractArrayRead___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) array___AbstractArrayRead___is_empty},
+  {(bigint) array___AbstractArrayRead___length},
+  {(bigint) array___AbstractArrayRead___has},
+  {(bigint) array___AbstractArrayRead___has_only},
+  {(bigint) array___AbstractArrayRead___count},
+  {(bigint) abstract_collection___SequenceRead___first},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 4 /* 75: String < MapRead: superclass init_table position */},
+  {(bigint) string___AbstractString_____bra},
+  {(bigint) array___AbstractArrayRead___has_key},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 3 /* 81: String < SequenceRead: superclass init_table position */},
+  {(bigint) abstract_collection___SequenceRead___last},
+  {(bigint) array___AbstractArrayRead___index_of},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48861,22 +20120,177 @@ const classtable_elt_t VFT_ReduceAction16[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction16 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 6 /* 97: String < AbstractArrayRead: superclass init_table position */},
+  {(bigint) array___AbstractArrayRead___last_index_of},
+  {(bigint) array___AbstractArrayRead___index_of_from},
+  {(bigint) array___AbstractArrayRead___last_index_of_from},
+  {(bigint) array___AbstractArrayRead___reversed},
+  {(bigint) array___AbstractArrayRead___copy_to},
+  {(bigint) array___AbstractArrayRead___init},
+  {(bigint) 2 /* 104: String < AbstractString: superclass init_table position */},
+  {(bigint) string___AbstractString___items},
+  {(bigint) string___AbstractString___substring},
+  {(bigint) string___AbstractString___substring_from},
+  {(bigint) string___AbstractString___has_substring},
+  {(bigint) string___AbstractString___has_prefix},
+  {(bigint) string___AbstractString___has_suffix},
+  {(bigint) string___AbstractString___to_i},
+  {(bigint) string___AbstractString___to_hex},
+  {(bigint) string___AbstractString___a_to},
+  {(bigint) string___AbstractString___to_upper},
+  {(bigint) string___AbstractString___to_lower},
+  {(bigint) symbol___String___to_symbol},
+  {(bigint) 8 /* 117: String < String: superclass init_table position */},
+  {(bigint) string___String___with_native},
+  {(bigint) string___String___from_cstring},
+  {(bigint) string___String___to_cstring},
+  {(bigint) string___String_____plus},
+  {(bigint) string___String_____star},
+  {(bigint) file___String___file_exists},
+  {(bigint) file___String___file_stat},
+  {(bigint) file___String___file_delete},
+  {(bigint) file___String___strip_extension},
+  {(bigint) file___String___basename},
+  {(bigint) file___String___dirname},
+  {(bigint) file___String___file_path},
+  {(bigint) file___String___mkdir},
+  {(bigint) string_search___String___search},
+  {(bigint) string_search___String___search_from},
+  {(bigint) string_search___String___search_all},
+  {(bigint) string_search___String___split_with},
+  {(bigint) string_search___String___split},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute String::_length */
+/* 3: Attribute String::_items */
+void INIT_ATTRIBUTES__String(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__String;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_String(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_String;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_String(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_String;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_String_string___String___with_native(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 167;
+  fra.me.meth = LOCATE_NEW_String_string___String___with_native;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//string.nit:167 */
+  fra.me.REG[1] = NEW_String();
+  INIT_ATTRIBUTES__String(fra.me.REG[1]);
+  string___String___with_native(fra.me.REG[1], fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_String(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_String_string___String___from_cstring(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 175;
+  fra.me.meth = LOCATE_NEW_String_string___String___from_cstring;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//string.nit:175 */
+  fra.me.REG[1] = NEW_String();
+  INIT_ATTRIBUTES__String(fra.me.REG[1]);
+  string___String___from_cstring(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_String(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_Buffer[122] = {
+  {(bigint) 3451 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Buffer < Object: superclass typecheck marker */},
+  {(bigint) 35 /* 3: Buffer < StringCapable: superclass typecheck marker */},
+  {(bigint) 243 /* 4: Buffer < Comparable: superclass typecheck marker */},
+  {(bigint) 251 /* 5: Buffer < Collection: superclass typecheck marker */},
+  {(bigint) 327 /* 6: Buffer < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 1915 /* 7: Buffer < MapRead: superclass typecheck marker */},
+  {(bigint) 2543 /* 8: Buffer < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 2547 /* 9: Buffer < SequenceRead: superclass typecheck marker */},
+  {(bigint) 2587 /* 10: Buffer < Map: superclass typecheck marker */},
+  {(bigint) 2915 /* 11: Buffer < Sequence: superclass typecheck marker */},
+  {(bigint) 2979 /* 12: Buffer < AbstractArrayRead: superclass typecheck marker */},
+  {(bigint) 3291 /* 13: Buffer < AbstractString: superclass typecheck marker */},
+  {(bigint) 3295 /* 14: Buffer < AbstractArray: superclass typecheck marker */},
+  {(bigint) 3451 /* 15: Buffer < Buffer: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 4 /* 19: Buffer < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
+  {(bigint) string___Buffer_____eqeq},
   {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
+  {(bigint) string___AbstractString___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48884,41 +20298,221 @@ const classtable_elt_t VFT_ReduceAction16[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Buffer___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction16 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction16___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction16 < ReduceAction16: superclass init_table position */},
-  {(bigint) parser___ReduceAction16___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 7 /* 45: Buffer < StringCapable: superclass init_table position */},
+  {(bigint) string___StringCapable___calloc_string},
+  {(bigint) string___StringCapable___init},
+  {(bigint) 12 /* 48: Buffer < AbstractArray: superclass init_table position */},
+  {(bigint) string___Buffer___enlarge},
+  {(bigint) array___AbstractArray___insert},
+  {(bigint) 6 /* 51: Buffer < Comparable: superclass init_table position */},
+  {(bigint) string___Buffer_____l},
+  {(bigint) kernel___Comparable_____leq},
+  {(bigint) kernel___Comparable_____geq},
+  {(bigint) kernel___Comparable_____g},
+  {(bigint) kernel___Comparable_____leqg},
+  {(bigint) kernel___Comparable___is_between},
+  {(bigint) kernel___Comparable___max},
+  {(bigint) kernel___Comparable___min},
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 3 /* 62: Buffer < Collection: superclass init_table position */},
+  {(bigint) array___AbstractArrayRead___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) array___AbstractArrayRead___is_empty},
+  {(bigint) array___AbstractArrayRead___length},
+  {(bigint) array___AbstractArrayRead___has},
+  {(bigint) array___AbstractArrayRead___has_only},
+  {(bigint) array___AbstractArrayRead___count},
+  {(bigint) abstract_collection___SequenceRead___first},
+  {(bigint) 11 /* 71: Buffer < RemovableCollection: superclass init_table position */},
+  {(bigint) array___AbstractArray___clear},
+  {(bigint) array___AbstractArray___remove},
+  {(bigint) array___AbstractArray___remove_all},
+  {(bigint) 2 /* 75: Buffer < MapRead: superclass init_table position */},
+  {(bigint) string___AbstractString_____bra},
+  {(bigint) array___AbstractArrayRead___has_key},
+  {(bigint) 10 /* 78: Buffer < SimpleCollection: superclass init_table position */},
+  {(bigint) string___Buffer___add},
+  {(bigint) abstract_collection___SimpleCollection___add_all},
+  {(bigint) 1 /* 81: Buffer < SequenceRead: superclass init_table position */},
+  {(bigint) abstract_collection___SequenceRead___last},
+  {(bigint) array___AbstractArrayRead___index_of},
+  {(bigint) string___Map___map_join},
+  {(bigint) 9 /* 85: Buffer < Map: superclass init_table position */},
+  {(bigint) string___Buffer_____braeq},
+  {(bigint) array___AbstractArray___remove_at},
+  {(bigint) abstract_collection___Map___recover_with},
+  {(bigint) 8 /* 89: Buffer < Sequence: superclass init_table position */},
+  {(bigint) abstract_collection___Sequence___first__eq},
+  {(bigint) abstract_collection___Sequence___last__eq},
+  {(bigint) array___AbstractArray___push},
+  {(bigint) string___Buffer___append},
+  {(bigint) array___AbstractArray___pop},
+  {(bigint) array___AbstractArray___unshift},
+  {(bigint) array___AbstractArray___shift},
+  {(bigint) 5 /* 97: Buffer < AbstractArrayRead: superclass init_table position */},
+  {(bigint) array___AbstractArrayRead___last_index_of},
+  {(bigint) array___AbstractArrayRead___index_of_from},
+  {(bigint) array___AbstractArrayRead___last_index_of_from},
+  {(bigint) array___AbstractArrayRead___reversed},
+  {(bigint) array___AbstractArrayRead___copy_to},
+  {(bigint) array___AbstractArrayRead___init},
+  {(bigint) 0 /* 104: Buffer < AbstractString: superclass init_table position */},
+  {(bigint) string___AbstractString___items},
+  {(bigint) string___AbstractString___substring},
+  {(bigint) string___AbstractString___substring_from},
+  {(bigint) string___AbstractString___has_substring},
+  {(bigint) string___AbstractString___has_prefix},
+  {(bigint) string___AbstractString___has_suffix},
+  {(bigint) string___AbstractString___to_i},
+  {(bigint) string___AbstractString___to_hex},
+  {(bigint) string___AbstractString___a_to},
+  {(bigint) string___AbstractString___to_upper},
+  {(bigint) string___AbstractString___to_lower},
+  {(bigint) 13 /* 116: Buffer < Buffer: superclass init_table position */},
+  {(bigint) abstract_collection___Sequence___append},
+  {(bigint) string___Buffer___init},
+  {(bigint) string___Buffer___from},
+  {(bigint) string___Buffer___with_capacity},
+  {(bigint) string___Buffer___capacity},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction16(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute Buffer::_length */
+/* 3: Attribute Buffer::_items */
+/* 4: Attribute Buffer::_capacity */
+void INIT_ATTRIBUTES__Buffer(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Buffer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Buffer(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction16;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction16(val_t self, char *from) {
-}
-val_t NEW_ReduceAction16_parser___ReduceAction16___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction16();
-  parser___ReduceAction16___init(self, init_table);
-  CHECKNEW_ReduceAction16(self, "parser::ReduceAction16::init for ReduceAction16");
-  return self;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_Buffer;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Buffer(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Buffer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_string___Buffer____capacity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_string___AbstractString____items(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction17[48] = {
-  {(bigint) 2867 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction17 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction17 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2867 /* 3: ReduceAction17 < ReduceAction17: superclass typecheck marker */},
+val_t NEW_Buffer_string___Buffer___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 349;
+  fra.me.meth = LOCATE_NEW_Buffer_string___Buffer___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//string.nit:349 */
+  fra.me.REG[0] = NEW_Buffer();
+  INIT_ATTRIBUTES__Buffer(fra.me.REG[0]);
+  string___Buffer___init(fra.me.REG[0], init_table);
+  CHECKNEW_Buffer(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_Buffer_string___Buffer___from(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 355;
+  fra.me.meth = LOCATE_NEW_Buffer_string___Buffer___from;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//string.nit:355 */
+  fra.me.REG[1] = NEW_Buffer();
+  INIT_ATTRIBUTES__Buffer(fra.me.REG[1]);
+  string___Buffer___from(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_Buffer(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_Buffer_string___Buffer___with_capacity(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 363;
+  fra.me.meth = LOCATE_NEW_Buffer_string___Buffer___with_capacity;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./../lib/standard//string.nit:363 */
+  fra.me.REG[0] = NEW_Buffer();
+  INIT_ATTRIBUTES__Buffer(fra.me.REG[0]);
+  string___Buffer___with_capacity(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_Buffer(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_NativeString[58] = {
+  {(bigint) -5 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: NativeString < Object: superclass typecheck marker */},
+  {(bigint) -5 /* 3: NativeString < NativeString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48931,14 +20525,10 @@ const classtable_elt_t VFT_ReduceAction17[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction17 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: NativeString < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -48946,7 +20536,6 @@ const classtable_elt_t VFT_ReduceAction17[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -48954,41 +20543,46 @@ const classtable_elt_t VFT_ReduceAction17[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction17 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction17___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction17 < ReduceAction17: superclass init_table position */},
-  {(bigint) parser___ReduceAction17___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) environ___NativeString___get_environ},
+  {(bigint) 1 /* 46: NativeString < NativeString: superclass init_table position */},
+  {(bigint) string___NativeString_____bra},
+  {(bigint) string___NativeString_____braeq},
+  {(bigint) string___NativeString___copy_to},
+  {(bigint) string___NativeString___cstring_length},
+  {(bigint) string___NativeString___atoi},
+  {(bigint) string___NativeString___init},
+  {(bigint) file___NativeString___file_exists},
+  {(bigint) file___NativeString___file_stat},
+  {(bigint) file___NativeString___file_mkdir},
+  {(bigint) file___NativeString___file_delete},
+  {(bigint) exec___NativeString___system},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction17(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction17;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction17(val_t self, char *from) {
-}
-val_t NEW_ReduceAction17_parser___ReduceAction17___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction17();
-  parser___ReduceAction17___init(self, init_table);
-  CHECKNEW_ReduceAction17(self, "parser::ReduceAction17::init for ReduceAction17");
-  return self;
+/* 1: Object_id */
+val_t BOX_NativeString(char * val) {
+  struct TBOX_NativeString *box = (struct TBOX_NativeString*)alloc(sizeof(struct TBOX_NativeString));
+  box->vft = VFT_NativeString;
+  box->val = val;
+  box->object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_ReduceAction18[48] = {
-  {(bigint) 2823 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction18 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction18 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2823 /* 3: ReduceAction18 < ReduceAction18: superclass typecheck marker */},
+const classtable_elt_t VFT_StringCapable[48] = {
+  {(bigint) 35 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: StringCapable < Object: superclass typecheck marker */},
+  {(bigint) 35 /* 3: StringCapable < StringCapable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49001,14 +20595,10 @@ const classtable_elt_t VFT_ReduceAction18[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction18 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: StringCapable < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49016,7 +20606,6 @@ const classtable_elt_t VFT_ReduceAction18[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49024,41 +20613,77 @@ const classtable_elt_t VFT_ReduceAction18[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction18 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction18___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction18 < ReduceAction18: superclass init_table position */},
-  {(bigint) parser___ReduceAction18___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: StringCapable < StringCapable: superclass init_table position */},
+  {(bigint) string___StringCapable___calloc_string},
+  {(bigint) string___StringCapable___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction18(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction18;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+void INIT_ATTRIBUTES__StringCapable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__StringCapable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction18(val_t self, char *from) {
-}
-val_t NEW_ReduceAction18_parser___ReduceAction18___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction18();
-  parser___ReduceAction18___init(self, init_table);
-  CHECKNEW_ReduceAction18(self, "parser::ReduceAction18::init for ReduceAction18");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction19[48] = {
-  {(bigint) 2779 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction19 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction19 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2779 /* 3: ReduceAction19 < ReduceAction19: superclass typecheck marker */},
+val_t NEW_StringCapable(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_StringCapable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_StringCapable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_StringCapable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_StringCapable_string___StringCapable___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_StringCapable_string___StringCapable___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_StringCapable();
+  INIT_ATTRIBUTES__StringCapable(fra.me.REG[0]);
+  string___StringCapable___init(fra.me.REG[0], init_table);
+  CHECKNEW_StringCapable(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_Symbol[48] = {
+  {(bigint) 31 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Symbol < Object: superclass typecheck marker */},
+  {(bigint) 31 /* 3: Symbol < Symbol: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49071,14 +20696,10 @@ const classtable_elt_t VFT_ReduceAction19[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction19 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Symbol < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49086,7 +20707,6 @@ const classtable_elt_t VFT_ReduceAction19[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49094,42 +20714,90 @@ const classtable_elt_t VFT_ReduceAction19[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) symbol___Symbol___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction19 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction19___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction19 < ReduceAction19: superclass init_table position */},
-  {(bigint) parser___ReduceAction19___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) environ___Symbol___environ},
+  {(bigint) 1 /* 46: Symbol < Symbol: superclass init_table position */},
+  {(bigint) symbol___Symbol___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction19(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction19;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute Symbol::_string */
+void INIT_ATTRIBUTES__Symbol(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Symbol;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction19(val_t self, char *from) {
+val_t NEW_Symbol(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_Symbol;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Symbol(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Symbol;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_symbol___Symbol____string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_string", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction19_parser___ReduceAction19___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction19();
-  parser___ReduceAction19___init(self, init_table);
-  CHECKNEW_ReduceAction19(self, "parser::ReduceAction19::init for ReduceAction19");
-  return self;
+val_t NEW_Symbol_symbol___Symbol___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 39;
+  fra.me.meth = LOCATE_NEW_Symbol_symbol___Symbol___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//symbol.nit:39 */
+  fra.me.REG[1] = NEW_Symbol();
+  INIT_ATTRIBUTES__Symbol(fra.me.REG[1]);
+  symbol___Symbol___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_Symbol(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_ReduceAction20[48] = {
-  {(bigint) 2731 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction20 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction20 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2731 /* 3: ReduceAction20 < ReduceAction20: superclass typecheck marker */},
+const classtable_elt_t VFT_IOS[57] = {
+  {(bigint) 191 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IOS < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 191 /* 4: IOS < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49141,14 +20809,10 @@ const classtable_elt_t VFT_ReduceAction20[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction20 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IOS < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49156,7 +20820,6 @@ const classtable_elt_t VFT_ReduceAction20[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49164,43 +20827,89 @@ const classtable_elt_t VFT_ReduceAction20[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction20 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction20___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction20 < ReduceAction20: superclass init_table position */},
-  {(bigint) parser___ReduceAction20___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 54: IOS < IOS: superclass init_table position */},
+  {(bigint) stream___IOS___close},
+  {(bigint) stream___IOS___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction20(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction20;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+void INIT_ATTRIBUTES__IOS(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IOS;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction20(val_t self, char *from) {
-}
-val_t NEW_ReduceAction20_parser___ReduceAction20___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction20();
-  parser___ReduceAction20___init(self, init_table);
-  CHECKNEW_ReduceAction20(self, "parser::ReduceAction20::init for ReduceAction20");
-  return self;
+val_t NEW_IOS(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_IOS;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IOS(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IOS;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IOS_stream___IOS___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_IOS_stream___IOS___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_IOS();
+  INIT_ATTRIBUTES__IOS(fra.me.REG[0]);
+  stream___IOS___init(fra.me.REG[0], init_table);
+  CHECKNEW_IOS(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction21[48] = {
-  {(bigint) 2687 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction21 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction21 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2687 /* 3: ReduceAction21 < ReduceAction21: superclass typecheck marker */},
+const classtable_elt_t VFT_IStream[67] = {
+  {(bigint) 2003 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IStream < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 191 /* 4: IStream < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2003 /* 6: IStream < IStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49211,14 +20920,9 @@ const classtable_elt_t VFT_ReduceAction21[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction21 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IStream < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49226,7 +20930,6 @@ const classtable_elt_t VFT_ReduceAction21[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49234,42 +20937,98 @@ const classtable_elt_t VFT_ReduceAction21[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction21 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction21___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction21 < ReduceAction21: superclass init_table position */},
-  {(bigint) parser___ReduceAction21___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 54: IStream < IOS: superclass init_table position */},
+  {(bigint) stream___IOS___close},
+  {(bigint) stream___IOS___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 60: IStream < IStream: superclass init_table position */},
+  {(bigint) stream___IStream___read_char},
+  {(bigint) stream___IStream___read},
+  {(bigint) stream___IStream___read_line},
+  {(bigint) stream___IStream___read_all},
+  {(bigint) stream___IStream___append_line_to},
+  {(bigint) stream___IStream___eof},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction21(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction21;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction21(val_t self, char *from) {
+/* 1: Object_id */
+void INIT_ATTRIBUTES__IStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction21_parser___ReduceAction21___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction21();
-  parser___ReduceAction21___init(self, init_table);
-  CHECKNEW_ReduceAction21(self, "parser::ReduceAction21::init for ReduceAction21");
-  return self;
+val_t NEW_IStream(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_IStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IStream_stream___IOS___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_IStream_stream___IOS___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_IStream();
+  INIT_ATTRIBUTES__IStream(fra.me.REG[0]);
+  stream___IOS___init(fra.me.REG[0], init_table);
+  CHECKNEW_IStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction22[48] = {
-  {(bigint) 2643 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction22 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction22 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2643 /* 3: ReduceAction22 < ReduceAction22: superclass typecheck marker */},
+const classtable_elt_t VFT_OStream[60] = {
+  {(bigint) 1891 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OStream < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 191 /* 4: OStream < IOS: superclass typecheck marker */},
+  {(bigint) 1891 /* 5: OStream < OStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49281,14 +21040,9 @@ const classtable_elt_t VFT_ReduceAction22[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction22 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OStream < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49296,7 +21050,6 @@ const classtable_elt_t VFT_ReduceAction22[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49304,43 +21057,92 @@ const classtable_elt_t VFT_ReduceAction22[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction22 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction22___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction22 < ReduceAction22: superclass init_table position */},
-  {(bigint) parser___ReduceAction22___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 54: OStream < IOS: superclass init_table position */},
+  {(bigint) stream___IOS___close},
+  {(bigint) stream___IOS___init},
+  {(bigint) 2 /* 57: OStream < OStream: superclass init_table position */},
+  {(bigint) stream___OStream___write},
+  {(bigint) stream___OStream___is_writable},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction22(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction22;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+void INIT_ATTRIBUTES__OStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction22(val_t self, char *from) {
-}
-val_t NEW_ReduceAction22_parser___ReduceAction22___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction22();
-  parser___ReduceAction22___init(self, init_table);
-  CHECKNEW_ReduceAction22(self, "parser::ReduceAction22::init for ReduceAction22");
-  return self;
+val_t NEW_OStream(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_OStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OStream_stream___IOS___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_OStream_stream___IOS___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_OStream();
+  INIT_ATTRIBUTES__OStream(fra.me.REG[0]);
+  stream___IOS___init(fra.me.REG[0], init_table);
+  CHECKNEW_OStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction23[48] = {
-  {(bigint) 2599 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction23 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction23 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2599 /* 3: ReduceAction23 < ReduceAction23: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_BufferedIStream[71] = {
+  {(bigint) 2779 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: BufferedIStream < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 191 /* 4: BufferedIStream < IOS: superclass typecheck marker */},
+  {(bigint) 2779 /* 5: BufferedIStream < BufferedIStream: superclass typecheck marker */},
+  {(bigint) 2003 /* 6: BufferedIStream < IStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49351,14 +21153,9 @@ const classtable_elt_t VFT_ReduceAction23[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction23 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: BufferedIStream < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49366,7 +21163,6 @@ const classtable_elt_t VFT_ReduceAction23[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49374,46 +21170,128 @@ const classtable_elt_t VFT_ReduceAction23[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction23 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction23___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction23 < ReduceAction23: superclass init_table position */},
-  {(bigint) parser___ReduceAction23___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 54: BufferedIStream < IOS: superclass init_table position */},
+  {(bigint) stream___IOS___close},
+  {(bigint) stream___IOS___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 60: BufferedIStream < IStream: superclass init_table position */},
+  {(bigint) stream___BufferedIStream___read_char},
+  {(bigint) stream___BufferedIStream___read},
+  {(bigint) stream___IStream___read_line},
+  {(bigint) stream___BufferedIStream___read_all},
+  {(bigint) stream___BufferedIStream___append_line_to},
+  {(bigint) stream___BufferedIStream___eof},
+  {(bigint) 3 /* 67: BufferedIStream < BufferedIStream: superclass init_table position */},
+  {(bigint) stream___BufferedIStream___fill_buffer},
+  {(bigint) stream___BufferedIStream___end_reached},
+  {(bigint) stream___BufferedIStream___prepare_buffer},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction23(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 4: Attribute BufferedIStream::_buffer */
+/* 5: Attribute BufferedIStream::_buffer_pos */
+void INIT_ATTRIBUTES__BufferedIStream(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__BufferedIStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:186 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//stream.nit:190 */
+  REGB0 = TAG_Int(0);
+  ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_BufferedIStream(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction23;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction23(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_BufferedIStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_BufferedIStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_BufferedIStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction23_parser___ReduceAction23___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction23();
-  parser___ReduceAction23___init(self, init_table);
-  CHECKNEW_ReduceAction23(self, "parser::ReduceAction23::init for ReduceAction23");
-  return self;
+val_t NEW_BufferedIStream_stream___IOS___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_BufferedIStream_stream___IOS___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_BufferedIStream();
+  INIT_ATTRIBUTES__BufferedIStream(fra.me.REG[0]);
+  stream___IOS___init(fra.me.REG[0], init_table);
+  CHECKNEW_BufferedIStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction24[48] = {
-  {(bigint) 2555 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction24 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction24 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2555 /* 3: ReduceAction24 < ReduceAction24: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_IOStream[74] = {
+  {(bigint) 2651 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IOStream < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 191 /* 4: IOStream < IOS: superclass typecheck marker */},
+  {(bigint) 1891 /* 5: IOStream < OStream: superclass typecheck marker */},
+  {(bigint) 2003 /* 6: IOStream < IStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 2651 /* 9: IOStream < IOStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49421,14 +21299,9 @@ const classtable_elt_t VFT_ReduceAction24[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction24 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IOStream < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49436,7 +21309,6 @@ const classtable_elt_t VFT_ReduceAction24[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49444,41 +21316,104 @@ const classtable_elt_t VFT_ReduceAction24[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction24 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction24___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction24 < ReduceAction24: superclass init_table position */},
-  {(bigint) parser___ReduceAction24___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 54: IOStream < IOS: superclass init_table position */},
+  {(bigint) stream___IOS___close},
+  {(bigint) stream___IOS___init},
+  {(bigint) 3 /* 57: IOStream < OStream: superclass init_table position */},
+  {(bigint) stream___OStream___write},
+  {(bigint) stream___OStream___is_writable},
+  {(bigint) 2 /* 60: IOStream < IStream: superclass init_table position */},
+  {(bigint) stream___IStream___read_char},
+  {(bigint) stream___IStream___read},
+  {(bigint) stream___IStream___read_line},
+  {(bigint) stream___IStream___read_all},
+  {(bigint) stream___IStream___append_line_to},
+  {(bigint) stream___IStream___eof},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 73: IOStream < IOStream: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction24(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction24;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+void INIT_ATTRIBUTES__IOStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IOStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction24(val_t self, char *from) {
-}
-val_t NEW_ReduceAction24_parser___ReduceAction24___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction24();
-  parser___ReduceAction24___init(self, init_table);
-  CHECKNEW_ReduceAction24(self, "parser::ReduceAction24::init for ReduceAction24");
-  return self;
+val_t NEW_IOStream(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_IOStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IOStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IOStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IOStream_stream___IOS___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_IOStream_stream___IOS___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_IOStream();
+  INIT_ATTRIBUTES__IOStream(fra.me.REG[0]);
+  stream___IOS___init(fra.me.REG[0], init_table);
+  CHECKNEW_IOStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction25[48] = {
-  {(bigint) 2511 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction25 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction25 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2511 /* 3: ReduceAction25 < ReduceAction25: superclass typecheck marker */},
+const classtable_elt_t VFT_FDStream[57] = {
+  {(bigint) 2059 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: FDStream < Object: superclass typecheck marker */},
+  {(bigint) 2059 /* 3: FDStream < FDStream: superclass typecheck marker */},
+  {(bigint) 191 /* 4: FDStream < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49491,14 +21426,9 @@ const classtable_elt_t VFT_ReduceAction25[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction25 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: FDStream < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49506,7 +21436,6 @@ const classtable_elt_t VFT_ReduceAction25[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49514,45 +21443,103 @@ const classtable_elt_t VFT_ReduceAction25[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction25 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction25___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction25 < ReduceAction25: superclass init_table position */},
-  {(bigint) parser___ReduceAction25___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: FDStream < FDStream: superclass init_table position */},
+  {(bigint) stream___FDStream___native_close},
+  {(bigint) stream___FDStream___native_read_char},
+  {(bigint) stream___FDStream___native_read},
+  {(bigint) stream___FDStream___native_write},
+  {(bigint) stream___FDStream___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 54: FDStream < IOS: superclass init_table position */},
+  {(bigint) stream___FDStream___close},
+  {(bigint) stream___IOS___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction25(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction25;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction25(val_t self, char *from) {
-}
-val_t NEW_ReduceAction25_parser___ReduceAction25___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction25();
-  parser___ReduceAction25___init(self, init_table);
-  CHECKNEW_ReduceAction25(self, "parser::ReduceAction25::init for ReduceAction25");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute FDStream::_fd */
+void INIT_ATTRIBUTES__FDStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__FDStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction26[48] = {
-  {(bigint) 2467 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction26 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction26 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2467 /* 3: ReduceAction26 < ReduceAction26: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_FDStream(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_FDStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_FDStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_FDStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_fd", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_FDStream_stream___FDStream___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 225;
+  fra.me.meth = LOCATE_NEW_FDStream_stream___FDStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./../lib/standard//stream.nit:225 */
+  fra.me.REG[0] = NEW_FDStream();
+  INIT_ATTRIBUTES__FDStream(fra.me.REG[0]);
+  stream___FDStream___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_FDStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_FDIStream[69] = {
+  {(bigint) 2743 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: FDIStream < Object: superclass typecheck marker */},
+  {(bigint) 2059 /* 3: FDIStream < FDStream: superclass typecheck marker */},
+  {(bigint) 191 /* 4: FDIStream < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2003 /* 6: FDIStream < IStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2743 /* 8: FDIStream < FDIStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49561,14 +21548,9 @@ const classtable_elt_t VFT_ReduceAction26[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction26 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: FDIStream < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49576,7 +21558,6 @@ const classtable_elt_t VFT_ReduceAction26[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49584,44 +21565,127 @@ const classtable_elt_t VFT_ReduceAction26[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction26 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction26___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction26 < ReduceAction26: superclass init_table position */},
-  {(bigint) parser___ReduceAction26___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: FDIStream < FDStream: superclass init_table position */},
+  {(bigint) stream___FDStream___native_close},
+  {(bigint) stream___FDStream___native_read_char},
+  {(bigint) stream___FDStream___native_read},
+  {(bigint) stream___FDStream___native_write},
+  {(bigint) stream___FDStream___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 54: FDIStream < IOS: superclass init_table position */},
+  {(bigint) stream___FDStream___close},
+  {(bigint) stream___IOS___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 3 /* 60: FDIStream < IStream: superclass init_table position */},
+  {(bigint) stream___FDIStream___read_char},
+  {(bigint) stream___IStream___read},
+  {(bigint) stream___IStream___read_line},
+  {(bigint) stream___IStream___read_all},
+  {(bigint) stream___IStream___append_line_to},
+  {(bigint) stream___FDIStream___eof},
+  {(bigint) 4 /* 67: FDIStream < FDIStream: superclass init_table position */},
+  {(bigint) stream___FDIStream___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction26(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute FDIStream::_fd */
+/* Instance Hole :( */
+/* 4: Attribute FDIStream::_eof */
+void INIT_ATTRIBUTES__FDIStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__FDIStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:231 */
+  REGB0 = TAG_Bool(false);
+  ATTR_stream___FDIStream____eof(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_FDIStream(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction26;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction26(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_FDIStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_FDIStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_FDIStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_stream___FDIStream____eof(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_eof", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_fd", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction26_parser___ReduceAction26___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction26();
-  parser___ReduceAction26___init(self, init_table);
-  CHECKNEW_ReduceAction26(self, "parser::ReduceAction26::init for ReduceAction26");
-  return self;
+val_t NEW_FDIStream_stream___FDIStream___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 240;
+  fra.me.meth = LOCATE_NEW_FDIStream_stream___FDIStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./../lib/standard//stream.nit:240 */
+  fra.me.REG[0] = NEW_FDIStream();
+  INIT_ATTRIBUTES__FDIStream(fra.me.REG[0]);
+  stream___FDIStream___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_FDIStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction27[48] = {
-  {(bigint) 2423 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction27 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction27 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2423 /* 3: ReduceAction27 < ReduceAction27: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_FDOStream[60] = {
+  {(bigint) 2739 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: FDOStream < Object: superclass typecheck marker */},
+  {(bigint) 2059 /* 3: FDOStream < FDStream: superclass typecheck marker */},
+  {(bigint) 191 /* 4: FDOStream < IOS: superclass typecheck marker */},
+  {(bigint) 1891 /* 5: FDOStream < OStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2739 /* 7: FDOStream < FDOStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49631,14 +21695,9 @@ const classtable_elt_t VFT_ReduceAction27[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction27 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: FDOStream < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49646,7 +21705,6 @@ const classtable_elt_t VFT_ReduceAction27[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49654,61 +21712,123 @@ const classtable_elt_t VFT_ReduceAction27[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction27 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction27___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction27 < ReduceAction27: superclass init_table position */},
-  {(bigint) parser___ReduceAction27___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: FDOStream < FDStream: superclass init_table position */},
+  {(bigint) stream___FDStream___native_close},
+  {(bigint) stream___FDStream___native_read_char},
+  {(bigint) stream___FDStream___native_read},
+  {(bigint) stream___FDStream___native_write},
+  {(bigint) stream___FDStream___init},
+  {(bigint) 4 /* 51: FDOStream < FDOStream: superclass init_table position */},
+  {(bigint) stream___FDOStream___init},
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 54: FDOStream < IOS: superclass init_table position */},
+  {(bigint) stream___FDStream___close},
+  {(bigint) stream___IOS___init},
+  {(bigint) 3 /* 57: FDOStream < OStream: superclass init_table position */},
+  {(bigint) stream___FDOStream___write},
+  {(bigint) stream___FDOStream___is_writable},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction27(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction27;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute FDOStream::_fd */
+/* 3: Attribute FDOStream::_is_writable */
+void INIT_ATTRIBUTES__FDOStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__FDOStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction27(val_t self, char *from) {
+val_t NEW_FDOStream(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_FDOStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_FDOStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_FDOStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_stream___FDOStream____is_writable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_writable", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_fd", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction27_parser___ReduceAction27___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction27();
-  parser___ReduceAction27___init(self, init_table);
-  CHECKNEW_ReduceAction27(self, "parser::ReduceAction27::init for ReduceAction27");
-  return self;
+val_t NEW_FDOStream_stream___FDOStream___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 254;
+  fra.me.meth = LOCATE_NEW_FDOStream_stream___FDOStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./../lib/standard//stream.nit:254 */
+  fra.me.REG[0] = NEW_FDOStream();
+  INIT_ATTRIBUTES__FDOStream(fra.me.REG[0]);
+  stream___FDOStream___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_FDOStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction28[48] = {
-  {(bigint) 2379 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction28 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction28 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2379 /* 3: ReduceAction28 < ReduceAction28: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_FDIOStream[74] = {
+  {(bigint) 2967 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: FDIOStream < Object: superclass typecheck marker */},
+  {(bigint) 2059 /* 3: FDIOStream < FDStream: superclass typecheck marker */},
+  {(bigint) 191 /* 4: FDIOStream < IOS: superclass typecheck marker */},
+  {(bigint) 1891 /* 5: FDIOStream < OStream: superclass typecheck marker */},
+  {(bigint) 2003 /* 6: FDIOStream < IStream: superclass typecheck marker */},
+  {(bigint) 2739 /* 7: FDIOStream < FDOStream: superclass typecheck marker */},
+  {(bigint) 2743 /* 8: FDIOStream < FDIStream: superclass typecheck marker */},
+  {(bigint) 2651 /* 9: FDIOStream < IOStream: superclass typecheck marker */},
+  {(bigint) 2967 /* 10: FDIOStream < FDIOStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction28 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: FDIOStream < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49716,7 +21836,6 @@ const classtable_elt_t VFT_ReduceAction28[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49724,41 +21843,133 @@ const classtable_elt_t VFT_ReduceAction28[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction28 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction28___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction28 < ReduceAction28: superclass init_table position */},
-  {(bigint) parser___ReduceAction28___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: FDIOStream < FDStream: superclass init_table position */},
+  {(bigint) stream___FDStream___native_close},
+  {(bigint) stream___FDStream___native_read_char},
+  {(bigint) stream___FDStream___native_read},
+  {(bigint) stream___FDStream___native_write},
+  {(bigint) stream___FDStream___init},
+  {(bigint) 6 /* 51: FDIOStream < FDOStream: superclass init_table position */},
+  {(bigint) stream___FDOStream___init},
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 54: FDIOStream < IOS: superclass init_table position */},
+  {(bigint) stream___FDStream___close},
+  {(bigint) stream___IOS___init},
+  {(bigint) 5 /* 57: FDIOStream < OStream: superclass init_table position */},
+  {(bigint) stream___FDOStream___write},
+  {(bigint) stream___FDOStream___is_writable},
+  {(bigint) 3 /* 60: FDIOStream < IStream: superclass init_table position */},
+  {(bigint) stream___FDIStream___read_char},
+  {(bigint) stream___IStream___read},
+  {(bigint) stream___IStream___read_line},
+  {(bigint) stream___IStream___read_all},
+  {(bigint) stream___IStream___append_line_to},
+  {(bigint) stream___FDIStream___eof},
+  {(bigint) 4 /* 67: FDIOStream < FDIStream: superclass init_table position */},
+  {(bigint) stream___FDIStream___init},
+  {(bigint) 8 /* 69: FDIOStream < FDIOStream: superclass init_table position */},
+  {(bigint) stream___FDIOStream___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 7 /* 73: FDIOStream < IOStream: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction28(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute FDIOStream::_fd */
+/* 3: Attribute FDIOStream::_is_writable */
+/* 4: Attribute FDIOStream::_eof */
+void INIT_ATTRIBUTES__FDIOStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__FDIOStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//stream.nit:231 */
+  REGB0 = TAG_Bool(false);
+  ATTR_stream___FDIStream____eof(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_FDIOStream(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction28;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction28(val_t self, char *from) {
-}
-val_t NEW_ReduceAction28_parser___ReduceAction28___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction28();
-  parser___ReduceAction28___init(self, init_table);
-  CHECKNEW_ReduceAction28(self, "parser::ReduceAction28::init for ReduceAction28");
-  return self;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_FDIOStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_FDIOStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_FDIOStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_stream___FDIStream____eof(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_eof", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_stream___FDStream____fd(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_fd", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_stream___FDOStream____is_writable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_writable", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction29[48] = {
-  {(bigint) 2335 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction29 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction29 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2335 /* 3: ReduceAction29 < ReduceAction29: superclass typecheck marker */},
+val_t NEW_FDIOStream_stream___FDIOStream___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 264;
+  fra.me.meth = LOCATE_NEW_FDIOStream_stream___FDIOStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./../lib/standard//stream.nit:264 */
+  fra.me.REG[0] = NEW_FDIOStream();
+  INIT_ATTRIBUTES__FDIOStream(fra.me.REG[0]);
+  stream___FDIOStream___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_FDIOStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_Pattern[51] = {
+  {(bigint) 99 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Pattern < Object: superclass typecheck marker */},
+  {(bigint) 99 /* 3: Pattern < Pattern: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49771,14 +21982,10 @@ const classtable_elt_t VFT_ReduceAction29[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction29 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Pattern < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49786,7 +21993,6 @@ const classtable_elt_t VFT_ReduceAction29[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49794,41 +22000,81 @@ const classtable_elt_t VFT_ReduceAction29[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction29 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction29___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction29 < ReduceAction29: superclass init_table position */},
-  {(bigint) parser___ReduceAction29___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: Pattern < Pattern: superclass init_table position */},
+  {(bigint) string_search___Pattern___search_index_in},
+  {(bigint) string_search___Pattern___search_in},
+  {(bigint) string_search___Pattern___search_all_in},
+  {(bigint) string_search___Pattern___split_in},
+  {(bigint) string_search___Pattern___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction29(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction29;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction29(val_t self, char *from) {
-}
-val_t NEW_ReduceAction29_parser___ReduceAction29___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction29();
-  parser___ReduceAction29___init(self, init_table);
-  CHECKNEW_ReduceAction29(self, "parser::ReduceAction29::init for ReduceAction29");
-  return self;
+/* 1: Object_id */
+void INIT_ATTRIBUTES__Pattern(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Pattern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction30[48] = {
-  {(bigint) 2287 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction30 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction30 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2287 /* 3: ReduceAction30 < ReduceAction30: superclass typecheck marker */},
+val_t NEW_Pattern(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_Pattern;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Pattern(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Pattern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Pattern_string_search___Pattern___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_Pattern_string_search___Pattern___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_Pattern();
+  INIT_ATTRIBUTES__Pattern(fra.me.REG[0]);
+  string_search___Pattern___init(fra.me.REG[0], init_table);
+  CHECKNEW_Pattern(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_BM_Pattern[57] = {
+  {(bigint) 2123 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: BM_Pattern < Object: superclass typecheck marker */},
+  {(bigint) 99 /* 3: BM_Pattern < Pattern: superclass typecheck marker */},
+  {(bigint) 2123 /* 4: BM_Pattern < BM_Pattern: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49841,14 +22087,9 @@ const classtable_elt_t VFT_ReduceAction30[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction30 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: BM_Pattern < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49856,7 +22097,6 @@ const classtable_elt_t VFT_ReduceAction30[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49864,41 +22104,116 @@ const classtable_elt_t VFT_ReduceAction30[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string_search___BM_Pattern___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction30 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction30___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction30 < ReduceAction30: superclass init_table position */},
-  {(bigint) parser___ReduceAction30___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: BM_Pattern < Pattern: superclass init_table position */},
+  {(bigint) string_search___BM_Pattern___search_index_in},
+  {(bigint) string_search___BM_Pattern___search_in},
+  {(bigint) string_search___Pattern___search_all_in},
+  {(bigint) string_search___Pattern___split_in},
+  {(bigint) string_search___Pattern___init},
+  {(bigint) 2 /* 51: BM_Pattern < BM_Pattern: superclass init_table position */},
+  {(bigint) string_search___BM_Pattern___init},
+  {(bigint) string_search___BM_Pattern___bc},
+  {(bigint) string_search___BM_Pattern___compute_bc},
+  {(bigint) string_search___BM_Pattern___suffixes},
+  {(bigint) string_search___BM_Pattern___compute_gs},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction30(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute BM_Pattern::_motif */
+/* 3: Attribute BM_Pattern::_length */
+/* 4: Attribute BM_Pattern::_gs */
+/* 5: Attribute BM_Pattern::_bc_table */
+void INIT_ATTRIBUTES__BM_Pattern(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__BM_Pattern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_BM_Pattern(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction30;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction30(val_t self, char *from) {
-}
-val_t NEW_ReduceAction30_parser___ReduceAction30___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction30();
-  parser___ReduceAction30___init(self, init_table);
-  CHECKNEW_ReduceAction30(self, "parser::ReduceAction30::init for ReduceAction30");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction31[48] = {
-  {(bigint) 2243 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction31 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction31 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2243 /* 3: ReduceAction31 < ReduceAction31: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_BM_Pattern;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_BM_Pattern(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_BM_Pattern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____motif(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_motif", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_gs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_string_search___BM_Pattern____bc_table(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_bc_table", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_BM_Pattern_string_search___BM_Pattern___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 107;
+  fra.me.meth = LOCATE_NEW_BM_Pattern_string_search___BM_Pattern___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//string_search.nit:107 */
+  fra.me.REG[1] = NEW_BM_Pattern();
+  INIT_ATTRIBUTES__BM_Pattern(fra.me.REG[1]);
+  string_search___BM_Pattern___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_BM_Pattern(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_Match[51] = {
+  {(bigint) 127 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Match < Object: superclass typecheck marker */},
+  {(bigint) 127 /* 3: Match < Match: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49911,14 +22226,10 @@ const classtable_elt_t VFT_ReduceAction31[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction31 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Match < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49926,7 +22237,6 @@ const classtable_elt_t VFT_ReduceAction31[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -49934,44 +22244,112 @@ const classtable_elt_t VFT_ReduceAction31[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string_search___Match___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction31 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction31___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction31 < ReduceAction31: superclass init_table position */},
-  {(bigint) parser___ReduceAction31___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: Match < Match: superclass init_table position */},
+  {(bigint) string_search___Match___string},
+  {(bigint) string_search___Match___from},
+  {(bigint) string_search___Match___length},
+  {(bigint) string_search___Match___after},
+  {(bigint) string_search___Match___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction31(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute Match::_string */
+/* 3: Attribute Match::_from */
+/* 4: Attribute Match::_length */
+void INIT_ATTRIBUTES__Match(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Match;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Match(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction31;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction31(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_Match;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Match(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Match;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_string_search___Match____string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_string", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_string_search___Match____from(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_from", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_string_search___Match____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction31_parser___ReduceAction31___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction31();
-  parser___ReduceAction31___init(self, init_table);
-  CHECKNEW_ReduceAction31(self, "parser::ReduceAction31::init for ReduceAction31");
-  return self;
+val_t NEW_Match_string_search___Match___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 220;
+  fra.me.meth = LOCATE_NEW_Match_string_search___Match___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  REGB1 = p2;
+  /* ./../lib/standard//string_search.nit:220 */
+  fra.me.REG[1] = NEW_Match();
+  INIT_ATTRIBUTES__Match(fra.me.REG[1]);
+  string_search___Match___init(fra.me.REG[1], fra.me.REG[0], REGB0, REGB1, init_table);
+  CHECKNEW_Match(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_ReduceAction32[48] = {
-  {(bigint) 2199 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction32 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction32 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2199 /* 3: ReduceAction32 < ReduceAction32: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_FStream[57] = {
+  {(bigint) 2055 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: FStream < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 3: FStream < NativeFileCapable: superclass typecheck marker */},
+  {(bigint) 191 /* 4: FStream < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 2055 /* 7: FStream < FStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49981,14 +22359,9 @@ const classtable_elt_t VFT_ReduceAction32[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction32 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: FStream < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -49996,7 +22369,6 @@ const classtable_elt_t VFT_ReduceAction32[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50004,45 +22376,102 @@ const classtable_elt_t VFT_ReduceAction32[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction32 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction32___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction32 < ReduceAction32: superclass init_table position */},
-  {(bigint) parser___ReduceAction32___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: FStream < NativeFileCapable: superclass init_table position */},
+  {(bigint) file___NativeFileCapable___io_open_read},
+  {(bigint) file___NativeFileCapable___io_open_write},
+  {(bigint) file___NativeFileCapable___native_stdin},
+  {(bigint) file___NativeFileCapable___native_stdout},
+  {(bigint) file___NativeFileCapable___native_stderr},
+  {(bigint) 3 /* 51: FStream < FStream: superclass init_table position */},
+  {(bigint) file___FStream___path},
+  {(bigint) file___FStream___file_stat},
+  {(bigint) 1 /* 54: FStream < IOS: superclass init_table position */},
+  {(bigint) stream___IOS___close},
+  {(bigint) stream___IOS___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction32(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute FStream::_path */
+/* 3: Attribute FStream::_file */
+void INIT_ATTRIBUTES__FStream(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__FStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//file.nit:55 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//file.nit:58 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_FStream(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction32;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction32(val_t self, char *from) {
-}
-val_t NEW_ReduceAction32_parser___ReduceAction32___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction32();
-  parser___ReduceAction32___init(self, init_table);
-  CHECKNEW_ReduceAction32(self, "parser::ReduceAction32::init for ReduceAction32");
-  return self;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_FStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_FStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_FStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_FStream_stream___IOS___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_FStream_stream___IOS___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_FStream();
+  INIT_ATTRIBUTES__FStream(fra.me.REG[0]);
+  stream___IOS___init(fra.me.REG[0], init_table);
+  CHECKNEW_FStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction33[48] = {
-  {(bigint) 2155 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction33 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction33 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2155 /* 3: ReduceAction33 < ReduceAction33: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_IFStream[76] = {
+  {(bigint) 2955 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IFStream < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 3: IFStream < NativeFileCapable: superclass typecheck marker */},
+  {(bigint) 191 /* 4: IFStream < IOS: superclass typecheck marker */},
+  {(bigint) 2779 /* 5: IFStream < BufferedIStream: superclass typecheck marker */},
+  {(bigint) 2003 /* 6: IFStream < IStream: superclass typecheck marker */},
+  {(bigint) 2055 /* 7: IFStream < FStream: superclass typecheck marker */},
+  {(bigint) 2955 /* 8: IFStream < IFStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50051,14 +22480,9 @@ const classtable_elt_t VFT_ReduceAction33[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction33 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IFStream < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50066,7 +22490,6 @@ const classtable_elt_t VFT_ReduceAction33[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50074,44 +22497,187 @@ const classtable_elt_t VFT_ReduceAction33[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction33 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction33___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction33 < ReduceAction33: superclass init_table position */},
-  {(bigint) parser___ReduceAction33___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: IFStream < NativeFileCapable: superclass init_table position */},
+  {(bigint) file___NativeFileCapable___io_open_read},
+  {(bigint) file___NativeFileCapable___io_open_write},
+  {(bigint) file___NativeFileCapable___native_stdin},
+  {(bigint) file___NativeFileCapable___native_stdout},
+  {(bigint) file___NativeFileCapable___native_stderr},
+  {(bigint) 3 /* 51: IFStream < FStream: superclass init_table position */},
+  {(bigint) file___FStream___path},
+  {(bigint) file___FStream___file_stat},
+  {(bigint) 1 /* 54: IFStream < IOS: superclass init_table position */},
+  {(bigint) file___IFStream___close},
+  {(bigint) stream___IOS___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 60: IFStream < IStream: superclass init_table position */},
+  {(bigint) stream___BufferedIStream___read_char},
+  {(bigint) stream___BufferedIStream___read},
+  {(bigint) stream___IStream___read_line},
+  {(bigint) stream___BufferedIStream___read_all},
+  {(bigint) stream___BufferedIStream___append_line_to},
+  {(bigint) stream___BufferedIStream___eof},
+  {(bigint) 5 /* 67: IFStream < BufferedIStream: superclass init_table position */},
+  {(bigint) file___IFStream___fill_buffer},
+  {(bigint) file___IFStream___end_reached},
+  {(bigint) stream___BufferedIStream___prepare_buffer},
+  {(bigint) 6 /* 71: IFStream < IFStream: superclass init_table position */},
+  {(bigint) file___IFStream___reopen},
+  {(bigint) file___IFStream___open},
+  {(bigint) file___IFStream___init},
+  {(bigint) file___IFStream___without_file},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction33(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute IFStream::_path */
+/* 3: Attribute IFStream::_file */
+/* 4: Attribute IFStream::_buffer */
+/* 5: Attribute IFStream::_buffer_pos */
+/* 6: Attribute IFStream::_end_reached */
+void INIT_ATTRIBUTES__IFStream(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IFStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//file.nit:99 */
+  REGB0 = TAG_Bool(false);
+  ATTR_file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//file.nit:55 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//file.nit:58 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//stream.nit:186 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//stream.nit:190 */
+  REGB0 = TAG_Int(0);
+  ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IFStream(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction33;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction33(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_IFStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IFStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IFStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_file___IFStream____end_reached(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_end_reached", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction33_parser___ReduceAction33___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction33();
-  parser___ReduceAction33___init(self, init_table);
-  CHECKNEW_ReduceAction33(self, "parser::ReduceAction33::init for ReduceAction33");
-  return self;
+val_t NEW_IFStream_file___IFStream___open(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 101;
+  fra.me.meth = LOCATE_NEW_IFStream_file___IFStream___open;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//file.nit:101 */
+  fra.me.REG[1] = NEW_IFStream();
+  INIT_ATTRIBUTES__IFStream(fra.me.REG[1]);
+  file___IFStream___open(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IFStream(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_IFStream_file___IFStream___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 110;
+  fra.me.meth = LOCATE_NEW_IFStream_file___IFStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//file.nit:110 */
+  fra.me.REG[0] = NEW_IFStream();
+  INIT_ATTRIBUTES__IFStream(fra.me.REG[0]);
+  file___IFStream___init(fra.me.REG[0], init_table);
+  CHECKNEW_IFStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_IFStream_file___IFStream___without_file(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 111;
+  fra.me.meth = LOCATE_NEW_IFStream_file___IFStream___without_file;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//file.nit:111 */
+  fra.me.REG[0] = NEW_IFStream();
+  INIT_ATTRIBUTES__IFStream(fra.me.REG[0]);
+  file___IFStream___without_file(fra.me.REG[0], init_table);
+  CHECKNEW_IFStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction34[48] = {
-  {(bigint) 2111 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction34 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction34 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2111 /* 3: ReduceAction34 < ReduceAction34: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_OFStream[65] = {
+  {(bigint) 2579 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OFStream < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 3: OFStream < NativeFileCapable: superclass typecheck marker */},
+  {(bigint) 191 /* 4: OFStream < IOS: superclass typecheck marker */},
+  {(bigint) 1891 /* 5: OFStream < OStream: superclass typecheck marker */},
+  {(bigint) 2579 /* 6: OFStream < OFStream: superclass typecheck marker */},
+  {(bigint) 2055 /* 7: OFStream < FStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50121,14 +22687,9 @@ const classtable_elt_t VFT_ReduceAction34[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction34 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OFStream < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50136,7 +22697,6 @@ const classtable_elt_t VFT_ReduceAction34[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50144,46 +22704,161 @@ const classtable_elt_t VFT_ReduceAction34[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction34 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction34___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction34 < ReduceAction34: superclass init_table position */},
-  {(bigint) parser___ReduceAction34___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: OFStream < NativeFileCapable: superclass init_table position */},
+  {(bigint) file___NativeFileCapable___io_open_read},
+  {(bigint) file___NativeFileCapable___io_open_write},
+  {(bigint) file___NativeFileCapable___native_stdin},
+  {(bigint) file___NativeFileCapable___native_stdout},
+  {(bigint) file___NativeFileCapable___native_stderr},
+  {(bigint) 3 /* 51: OFStream < FStream: superclass init_table position */},
+  {(bigint) file___FStream___path},
+  {(bigint) file___FStream___file_stat},
+  {(bigint) 1 /* 54: OFStream < IOS: superclass init_table position */},
+  {(bigint) file___OFStream___close},
+  {(bigint) stream___IOS___init},
+  {(bigint) 4 /* 57: OFStream < OStream: superclass init_table position */},
+  {(bigint) file___OFStream___write},
+  {(bigint) file___OFStream___is_writable},
+  {(bigint) 5 /* 60: OFStream < OFStream: superclass init_table position */},
+  {(bigint) file___OFStream___write_native},
+  {(bigint) file___OFStream___open},
+  {(bigint) file___OFStream___init},
+  {(bigint) file___OFStream___without_file},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction34(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute OFStream::_path */
+/* 3: Attribute OFStream::_file */
+/* 4: Attribute OFStream::_writable */
+void INIT_ATTRIBUTES__OFStream(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OFStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//file.nit:55 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//file.nit:58 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OFStream(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction34;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction34(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_OFStream;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OFStream(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OFStream;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_file___OFStream____writable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction34_parser___ReduceAction34___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction34();
-  parser___ReduceAction34___init(self, init_table);
-  CHECKNEW_ReduceAction34(self, "parser::ReduceAction34::init for ReduceAction34");
-  return self;
+val_t NEW_OFStream_file___OFStream___open(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 148;
+  fra.me.meth = LOCATE_NEW_OFStream_file___OFStream___open;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//file.nit:148 */
+  fra.me.REG[1] = NEW_OFStream();
+  INIT_ATTRIBUTES__OFStream(fra.me.REG[1]);
+  file___OFStream___open(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_OFStream(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_OFStream_file___OFStream___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 157;
+  fra.me.meth = LOCATE_NEW_OFStream_file___OFStream___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//file.nit:157 */
+  fra.me.REG[0] = NEW_OFStream();
+  INIT_ATTRIBUTES__OFStream(fra.me.REG[0]);
+  file___OFStream___init(fra.me.REG[0], init_table);
+  CHECKNEW_OFStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_OFStream_file___OFStream___without_file(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 158;
+  fra.me.meth = LOCATE_NEW_OFStream_file___OFStream___without_file;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//file.nit:158 */
+  fra.me.REG[0] = NEW_OFStream();
+  INIT_ATTRIBUTES__OFStream(fra.me.REG[0]);
+  file___OFStream___without_file(fra.me.REG[0], init_table);
+  CHECKNEW_OFStream(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction35[48] = {
-  {(bigint) 2067 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction35 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction35 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2067 /* 3: ReduceAction35 < ReduceAction35: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_Stdin[78] = {
+  {(bigint) 3259 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Stdin < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 3: Stdin < NativeFileCapable: superclass typecheck marker */},
+  {(bigint) 191 /* 4: Stdin < IOS: superclass typecheck marker */},
+  {(bigint) 2779 /* 5: Stdin < BufferedIStream: superclass typecheck marker */},
+  {(bigint) 2003 /* 6: Stdin < IStream: superclass typecheck marker */},
+  {(bigint) 2055 /* 7: Stdin < FStream: superclass typecheck marker */},
+  {(bigint) 2955 /* 8: Stdin < IFStream: superclass typecheck marker */},
+  {(bigint) 3259 /* 9: Stdin < Stdin: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50191,14 +22866,9 @@ const classtable_elt_t VFT_ReduceAction35[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction35 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Stdin < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50206,7 +22876,6 @@ const classtable_elt_t VFT_ReduceAction35[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50214,45 +22883,150 @@ const classtable_elt_t VFT_ReduceAction35[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction35 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction35___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction35 < ReduceAction35: superclass init_table position */},
-  {(bigint) parser___ReduceAction35___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: Stdin < NativeFileCapable: superclass init_table position */},
+  {(bigint) file___NativeFileCapable___io_open_read},
+  {(bigint) file___NativeFileCapable___io_open_write},
+  {(bigint) file___NativeFileCapable___native_stdin},
+  {(bigint) file___NativeFileCapable___native_stdout},
+  {(bigint) file___NativeFileCapable___native_stderr},
+  {(bigint) 3 /* 51: Stdin < FStream: superclass init_table position */},
+  {(bigint) file___FStream___path},
+  {(bigint) file___FStream___file_stat},
+  {(bigint) 1 /* 54: Stdin < IOS: superclass init_table position */},
+  {(bigint) file___IFStream___close},
+  {(bigint) stream___IOS___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 60: Stdin < IStream: superclass init_table position */},
+  {(bigint) stream___BufferedIStream___read_char},
+  {(bigint) stream___BufferedIStream___read},
+  {(bigint) stream___IStream___read_line},
+  {(bigint) stream___BufferedIStream___read_all},
+  {(bigint) stream___BufferedIStream___append_line_to},
+  {(bigint) stream___BufferedIStream___eof},
+  {(bigint) 5 /* 67: Stdin < BufferedIStream: superclass init_table position */},
+  {(bigint) file___IFStream___fill_buffer},
+  {(bigint) file___IFStream___end_reached},
+  {(bigint) stream___BufferedIStream___prepare_buffer},
+  {(bigint) 6 /* 71: Stdin < IFStream: superclass init_table position */},
+  {(bigint) file___IFStream___reopen},
+  {(bigint) file___IFStream___open},
+  {(bigint) file___IFStream___init},
+  {(bigint) file___IFStream___without_file},
+  {(bigint) 7 /* 76: Stdin < Stdin: superclass init_table position */},
+  {(bigint) file___Stdin___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction35(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute Stdin::_path */
+/* 3: Attribute Stdin::_file */
+/* 4: Attribute Stdin::_buffer */
+/* 5: Attribute Stdin::_buffer_pos */
+/* 6: Attribute Stdin::_end_reached */
+void INIT_ATTRIBUTES__Stdin(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Stdin;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//file.nit:99 */
+  REGB0 = TAG_Bool(false);
+  ATTR_file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//file.nit:55 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//file.nit:58 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//stream.nit:186 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_stream___BufferedIStream____buffer(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//stream.nit:190 */
+  REGB0 = TAG_Int(0);
+  ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Stdin(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction35;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction35(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_Stdin;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Stdin(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Stdin;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_file___IFStream____end_reached(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_end_reached", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_stream___BufferedIStream____buffer_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction35_parser___ReduceAction35___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction35();
-  parser___ReduceAction35___init(self, init_table);
-  CHECKNEW_ReduceAction35(self, "parser::ReduceAction35::init for ReduceAction35");
-  return self;
+val_t NEW_Stdin_file___Stdin___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 165;
+  fra.me.meth = LOCATE_NEW_Stdin_file___Stdin___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//file.nit:165 */
+  fra.me.REG[0] = NEW_Stdin();
+  INIT_ATTRIBUTES__Stdin(fra.me.REG[0]);
+  file___Stdin___init(fra.me.REG[0], init_table);
+  CHECKNEW_Stdin(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction36[48] = {
-  {(bigint) 2023 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction36 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction36 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2023 /* 3: ReduceAction36 < ReduceAction36: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_Stdout[67] = {
+  {(bigint) 2903 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Stdout < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 3: Stdout < NativeFileCapable: superclass typecheck marker */},
+  {(bigint) 191 /* 4: Stdout < IOS: superclass typecheck marker */},
+  {(bigint) 1891 /* 5: Stdout < OStream: superclass typecheck marker */},
+  {(bigint) 2579 /* 6: Stdout < OFStream: superclass typecheck marker */},
+  {(bigint) 2055 /* 7: Stdout < FStream: superclass typecheck marker */},
+  {(bigint) 2903 /* 8: Stdout < Stdout: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50261,14 +23035,9 @@ const classtable_elt_t VFT_ReduceAction36[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction36 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Stdout < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50276,7 +23045,6 @@ const classtable_elt_t VFT_ReduceAction36[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50284,45 +23052,122 @@ const classtable_elt_t VFT_ReduceAction36[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction36 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction36___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction36 < ReduceAction36: superclass init_table position */},
-  {(bigint) parser___ReduceAction36___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: Stdout < NativeFileCapable: superclass init_table position */},
+  {(bigint) file___NativeFileCapable___io_open_read},
+  {(bigint) file___NativeFileCapable___io_open_write},
+  {(bigint) file___NativeFileCapable___native_stdin},
+  {(bigint) file___NativeFileCapable___native_stdout},
+  {(bigint) file___NativeFileCapable___native_stderr},
+  {(bigint) 3 /* 51: Stdout < FStream: superclass init_table position */},
+  {(bigint) file___FStream___path},
+  {(bigint) file___FStream___file_stat},
+  {(bigint) 1 /* 54: Stdout < IOS: superclass init_table position */},
+  {(bigint) file___OFStream___close},
+  {(bigint) stream___IOS___init},
+  {(bigint) 4 /* 57: Stdout < OStream: superclass init_table position */},
+  {(bigint) file___OFStream___write},
+  {(bigint) file___OFStream___is_writable},
+  {(bigint) 5 /* 60: Stdout < OFStream: superclass init_table position */},
+  {(bigint) file___OFStream___write_native},
+  {(bigint) file___OFStream___open},
+  {(bigint) file___OFStream___init},
+  {(bigint) file___OFStream___without_file},
+  {(bigint) 6 /* 65: Stdout < Stdout: superclass init_table position */},
+  {(bigint) file___Stdout___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction36(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute Stdout::_path */
+/* 3: Attribute Stdout::_file */
+/* 4: Attribute Stdout::_writable */
+void INIT_ATTRIBUTES__Stdout(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Stdout;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//file.nit:55 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//file.nit:58 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Stdout(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction36;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction36(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_Stdout;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Stdout(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Stdout;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_file___OFStream____writable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction36_parser___ReduceAction36___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction36();
-  parser___ReduceAction36___init(self, init_table);
-  CHECKNEW_ReduceAction36(self, "parser::ReduceAction36::init for ReduceAction36");
-  return self;
+val_t NEW_Stdout_file___Stdout___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 174;
+  fra.me.meth = LOCATE_NEW_Stdout_file___Stdout___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//file.nit:174 */
+  fra.me.REG[0] = NEW_Stdout();
+  INIT_ATTRIBUTES__Stdout(fra.me.REG[0]);
+  file___Stdout___init(fra.me.REG[0], init_table);
+  CHECKNEW_Stdout(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction37[48] = {
-  {(bigint) 1979 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction37 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction37 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1979 /* 3: ReduceAction37 < ReduceAction37: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_Stderr[67] = {
+  {(bigint) 2907 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Stderr < Object: superclass typecheck marker */},
+  {(bigint) 115 /* 3: Stderr < NativeFileCapable: superclass typecheck marker */},
+  {(bigint) 191 /* 4: Stderr < IOS: superclass typecheck marker */},
+  {(bigint) 1891 /* 5: Stderr < OStream: superclass typecheck marker */},
+  {(bigint) 2579 /* 6: Stderr < OFStream: superclass typecheck marker */},
+  {(bigint) 2055 /* 7: Stderr < FStream: superclass typecheck marker */},
+  {(bigint) 2907 /* 8: Stderr < Stderr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50331,14 +23176,9 @@ const classtable_elt_t VFT_ReduceAction37[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction37 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Stderr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50346,7 +23186,6 @@ const classtable_elt_t VFT_ReduceAction37[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50354,41 +23193,118 @@ const classtable_elt_t VFT_ReduceAction37[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction37 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction37___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction37 < ReduceAction37: superclass init_table position */},
-  {(bigint) parser___ReduceAction37___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 2 /* 45: Stderr < NativeFileCapable: superclass init_table position */},
+  {(bigint) file___NativeFileCapable___io_open_read},
+  {(bigint) file___NativeFileCapable___io_open_write},
+  {(bigint) file___NativeFileCapable___native_stdin},
+  {(bigint) file___NativeFileCapable___native_stdout},
+  {(bigint) file___NativeFileCapable___native_stderr},
+  {(bigint) 3 /* 51: Stderr < FStream: superclass init_table position */},
+  {(bigint) file___FStream___path},
+  {(bigint) file___FStream___file_stat},
+  {(bigint) 1 /* 54: Stderr < IOS: superclass init_table position */},
+  {(bigint) file___OFStream___close},
+  {(bigint) stream___IOS___init},
+  {(bigint) 4 /* 57: Stderr < OStream: superclass init_table position */},
+  {(bigint) file___OFStream___write},
+  {(bigint) file___OFStream___is_writable},
+  {(bigint) 5 /* 60: Stderr < OFStream: superclass init_table position */},
+  {(bigint) file___OFStream___write_native},
+  {(bigint) file___OFStream___open},
+  {(bigint) file___OFStream___init},
+  {(bigint) file___OFStream___without_file},
+  {(bigint) 6 /* 65: Stderr < Stderr: superclass init_table position */},
+  {(bigint) file___Stderr___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction37(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute Stderr::_path */
+/* 3: Attribute Stderr::_file */
+/* 4: Attribute Stderr::_writable */
+void INIT_ATTRIBUTES__Stderr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Stderr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//file.nit:55 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//file.nit:58 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Stderr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction37;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction37(val_t self, char *from) {
-}
-val_t NEW_ReduceAction37_parser___ReduceAction37___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction37();
-  parser___ReduceAction37___init(self, init_table);
-  CHECKNEW_ReduceAction37(self, "parser::ReduceAction37::init for ReduceAction37");
-  return self;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_Stderr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Stderr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Stderr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_file___OFStream____writable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_writable", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction38[48] = {
-  {(bigint) 1935 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction38 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction38 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1935 /* 3: ReduceAction38 < ReduceAction38: superclass typecheck marker */},
+val_t NEW_Stderr_file___Stderr___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 183;
+  fra.me.meth = LOCATE_NEW_Stderr_file___Stderr___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//file.nit:183 */
+  fra.me.REG[0] = NEW_Stderr();
+  INIT_ATTRIBUTES__Stderr(fra.me.REG[0]);
+  file___Stderr___init(fra.me.REG[0], init_table);
+  CHECKNEW_Stderr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_FileStat[52] = {
+  {(bigint) -25 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: FileStat < Object: superclass typecheck marker */},
+  {(bigint) -1 /* 3: FileStat < Pointer: superclass typecheck marker */},
+  {(bigint) -25 /* 4: FileStat < FileStat: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50401,14 +23317,9 @@ const classtable_elt_t VFT_ReduceAction38[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction38 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: FileStat < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50416,7 +23327,6 @@ const classtable_elt_t VFT_ReduceAction38[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50424,41 +23334,41 @@ const classtable_elt_t VFT_ReduceAction38[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction38 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction38___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction38 < ReduceAction38: superclass init_table position */},
-  {(bigint) parser___ReduceAction38___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: FileStat < Pointer: superclass init_table position */},
+  {(bigint) 2 /* 46: FileStat < FileStat: superclass init_table position */},
+  {(bigint) file___FileStat___mode},
+  {(bigint) file___FileStat___atime},
+  {(bigint) file___FileStat___ctime},
+  {(bigint) file___FileStat___mtime},
+  {(bigint) file___FileStat___size},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction38(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction38;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction38(val_t self, char *from) {
-}
-val_t NEW_ReduceAction38_parser___ReduceAction38___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction38();
-  parser___ReduceAction38___init(self, init_table);
-  CHECKNEW_ReduceAction38(self, "parser::ReduceAction38::init for ReduceAction38");
-  return self;
+/* 1: Object_id */
+val_t BOX_FileStat(void * val) {
+  struct TBOX_FileStat *box = (struct TBOX_FileStat*)alloc(sizeof(struct TBOX_FileStat));
+  box->vft = VFT_FileStat;
+  box->val = val;
+  box->object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_ReduceAction39[48] = {
-  {(bigint) 1891 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction39 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction39 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1891 /* 3: ReduceAction39 < ReduceAction39: superclass typecheck marker */},
+const classtable_elt_t VFT_NativeFile[51] = {
+  {(bigint) -21 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: NativeFile < Object: superclass typecheck marker */},
+  {(bigint) -1 /* 3: NativeFile < Pointer: superclass typecheck marker */},
+  {(bigint) -21 /* 4: NativeFile < NativeFile: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50471,14 +23381,9 @@ const classtable_elt_t VFT_ReduceAction39[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction39 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: NativeFile < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50486,7 +23391,6 @@ const classtable_elt_t VFT_ReduceAction39[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50494,41 +23398,39 @@ const classtable_elt_t VFT_ReduceAction39[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction39 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction39___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction39 < ReduceAction39: superclass init_table position */},
-  {(bigint) parser___ReduceAction39___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: NativeFile < Pointer: superclass init_table position */},
+  {(bigint) 2 /* 46: NativeFile < NativeFile: superclass init_table position */},
+  {(bigint) file___NativeFile___io_read},
+  {(bigint) file___NativeFile___io_write},
+  {(bigint) file___NativeFile___io_close},
+  {(bigint) file___NativeFile___file_stat},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction39(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction39;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction39(val_t self, char *from) {
-}
-val_t NEW_ReduceAction39_parser___ReduceAction39___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction39();
-  parser___ReduceAction39___init(self, init_table);
-  CHECKNEW_ReduceAction39(self, "parser::ReduceAction39::init for ReduceAction39");
-  return self;
+/* 1: Object_id */
+val_t BOX_NativeFile(void * val) {
+  struct TBOX_NativeFile *box = (struct TBOX_NativeFile*)alloc(sizeof(struct TBOX_NativeFile));
+  box->vft = VFT_NativeFile;
+  box->val = val;
+  box->object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_ReduceAction40[48] = {
-  {(bigint) 1843 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction40 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction40 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1843 /* 3: ReduceAction40 < ReduceAction40: superclass typecheck marker */},
+const classtable_elt_t VFT_Process[54] = {
+  {(bigint) 91 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Process < Object: superclass typecheck marker */},
+  {(bigint) 91 /* 3: Process < Process: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50541,14 +23443,10 @@ const classtable_elt_t VFT_ReduceAction40[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction40 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Process < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50556,7 +23454,6 @@ const classtable_elt_t VFT_ReduceAction40[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50564,45 +23461,148 @@ const classtable_elt_t VFT_ReduceAction40[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction40 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction40___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction40 < ReduceAction40: superclass init_table position */},
-  {(bigint) parser___ReduceAction40___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: Process < Process: superclass init_table position */},
+  {(bigint) exec___Process___id},
+  {(bigint) exec___Process___is_finished},
+  {(bigint) exec___Process___wait},
+  {(bigint) exec___Process___status},
+  {(bigint) exec___Process___init},
+  {(bigint) exec___Process___init_},
+  {(bigint) exec___Process___execute},
+  {(bigint) exec___Process___basic_exec_execute},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction40(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction40;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute Process::_data */
+void INIT_ATTRIBUTES__Process(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Process;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction40(val_t self, char *from) {
+val_t NEW_Process(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_Process;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Process(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Process;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_exec___Process____data(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_data", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction40_parser___ReduceAction40___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction40();
-  parser___ReduceAction40___init(self, init_table);
-  CHECKNEW_ReduceAction40(self, "parser::ReduceAction40::init for ReduceAction40");
-  return self;
+val_t NEW_Process_exec___Process___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 43;
+  fra.me.meth = LOCATE_NEW_Process_exec___Process___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//exec.nit:43 */
+  fra.me.REG[2] = NEW_Process();
+  INIT_ATTRIBUTES__Process(fra.me.REG[2]);
+  exec___Process___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_Process(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_Process_exec___Process___init_(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 49;
+  fra.me.meth = LOCATE_NEW_Process_exec___Process___init_;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//exec.nit:49 */
+  fra.me.REG[1] = NEW_Process();
+  INIT_ATTRIBUTES__Process(fra.me.REG[1]);
+  exec___Process___init_(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_Process(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_Process_exec___Process___execute(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 55;
+  fra.me.meth = LOCATE_NEW_Process_exec___Process___execute;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  REGB0 = p2;
+  /* ./../lib/standard//exec.nit:55 */
+  fra.me.REG[2] = NEW_Process();
+  INIT_ATTRIBUTES__Process(fra.me.REG[2]);
+  exec___Process___execute(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], REGB0, init_table);
+  CHECKNEW_Process(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction41[48] = {
-  {(bigint) 1799 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction41 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction41 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1799 /* 3: ReduceAction41 < ReduceAction41: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_IProcess[73] = {
+  {(bigint) 2643 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IProcess < Object: superclass typecheck marker */},
+  {(bigint) 91 /* 3: IProcess < Process: superclass typecheck marker */},
+  {(bigint) 191 /* 4: IProcess < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2003 /* 6: IProcess < IStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2643 /* 8: IProcess < IProcess: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50611,14 +23611,9 @@ const classtable_elt_t VFT_ReduceAction41[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction41 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IProcess < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50626,7 +23621,6 @@ const classtable_elt_t VFT_ReduceAction41[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50634,44 +23628,148 @@ const classtable_elt_t VFT_ReduceAction41[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction41 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction41___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction41 < ReduceAction41: superclass init_table position */},
-  {(bigint) parser___ReduceAction41___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: IProcess < Process: superclass init_table position */},
+  {(bigint) exec___Process___id},
+  {(bigint) exec___Process___is_finished},
+  {(bigint) exec___Process___wait},
+  {(bigint) exec___Process___status},
+  {(bigint) exec___Process___init},
+  {(bigint) exec___Process___init_},
+  {(bigint) exec___Process___execute},
+  {(bigint) exec___Process___basic_exec_execute},
+  {(bigint) 2 /* 54: IProcess < IOS: superclass init_table position */},
+  {(bigint) exec___IProcess___close},
+  {(bigint) stream___IOS___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 3 /* 60: IProcess < IStream: superclass init_table position */},
+  {(bigint) exec___IProcess___read_char},
+  {(bigint) stream___IStream___read},
+  {(bigint) stream___IStream___read_line},
+  {(bigint) stream___IStream___read_all},
+  {(bigint) stream___IStream___append_line_to},
+  {(bigint) exec___IProcess___eof},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 70: IProcess < IProcess: superclass init_table position */},
+  {(bigint) exec___IProcess___init},
+  {(bigint) exec___IProcess___init_},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction41(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute IProcess::_data */
+/* Instance Hole :( */
+/* 4: Attribute IProcess::_in */
+void INIT_ATTRIBUTES__IProcess(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IProcess(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction41;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction41(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_IProcess;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IProcess(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_exec___IProcess____in(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_in", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_exec___Process____data(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_data", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction41_parser___ReduceAction41___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction41();
-  parser___ReduceAction41___init(self, init_table);
-  CHECKNEW_ReduceAction41(self, "parser::ReduceAction41::init for ReduceAction41");
-  return self;
+val_t NEW_IProcess_exec___IProcess___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 87;
+  fra.me.meth = LOCATE_NEW_IProcess_exec___IProcess___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//exec.nit:87 */
+  fra.me.REG[2] = NEW_IProcess();
+  INIT_ATTRIBUTES__IProcess(fra.me.REG[2]);
+  exec___IProcess___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IProcess(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_IProcess_exec___IProcess___init_(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 93;
+  fra.me.meth = LOCATE_NEW_IProcess_exec___IProcess___init_;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//exec.nit:93 */
+  fra.me.REG[1] = NEW_IProcess();
+  INIT_ATTRIBUTES__IProcess(fra.me.REG[1]);
+  exec___IProcess___init_(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IProcess(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_ReduceAction42[48] = {
-  {(bigint) 1755 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction42 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction42 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1755 /* 3: ReduceAction42 < ReduceAction42: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_OProcess[70] = {
+  {(bigint) 2575 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OProcess < Object: superclass typecheck marker */},
+  {(bigint) 91 /* 3: OProcess < Process: superclass typecheck marker */},
+  {(bigint) 191 /* 4: OProcess < IOS: superclass typecheck marker */},
+  {(bigint) 1891 /* 5: OProcess < OStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2575 /* 7: OProcess < OProcess: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50681,14 +23779,9 @@ const classtable_elt_t VFT_ReduceAction42[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction42 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OProcess < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50696,7 +23789,6 @@ const classtable_elt_t VFT_ReduceAction42[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50704,61 +23796,156 @@ const classtable_elt_t VFT_ReduceAction42[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction42 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction42___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction42 < ReduceAction42: superclass init_table position */},
-  {(bigint) parser___ReduceAction42___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction42(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction42;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction42(val_t self, char *from) {
-}
-val_t NEW_ReduceAction42_parser___ReduceAction42___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction42();
-  parser___ReduceAction42___init(self, init_table);
-  CHECKNEW_ReduceAction42(self, "parser::ReduceAction42::init for ReduceAction42");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction43[48] = {
-  {(bigint) 1711 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction43 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction43 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1711 /* 3: ReduceAction43 < ReduceAction43: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: OProcess < Process: superclass init_table position */},
+  {(bigint) exec___Process___id},
+  {(bigint) exec___Process___is_finished},
+  {(bigint) exec___Process___wait},
+  {(bigint) exec___Process___status},
+  {(bigint) exec___Process___init},
+  {(bigint) exec___Process___init_},
+  {(bigint) exec___Process___execute},
+  {(bigint) exec___Process___basic_exec_execute},
+  {(bigint) 2 /* 54: OProcess < IOS: superclass init_table position */},
+  {(bigint) exec___OProcess___close},
+  {(bigint) stream___IOS___init},
+  {(bigint) 3 /* 57: OProcess < OStream: superclass init_table position */},
+  {(bigint) exec___OProcess___write},
+  {(bigint) exec___OProcess___is_writable},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 4 /* 67: OProcess < OProcess: superclass init_table position */},
+  {(bigint) exec___OProcess___init},
+  {(bigint) exec___OProcess___init_},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute OProcess::_data */
+/* 3: Attribute OProcess::_out */
+void INIT_ATTRIBUTES__OProcess(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OProcess(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_OProcess;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OProcess(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_exec___OProcess____out(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_out", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_exec___Process____data(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_data", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OProcess_exec___OProcess___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 112;
+  fra.me.meth = LOCATE_NEW_OProcess_exec___OProcess___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//exec.nit:112 */
+  fra.me.REG[2] = NEW_OProcess();
+  INIT_ATTRIBUTES__OProcess(fra.me.REG[2]);
+  exec___OProcess___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_OProcess(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_OProcess_exec___OProcess___init_(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 118;
+  fra.me.meth = LOCATE_NEW_OProcess_exec___OProcess___init_;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//exec.nit:118 */
+  fra.me.REG[1] = NEW_OProcess();
+  INIT_ATTRIBUTES__OProcess(fra.me.REG[1]);
+  exec___OProcess___init_(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_OProcess(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_IOProcess[77] = {
+  {(bigint) 2943 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IOProcess < Object: superclass typecheck marker */},
+  {(bigint) 91 /* 3: IOProcess < Process: superclass typecheck marker */},
+  {(bigint) 191 /* 4: IOProcess < IOS: superclass typecheck marker */},
+  {(bigint) 1891 /* 5: IOProcess < OStream: superclass typecheck marker */},
+  {(bigint) 2003 /* 6: IOProcess < IStream: superclass typecheck marker */},
+  {(bigint) 2575 /* 7: IOProcess < OProcess: superclass typecheck marker */},
+  {(bigint) 2643 /* 8: IOProcess < IProcess: superclass typecheck marker */},
+  {(bigint) 2651 /* 9: IOProcess < IOStream: superclass typecheck marker */},
+  {(bigint) 2943 /* 10: IOProcess < IOProcess: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction43 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IOProcess < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50766,7 +23953,6 @@ const classtable_elt_t VFT_ReduceAction43[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50774,41 +23960,154 @@ const classtable_elt_t VFT_ReduceAction43[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction43 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction43___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction43 < ReduceAction43: superclass init_table position */},
-  {(bigint) parser___ReduceAction43___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: IOProcess < Process: superclass init_table position */},
+  {(bigint) exec___Process___id},
+  {(bigint) exec___Process___is_finished},
+  {(bigint) exec___Process___wait},
+  {(bigint) exec___Process___status},
+  {(bigint) exec___Process___init},
+  {(bigint) exec___Process___init_},
+  {(bigint) exec___Process___execute},
+  {(bigint) exec___Process___basic_exec_execute},
+  {(bigint) 2 /* 54: IOProcess < IOS: superclass init_table position */},
+  {(bigint) exec___IOProcess___close},
+  {(bigint) stream___IOS___init},
+  {(bigint) 5 /* 57: IOProcess < OStream: superclass init_table position */},
+  {(bigint) exec___OProcess___write},
+  {(bigint) exec___OProcess___is_writable},
+  {(bigint) 3 /* 60: IOProcess < IStream: superclass init_table position */},
+  {(bigint) exec___IProcess___read_char},
+  {(bigint) stream___IStream___read},
+  {(bigint) stream___IStream___read_line},
+  {(bigint) stream___IStream___read_all},
+  {(bigint) stream___IStream___append_line_to},
+  {(bigint) exec___IProcess___eof},
+  {(bigint) 6 /* 67: IOProcess < OProcess: superclass init_table position */},
+  {(bigint) exec___OProcess___init},
+  {(bigint) exec___OProcess___init_},
+  {(bigint) 4 /* 70: IOProcess < IProcess: superclass init_table position */},
+  {(bigint) exec___IProcess___init},
+  {(bigint) exec___IProcess___init_},
+  {(bigint) 7 /* 73: IOProcess < IOStream: superclass init_table position */},
+  {(bigint) 8 /* 74: IOProcess < IOProcess: superclass init_table position */},
+  {(bigint) exec___IOProcess___init},
+  {(bigint) exec___IOProcess___init_},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction43(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute IOProcess::_data */
+/* 3: Attribute IOProcess::_out */
+/* 4: Attribute IOProcess::_in */
+void INIT_ATTRIBUTES__IOProcess(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IOProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IOProcess(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction43;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction43(val_t self, char *from) {
-}
-val_t NEW_ReduceAction43_parser___ReduceAction43___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction43();
-  parser___ReduceAction43___init(self, init_table);
-  CHECKNEW_ReduceAction43(self, "parser::ReduceAction43::init for ReduceAction43");
-  return self;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_IOProcess;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IOProcess(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IOProcess;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_exec___IProcess____in(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_in", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_exec___Process____data(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_data", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_exec___OProcess____out(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_out", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction44[48] = {
-  {(bigint) 1667 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction44 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction44 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1667 /* 3: ReduceAction44 < ReduceAction44: superclass typecheck marker */},
+val_t NEW_IOProcess_exec___IOProcess___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 137;
+  fra.me.meth = LOCATE_NEW_IOProcess_exec___IOProcess___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//exec.nit:137 */
+  fra.me.REG[2] = NEW_IOProcess();
+  INIT_ATTRIBUTES__IOProcess(fra.me.REG[2]);
+  exec___IOProcess___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IOProcess(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_IOProcess_exec___IOProcess___init_(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 144;
+  fra.me.meth = LOCATE_NEW_IOProcess_exec___IOProcess___init_;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//exec.nit:144 */
+  fra.me.REG[1] = NEW_IOProcess();
+  INIT_ATTRIBUTES__IOProcess(fra.me.REG[1]);
+  exec___IOProcess___init_(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IOProcess(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_NativeProcess[54] = {
+  {(bigint) -17 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: NativeProcess < Object: superclass typecheck marker */},
+  {(bigint) -1 /* 3: NativeProcess < Pointer: superclass typecheck marker */},
+  {(bigint) -17 /* 4: NativeProcess < NativeProcess: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50821,14 +24120,9 @@ const classtable_elt_t VFT_ReduceAction44[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction44 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: NativeProcess < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50836,7 +24130,6 @@ const classtable_elt_t VFT_ReduceAction44[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50844,42 +24137,44 @@ const classtable_elt_t VFT_ReduceAction44[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction44 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction44___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction44 < ReduceAction44: superclass init_table position */},
-  {(bigint) parser___ReduceAction44___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: NativeProcess < Pointer: superclass init_table position */},
+  {(bigint) 2 /* 46: NativeProcess < NativeProcess: superclass init_table position */},
+  {(bigint) exec___NativeProcess___id},
+  {(bigint) exec___NativeProcess___is_finished},
+  {(bigint) exec___NativeProcess___status},
+  {(bigint) exec___NativeProcess___wait},
+  {(bigint) exec___NativeProcess___in_fd},
+  {(bigint) exec___NativeProcess___out_fd},
+  {(bigint) exec___NativeProcess___err_fd},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction44(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction44;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction44(val_t self, char *from) {
-}
-val_t NEW_ReduceAction44_parser___ReduceAction44___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction44();
-  parser___ReduceAction44___init(self, init_table);
-  CHECKNEW_ReduceAction44(self, "parser::ReduceAction44::init for ReduceAction44");
-  return self;
+/* 1: Object_id */
+val_t BOX_NativeProcess(void * val) {
+  struct TBOX_NativeProcess *box = (struct TBOX_NativeProcess*)alloc(sizeof(struct TBOX_NativeProcess));
+  box->vft = VFT_NativeProcess;
+  box->val = val;
+  box->object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_ReduceAction45[48] = {
-  {(bigint) 1623 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction45 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction45 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1623 /* 3: ReduceAction45 < ReduceAction45: superclass typecheck marker */},
+const classtable_elt_t VFT_Location[70] = {
+  {(bigint) 1979 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Location < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 243 /* 4: Location < Comparable: superclass typecheck marker */},
+  {(bigint) 1979 /* 5: Location < Location: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50891,22 +24186,16 @@ const classtable_elt_t VFT_ReduceAction45[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction45 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: Location < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
+  {(bigint) location___Location_____eqeq},
   {(bigint) kernel___Object_____neq},
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50914,44 +24203,168 @@ const classtable_elt_t VFT_ReduceAction45[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) location___Location___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction45 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction45___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction45 < ReduceAction45: superclass init_table position */},
-  {(bigint) parser___ReduceAction45___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction45(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction45;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction45(val_t self, char *from) {
-}
-val_t NEW_ReduceAction45_parser___ReduceAction45___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction45();
-  parser___ReduceAction45___init(self, init_table);
-  CHECKNEW_ReduceAction45(self, "parser::ReduceAction45::init for ReduceAction45");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction46[48] = {
-  {(bigint) 1579 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction46 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction46 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1579 /* 3: ReduceAction46 < ReduceAction46: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 0 /* 51: Location < Comparable: superclass init_table position */},
+  {(bigint) location___Location_____l},
+  {(bigint) kernel___Comparable_____leq},
+  {(bigint) kernel___Comparable_____geq},
+  {(bigint) kernel___Comparable_____g},
+  {(bigint) kernel___Comparable_____leqg},
+  {(bigint) kernel___Comparable___is_between},
+  {(bigint) kernel___Comparable___max},
+  {(bigint) kernel___Comparable___min},
+  {(bigint) 2 /* 60: Location < Location: superclass init_table position */},
+  {(bigint) location___Location___file},
+  {(bigint) location___Location___line_start},
+  {(bigint) location___Location___line_end},
+  {(bigint) location___Location___column_start},
+  {(bigint) location___Location___column_end},
+  {(bigint) location___Location___init},
+  {(bigint) location___Location___with_file},
+  {(bigint) location___Location___located_in},
+  {(bigint) location___Location___relative_to},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Location::_file */
+/* 3: Attribute Location::_line_start */
+/* 4: Attribute Location::_line_end */
+/* 5: Attribute Location::_column_start */
+/* 6: Attribute Location::_column_end */
+void INIT_ATTRIBUTES__Location(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Location;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Location(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_Location;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Location(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Location;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_location___Location____file(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_file", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_location___Location____line_start(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_line_start", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_location___Location____line_end(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_line_end", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_location___Location____column_start(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_column_start", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_location___Location____column_end(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_column_end", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Location_location___Location___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t REGB3;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 29;
+  fra.me.meth = LOCATE_NEW_Location_location___Location___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  REGB1 = p2;
+  REGB2 = p3;
+  REGB3 = p4;
+  /* ./location.nit:29 */
+  fra.me.REG[1] = NEW_Location();
+  INIT_ATTRIBUTES__Location(fra.me.REG[1]);
+  location___Location___init(fra.me.REG[1], fra.me.REG[0], REGB0, REGB1, REGB2, REGB3, init_table);
+  CHECKNEW_Location(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_Location_location___Location___with_file(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 37;
+  fra.me.meth = LOCATE_NEW_Location_location___Location___with_file;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./location.nit:37 */
+  fra.me.REG[1] = NEW_Location();
+  INIT_ATTRIBUTES__Location(fra.me.REG[1]);
+  location___Location___with_file(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_Location(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TEol[70] = {
+  {(bigint) 2479 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TEol < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TEol < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TEol < Token: superclass typecheck marker */},
+  {(bigint) 2479 /* 5: TEol < TEol: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50961,14 +24374,9 @@ const classtable_elt_t VFT_ReduceAction46[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction46 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TEol < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -50976,7 +24384,6 @@ const classtable_elt_t VFT_ReduceAction46[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -50984,42 +24391,138 @@ const classtable_elt_t VFT_ReduceAction46[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction46 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction46___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction46 < ReduceAction46: superclass init_table position */},
-  {(bigint) parser___ReduceAction46___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction46(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TEol < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TEol___parser_index},
+  {(bigint) 0 /* 67: TEol < Token: superclass init_table position */},
+  {(bigint) lexer___TEol___init_tk},
+  {(bigint) 3 /* 69: TEol < TEol: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TEol::_parent */
+/* 3: Attribute TEol::_location */
+/* 4: Attribute TEol::_symbol_cache */
+/* 5: Attribute TEol::_text */
+void INIT_ATTRIBUTES__TEol(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TEol;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TEol(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction46;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction46(val_t self, char *from) {
-}
-val_t NEW_ReduceAction46_parser___ReduceAction46___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction46();
-  parser___ReduceAction46___init(self, init_table);
-  CHECKNEW_ReduceAction46(self, "parser::ReduceAction46::init for ReduceAction46");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TEol;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TEol(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TEol;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction47[48] = {
-  {(bigint) 1535 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction47 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction47 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1535 /* 3: ReduceAction47 < ReduceAction47: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TEol_lexer___TEol___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 24;
+  fra.me.meth = LOCATE_NEW_TEol_lexer___TEol___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:24 */
+  fra.me.REG[2] = NEW_TEol();
+  INIT_ATTRIBUTES__TEol(fra.me.REG[2]);
+  lexer___TEol___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TEol(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TEol_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TEol_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TEol();
+  INIT_ATTRIBUTES__TEol(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TEol(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TComment[70] = {
+  {(bigint) 2503 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TComment < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TComment < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TComment < Token: superclass typecheck marker */},
+  {(bigint) 2503 /* 5: TComment < TComment: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51031,14 +24534,9 @@ const classtable_elt_t VFT_ReduceAction47[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction47 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TComment < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51046,7 +24544,6 @@ const classtable_elt_t VFT_ReduceAction47[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51054,42 +24551,138 @@ const classtable_elt_t VFT_ReduceAction47[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction47 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction47___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction47 < ReduceAction47: superclass init_table position */},
-  {(bigint) parser___ReduceAction47___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction47(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TComment < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TComment___parser_index},
+  {(bigint) 0 /* 67: TComment < Token: superclass init_table position */},
+  {(bigint) lexer___TComment___init_tk},
+  {(bigint) 3 /* 69: TComment < TComment: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TComment::_parent */
+/* 3: Attribute TComment::_location */
+/* 4: Attribute TComment::_symbol_cache */
+/* 5: Attribute TComment::_text */
+void INIT_ATTRIBUTES__TComment(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TComment;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TComment(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction47;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction47(val_t self, char *from) {
-}
-val_t NEW_ReduceAction47_parser___ReduceAction47___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction47();
-  parser___ReduceAction47___init(self, init_table);
-  CHECKNEW_ReduceAction47(self, "parser::ReduceAction47::init for ReduceAction47");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TComment;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TComment(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TComment;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction48[48] = {
-  {(bigint) 1491 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction48 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction48 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1491 /* 3: ReduceAction48 < ReduceAction48: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TComment_lexer___TComment___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 37;
+  fra.me.meth = LOCATE_NEW_TComment_lexer___TComment___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:37 */
+  fra.me.REG[2] = NEW_TComment();
+  INIT_ATTRIBUTES__TComment(fra.me.REG[2]);
+  lexer___TComment___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TComment(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TComment_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TComment_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TComment();
+  INIT_ATTRIBUTES__TComment(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TComment(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwmodule[70] = {
+  {(bigint) 2339 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwmodule < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwmodule < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwmodule < Token: superclass typecheck marker */},
+  {(bigint) 2339 /* 5: TKwmodule < TKwmodule: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51101,14 +24694,9 @@ const classtable_elt_t VFT_ReduceAction48[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction48 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwmodule < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51116,7 +24704,6 @@ const classtable_elt_t VFT_ReduceAction48[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51124,42 +24711,138 @@ const classtable_elt_t VFT_ReduceAction48[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction48 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction48___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction48 < ReduceAction48: superclass init_table position */},
-  {(bigint) parser___ReduceAction48___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction48(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwmodule < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwmodule___parser_index},
+  {(bigint) 0 /* 67: TKwmodule < Token: superclass init_table position */},
+  {(bigint) lexer___TKwmodule___init_tk},
+  {(bigint) 3 /* 69: TKwmodule < TKwmodule: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwmodule::_parent */
+/* 3: Attribute TKwmodule::_location */
+/* 4: Attribute TKwmodule::_symbol_cache */
+/* 5: Attribute TKwmodule::_text */
+void INIT_ATTRIBUTES__TKwmodule(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwmodule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwmodule(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction48;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction48(val_t self, char *from) {
-}
-val_t NEW_ReduceAction48_parser___ReduceAction48___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction48();
-  parser___ReduceAction48___init(self, init_table);
-  CHECKNEW_ReduceAction48(self, "parser::ReduceAction48::init for ReduceAction48");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwmodule;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwmodule(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwmodule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction49[48] = {
-  {(bigint) 1447 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction49 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction49 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1447 /* 3: ReduceAction49 < ReduceAction49: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwmodule_lexer___TKwmodule___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 50;
+  fra.me.meth = LOCATE_NEW_TKwmodule_lexer___TKwmodule___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:50 */
+  fra.me.REG[2] = NEW_TKwmodule();
+  INIT_ATTRIBUTES__TKwmodule(fra.me.REG[2]);
+  lexer___TKwmodule___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TKwmodule(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TKwmodule_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwmodule_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwmodule();
+  INIT_ATTRIBUTES__TKwmodule(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwmodule(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwimport[70] = {
+  {(bigint) 2387 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwimport < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwimport < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwimport < Token: superclass typecheck marker */},
+  {(bigint) 2387 /* 5: TKwimport < TKwimport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51171,14 +24854,9 @@ const classtable_elt_t VFT_ReduceAction49[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction49 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwimport < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51186,7 +24864,6 @@ const classtable_elt_t VFT_ReduceAction49[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51194,42 +24871,136 @@ const classtable_elt_t VFT_ReduceAction49[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction49 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction49___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction49 < ReduceAction49: superclass init_table position */},
-  {(bigint) parser___ReduceAction49___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction49(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwimport < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwimport___parser_index},
+  {(bigint) 0 /* 67: TKwimport < Token: superclass init_table position */},
+  {(bigint) lexer___TKwimport___init_tk},
+  {(bigint) 3 /* 69: TKwimport < TKwimport: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwimport::_parent */
+/* 3: Attribute TKwimport::_location */
+/* 4: Attribute TKwimport::_symbol_cache */
+/* 5: Attribute TKwimport::_text */
+void INIT_ATTRIBUTES__TKwimport(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwimport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwimport(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction49;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction49(val_t self, char *from) {
-}
-val_t NEW_ReduceAction49_parser___ReduceAction49___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction49();
-  parser___ReduceAction49___init(self, init_table);
-  CHECKNEW_ReduceAction49(self, "parser::ReduceAction49::init for ReduceAction49");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwimport;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwimport(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwimport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction50[48] = {
-  {(bigint) 1399 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction50 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction50 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1399 /* 3: ReduceAction50 < ReduceAction50: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwimport_lexer___TKwimport___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 63;
+  fra.me.meth = LOCATE_NEW_TKwimport_lexer___TKwimport___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:63 */
+  fra.me.REG[1] = NEW_TKwimport();
+  INIT_ATTRIBUTES__TKwimport(fra.me.REG[1]);
+  lexer___TKwimport___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwimport(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwimport_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwimport_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwimport();
+  INIT_ATTRIBUTES__TKwimport(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwimport(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwclass[70] = {
+  {(bigint) 2427 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwclass < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwclass < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwclass < Token: superclass typecheck marker */},
+  {(bigint) 2427 /* 5: TKwclass < TKwclass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51241,14 +25012,9 @@ const classtable_elt_t VFT_ReduceAction50[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction50 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwclass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51256,7 +25022,6 @@ const classtable_elt_t VFT_ReduceAction50[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51264,42 +25029,136 @@ const classtable_elt_t VFT_ReduceAction50[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction50 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction50___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction50 < ReduceAction50: superclass init_table position */},
-  {(bigint) parser___ReduceAction50___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction50(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwclass < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwclass___parser_index},
+  {(bigint) 0 /* 67: TKwclass < Token: superclass init_table position */},
+  {(bigint) lexer___TKwclass___init_tk},
+  {(bigint) 3 /* 69: TKwclass < TKwclass: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwclass::_parent */
+/* 3: Attribute TKwclass::_location */
+/* 4: Attribute TKwclass::_symbol_cache */
+/* 5: Attribute TKwclass::_text */
+void INIT_ATTRIBUTES__TKwclass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwclass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwclass(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction50;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction50(val_t self, char *from) {
-}
-val_t NEW_ReduceAction50_parser___ReduceAction50___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction50();
-  parser___ReduceAction50___init(self, init_table);
-  CHECKNEW_ReduceAction50(self, "parser::ReduceAction50::init for ReduceAction50");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwclass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwclass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwclass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction51[48] = {
-  {(bigint) 1355 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction51 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction51 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1355 /* 3: ReduceAction51 < ReduceAction51: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwclass_lexer___TKwclass___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 76;
+  fra.me.meth = LOCATE_NEW_TKwclass_lexer___TKwclass___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:76 */
+  fra.me.REG[1] = NEW_TKwclass();
+  INIT_ATTRIBUTES__TKwclass(fra.me.REG[1]);
+  lexer___TKwclass___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwclass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwclass_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwclass_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwclass();
+  INIT_ATTRIBUTES__TKwclass(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwclass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwabstract[70] = {
+  {(bigint) 2447 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwabstract < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwabstract < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwabstract < Token: superclass typecheck marker */},
+  {(bigint) 2447 /* 5: TKwabstract < TKwabstract: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51311,14 +25170,9 @@ const classtable_elt_t VFT_ReduceAction51[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction51 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwabstract < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51326,7 +25180,6 @@ const classtable_elt_t VFT_ReduceAction51[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51334,42 +25187,136 @@ const classtable_elt_t VFT_ReduceAction51[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction51 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction51___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction51 < ReduceAction51: superclass init_table position */},
-  {(bigint) parser___ReduceAction51___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction51(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) math___Object___pi},
+  {(bigint) math___Object___srand_from},
+  {(bigint) math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwabstract < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwabstract___parser_index},
+  {(bigint) 0 /* 67: TKwabstract < Token: superclass init_table position */},
+  {(bigint) lexer___TKwabstract___init_tk},
+  {(bigint) 3 /* 69: TKwabstract < TKwabstract: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwabstract::_parent */
+/* 3: Attribute TKwabstract::_location */
+/* 4: Attribute TKwabstract::_symbol_cache */
+/* 5: Attribute TKwabstract::_text */
+void INIT_ATTRIBUTES__TKwabstract(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwabstract;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwabstract(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction51;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction51(val_t self, char *from) {
-}
-val_t NEW_ReduceAction51_parser___ReduceAction51___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction51();
-  parser___ReduceAction51___init(self, init_table);
-  CHECKNEW_ReduceAction51(self, "parser::ReduceAction51::init for ReduceAction51");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwabstract;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwabstract(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwabstract;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction52[48] = {
-  {(bigint) 1311 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction52 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction52 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1311 /* 3: ReduceAction52 < ReduceAction52: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwabstract_lexer___TKwabstract___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 89;
+  fra.me.meth = LOCATE_NEW_TKwabstract_lexer___TKwabstract___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:89 */
+  fra.me.REG[1] = NEW_TKwabstract();
+  INIT_ATTRIBUTES__TKwabstract(fra.me.REG[1]);
+  lexer___TKwabstract___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwabstract(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwabstract_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwabstract_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwabstract();
+  INIT_ATTRIBUTES__TKwabstract(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwabstract(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwinterface[70] = {
+  {(bigint) 2375 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwinterface < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwinterface < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwinterface < Token: superclass typecheck marker */},
+  {(bigint) 2375 /* 5: TKwinterface < TKwinterface: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51381,14 +25328,9 @@ const classtable_elt_t VFT_ReduceAction52[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction52 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwinterface < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51396,7 +25338,6 @@ const classtable_elt_t VFT_ReduceAction52[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51404,42 +25345,136 @@ const classtable_elt_t VFT_ReduceAction52[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction52 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction52___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction52 < ReduceAction52: superclass init_table position */},
-  {(bigint) parser___ReduceAction52___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction52(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwinterface < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwinterface___parser_index},
+  {(bigint) 0 /* 67: TKwinterface < Token: superclass init_table position */},
+  {(bigint) lexer___TKwinterface___init_tk},
+  {(bigint) 3 /* 69: TKwinterface < TKwinterface: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwinterface::_parent */
+/* 3: Attribute TKwinterface::_location */
+/* 4: Attribute TKwinterface::_symbol_cache */
+/* 5: Attribute TKwinterface::_text */
+void INIT_ATTRIBUTES__TKwinterface(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwinterface;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwinterface(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction52;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction52(val_t self, char *from) {
-}
-val_t NEW_ReduceAction52_parser___ReduceAction52___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction52();
-  parser___ReduceAction52___init(self, init_table);
-  CHECKNEW_ReduceAction52(self, "parser::ReduceAction52::init for ReduceAction52");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwinterface;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwinterface(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwinterface;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction53[48] = {
-  {(bigint) 1267 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction53 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction53 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1267 /* 3: ReduceAction53 < ReduceAction53: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwinterface_lexer___TKwinterface___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 102;
+  fra.me.meth = LOCATE_NEW_TKwinterface_lexer___TKwinterface___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:102 */
+  fra.me.REG[1] = NEW_TKwinterface();
+  INIT_ATTRIBUTES__TKwinterface(fra.me.REG[1]);
+  lexer___TKwinterface___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwinterface(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwinterface_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwinterface_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwinterface();
+  INIT_ATTRIBUTES__TKwinterface(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwinterface(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwenum[70] = {
+  {(bigint) 2407 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwenum < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwenum < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwenum < Token: superclass typecheck marker */},
+  {(bigint) 2407 /* 5: TKwenum < TKwenum: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51451,14 +25486,9 @@ const classtable_elt_t VFT_ReduceAction53[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction53 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwenum < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51466,7 +25496,6 @@ const classtable_elt_t VFT_ReduceAction53[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51474,42 +25503,138 @@ const classtable_elt_t VFT_ReduceAction53[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction53 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction53___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction53 < ReduceAction53: superclass init_table position */},
-  {(bigint) parser___ReduceAction53___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction53(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwenum < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwenum___parser_index},
+  {(bigint) 0 /* 67: TKwenum < Token: superclass init_table position */},
+  {(bigint) lexer___TKwenum___init_tk},
+  {(bigint) 3 /* 69: TKwenum < TKwenum: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwenum::_parent */
+/* 3: Attribute TKwenum::_location */
+/* 4: Attribute TKwenum::_symbol_cache */
+/* 5: Attribute TKwenum::_text */
+void INIT_ATTRIBUTES__TKwenum(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwenum;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwenum(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction53;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction53(val_t self, char *from) {
-}
-val_t NEW_ReduceAction53_parser___ReduceAction53___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction53();
-  parser___ReduceAction53___init(self, init_table);
-  CHECKNEW_ReduceAction53(self, "parser::ReduceAction53::init for ReduceAction53");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwenum;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwenum(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwenum;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction54[48] = {
-  {(bigint) 1223 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction54 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction54 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1223 /* 3: ReduceAction54 < ReduceAction54: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwenum_lexer___TKwenum___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 115;
+  fra.me.meth = LOCATE_NEW_TKwenum_lexer___TKwenum___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:115 */
+  fra.me.REG[2] = NEW_TKwenum();
+  INIT_ATTRIBUTES__TKwenum(fra.me.REG[2]);
+  lexer___TKwenum___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TKwenum(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TKwenum_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwenum_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwenum();
+  INIT_ATTRIBUTES__TKwenum(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwenum(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwspecial[70] = {
+  {(bigint) 2287 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwspecial < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwspecial < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwspecial < Token: superclass typecheck marker */},
+  {(bigint) 2287 /* 5: TKwspecial < TKwspecial: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51521,14 +25646,9 @@ const classtable_elt_t VFT_ReduceAction54[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction54 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwspecial < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51536,7 +25656,6 @@ const classtable_elt_t VFT_ReduceAction54[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51544,42 +25663,136 @@ const classtable_elt_t VFT_ReduceAction54[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction54 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction54___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction54 < ReduceAction54: superclass init_table position */},
-  {(bigint) parser___ReduceAction54___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction54(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwspecial < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwspecial___parser_index},
+  {(bigint) 0 /* 67: TKwspecial < Token: superclass init_table position */},
+  {(bigint) lexer___TKwspecial___init_tk},
+  {(bigint) 3 /* 69: TKwspecial < TKwspecial: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwspecial::_parent */
+/* 3: Attribute TKwspecial::_location */
+/* 4: Attribute TKwspecial::_symbol_cache */
+/* 5: Attribute TKwspecial::_text */
+void INIT_ATTRIBUTES__TKwspecial(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwspecial;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwspecial(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction54;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction54(val_t self, char *from) {
-}
-val_t NEW_ReduceAction54_parser___ReduceAction54___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction54();
-  parser___ReduceAction54___init(self, init_table);
-  CHECKNEW_ReduceAction54(self, "parser::ReduceAction54::init for ReduceAction54");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwspecial;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwspecial(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwspecial;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction55[48] = {
-  {(bigint) 1179 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction55 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction55 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1179 /* 3: ReduceAction55 < ReduceAction55: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwspecial_lexer___TKwspecial___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 128;
+  fra.me.meth = LOCATE_NEW_TKwspecial_lexer___TKwspecial___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:128 */
+  fra.me.REG[1] = NEW_TKwspecial();
+  INIT_ATTRIBUTES__TKwspecial(fra.me.REG[1]);
+  lexer___TKwspecial___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwspecial(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwspecial_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwspecial_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwspecial();
+  INIT_ATTRIBUTES__TKwspecial(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwspecial(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwend[70] = {
+  {(bigint) 2411 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwend < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwend < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwend < Token: superclass typecheck marker */},
+  {(bigint) 2411 /* 5: TKwend < TKwend: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51591,14 +25804,9 @@ const classtable_elt_t VFT_ReduceAction55[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction55 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwend < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51606,7 +25814,6 @@ const classtable_elt_t VFT_ReduceAction55[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51614,42 +25821,136 @@ const classtable_elt_t VFT_ReduceAction55[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction55 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction55___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction55 < ReduceAction55: superclass init_table position */},
-  {(bigint) parser___ReduceAction55___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction55(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwend < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwend___parser_index},
+  {(bigint) 0 /* 67: TKwend < Token: superclass init_table position */},
+  {(bigint) lexer___TKwend___init_tk},
+  {(bigint) 3 /* 69: TKwend < TKwend: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwend::_parent */
+/* 3: Attribute TKwend::_location */
+/* 4: Attribute TKwend::_symbol_cache */
+/* 5: Attribute TKwend::_text */
+void INIT_ATTRIBUTES__TKwend(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwend;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwend(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction55;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction55(val_t self, char *from) {
-}
-val_t NEW_ReduceAction55_parser___ReduceAction55___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction55();
-  parser___ReduceAction55___init(self, init_table);
-  CHECKNEW_ReduceAction55(self, "parser::ReduceAction55::init for ReduceAction55");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwend;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwend(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwend;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction56[48] = {
-  {(bigint) 1135 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction56 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction56 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1135 /* 3: ReduceAction56 < ReduceAction56: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwend_lexer___TKwend___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 141;
+  fra.me.meth = LOCATE_NEW_TKwend_lexer___TKwend___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:141 */
+  fra.me.REG[1] = NEW_TKwend();
+  INIT_ATTRIBUTES__TKwend(fra.me.REG[1]);
+  lexer___TKwend___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwend(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwend_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwend_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwend();
+  INIT_ATTRIBUTES__TKwend(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwend(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwmeth[70] = {
+  {(bigint) 2343 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwmeth < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwmeth < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwmeth < Token: superclass typecheck marker */},
+  {(bigint) 2343 /* 5: TKwmeth < TKwmeth: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51661,14 +25962,9 @@ const classtable_elt_t VFT_ReduceAction56[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction56 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwmeth < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51676,7 +25972,6 @@ const classtable_elt_t VFT_ReduceAction56[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51684,42 +25979,136 @@ const classtable_elt_t VFT_ReduceAction56[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction56 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction56___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction56 < ReduceAction56: superclass init_table position */},
-  {(bigint) parser___ReduceAction56___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction56(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwmeth < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwmeth___parser_index},
+  {(bigint) 0 /* 67: TKwmeth < Token: superclass init_table position */},
+  {(bigint) lexer___TKwmeth___init_tk},
+  {(bigint) 3 /* 69: TKwmeth < TKwmeth: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwmeth::_parent */
+/* 3: Attribute TKwmeth::_location */
+/* 4: Attribute TKwmeth::_symbol_cache */
+/* 5: Attribute TKwmeth::_text */
+void INIT_ATTRIBUTES__TKwmeth(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwmeth;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwmeth(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction56;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction56(val_t self, char *from) {
-}
-val_t NEW_ReduceAction56_parser___ReduceAction56___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction56();
-  parser___ReduceAction56___init(self, init_table);
-  CHECKNEW_ReduceAction56(self, "parser::ReduceAction56::init for ReduceAction56");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwmeth;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwmeth(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwmeth;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction57[48] = {
-  {(bigint) 1091 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction57 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction57 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1091 /* 3: ReduceAction57 < ReduceAction57: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwmeth_lexer___TKwmeth___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 154;
+  fra.me.meth = LOCATE_NEW_TKwmeth_lexer___TKwmeth___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:154 */
+  fra.me.REG[1] = NEW_TKwmeth();
+  INIT_ATTRIBUTES__TKwmeth(fra.me.REG[1]);
+  lexer___TKwmeth___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwmeth(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwmeth_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwmeth_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwmeth();
+  INIT_ATTRIBUTES__TKwmeth(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwmeth(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwtype[70] = {
+  {(bigint) 2271 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwtype < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwtype < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwtype < Token: superclass typecheck marker */},
+  {(bigint) 2271 /* 5: TKwtype < TKwtype: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51731,14 +26120,9 @@ const classtable_elt_t VFT_ReduceAction57[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction57 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwtype < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51746,7 +26130,6 @@ const classtable_elt_t VFT_ReduceAction57[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51754,42 +26137,136 @@ const classtable_elt_t VFT_ReduceAction57[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction57 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction57___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction57 < ReduceAction57: superclass init_table position */},
-  {(bigint) parser___ReduceAction57___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction57(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwtype < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwtype___parser_index},
+  {(bigint) 0 /* 67: TKwtype < Token: superclass init_table position */},
+  {(bigint) lexer___TKwtype___init_tk},
+  {(bigint) 3 /* 69: TKwtype < TKwtype: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwtype::_parent */
+/* 3: Attribute TKwtype::_location */
+/* 4: Attribute TKwtype::_symbol_cache */
+/* 5: Attribute TKwtype::_text */
+void INIT_ATTRIBUTES__TKwtype(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwtype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwtype(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction57;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction57(val_t self, char *from) {
-}
-val_t NEW_ReduceAction57_parser___ReduceAction57___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction57();
-  parser___ReduceAction57___init(self, init_table);
-  CHECKNEW_ReduceAction57(self, "parser::ReduceAction57::init for ReduceAction57");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwtype;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwtype(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwtype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction58[48] = {
-  {(bigint) 1047 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction58 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction58 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1047 /* 3: ReduceAction58 < ReduceAction58: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwtype_lexer___TKwtype___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 167;
+  fra.me.meth = LOCATE_NEW_TKwtype_lexer___TKwtype___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:167 */
+  fra.me.REG[1] = NEW_TKwtype();
+  INIT_ATTRIBUTES__TKwtype(fra.me.REG[1]);
+  lexer___TKwtype___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwtype(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwtype_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwtype_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwtype();
+  INIT_ATTRIBUTES__TKwtype(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwtype(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwinit[70] = {
+  {(bigint) 2379 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwinit < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwinit < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwinit < Token: superclass typecheck marker */},
+  {(bigint) 2379 /* 5: TKwinit < TKwinit: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51801,14 +26278,9 @@ const classtable_elt_t VFT_ReduceAction58[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction58 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwinit < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51816,7 +26288,6 @@ const classtable_elt_t VFT_ReduceAction58[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51824,42 +26295,136 @@ const classtable_elt_t VFT_ReduceAction58[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction58 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction58___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction58 < ReduceAction58: superclass init_table position */},
-  {(bigint) parser___ReduceAction58___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction58(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwinit < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwinit___parser_index},
+  {(bigint) 0 /* 67: TKwinit < Token: superclass init_table position */},
+  {(bigint) lexer___TKwinit___init_tk},
+  {(bigint) 3 /* 69: TKwinit < TKwinit: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwinit::_parent */
+/* 3: Attribute TKwinit::_location */
+/* 4: Attribute TKwinit::_symbol_cache */
+/* 5: Attribute TKwinit::_text */
+void INIT_ATTRIBUTES__TKwinit(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwinit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwinit(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction58;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction58(val_t self, char *from) {
-}
-val_t NEW_ReduceAction58_parser___ReduceAction58___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction58();
-  parser___ReduceAction58___init(self, init_table);
-  CHECKNEW_ReduceAction58(self, "parser::ReduceAction58::init for ReduceAction58");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwinit;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwinit(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwinit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction59[48] = {
-  {(bigint) 1003 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction59 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction59 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1003 /* 3: ReduceAction59 < ReduceAction59: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwinit_lexer___TKwinit___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 180;
+  fra.me.meth = LOCATE_NEW_TKwinit_lexer___TKwinit___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:180 */
+  fra.me.REG[1] = NEW_TKwinit();
+  INIT_ATTRIBUTES__TKwinit(fra.me.REG[1]);
+  lexer___TKwinit___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwinit(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwinit_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwinit_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwinit();
+  INIT_ATTRIBUTES__TKwinit(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwinit(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwredef[70] = {
+  {(bigint) 2299 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwredef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwredef < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwredef < Token: superclass typecheck marker */},
+  {(bigint) 2299 /* 5: TKwredef < TKwredef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51871,14 +26436,9 @@ const classtable_elt_t VFT_ReduceAction59[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction59 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwredef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51886,7 +26446,6 @@ const classtable_elt_t VFT_ReduceAction59[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51894,42 +26453,136 @@ const classtable_elt_t VFT_ReduceAction59[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction59 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction59___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction59 < ReduceAction59: superclass init_table position */},
-  {(bigint) parser___ReduceAction59___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction59(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwredef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwredef___parser_index},
+  {(bigint) 0 /* 67: TKwredef < Token: superclass init_table position */},
+  {(bigint) lexer___TKwredef___init_tk},
+  {(bigint) 3 /* 69: TKwredef < TKwredef: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwredef::_parent */
+/* 3: Attribute TKwredef::_location */
+/* 4: Attribute TKwredef::_symbol_cache */
+/* 5: Attribute TKwredef::_text */
+void INIT_ATTRIBUTES__TKwredef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwredef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwredef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction59;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction59(val_t self, char *from) {
-}
-val_t NEW_ReduceAction59_parser___ReduceAction59___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction59();
-  parser___ReduceAction59___init(self, init_table);
-  CHECKNEW_ReduceAction59(self, "parser::ReduceAction59::init for ReduceAction59");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwredef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwredef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwredef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction60[48] = {
-  {(bigint) 955 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction60 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction60 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 955 /* 3: ReduceAction60 < ReduceAction60: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwredef_lexer___TKwredef___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 193;
+  fra.me.meth = LOCATE_NEW_TKwredef_lexer___TKwredef___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:193 */
+  fra.me.REG[1] = NEW_TKwredef();
+  INIT_ATTRIBUTES__TKwredef(fra.me.REG[1]);
+  lexer___TKwredef___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwredef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwredef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwredef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwredef();
+  INIT_ATTRIBUTES__TKwredef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwredef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwis[70] = {
+  {(bigint) 2363 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwis < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwis < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwis < Token: superclass typecheck marker */},
+  {(bigint) 2363 /* 5: TKwis < TKwis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51941,14 +26594,9 @@ const classtable_elt_t VFT_ReduceAction60[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction60 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwis < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -51956,7 +26604,6 @@ const classtable_elt_t VFT_ReduceAction60[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -51964,42 +26611,136 @@ const classtable_elt_t VFT_ReduceAction60[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction60 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction60___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction60 < ReduceAction60: superclass init_table position */},
-  {(bigint) parser___ReduceAction60___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction60(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwis < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwis___parser_index},
+  {(bigint) 0 /* 67: TKwis < Token: superclass init_table position */},
+  {(bigint) lexer___TKwis___init_tk},
+  {(bigint) 3 /* 69: TKwis < TKwis: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwis::_parent */
+/* 3: Attribute TKwis::_location */
+/* 4: Attribute TKwis::_symbol_cache */
+/* 5: Attribute TKwis::_text */
+void INIT_ATTRIBUTES__TKwis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwis(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction60;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction60(val_t self, char *from) {
-}
-val_t NEW_ReduceAction60_parser___ReduceAction60___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction60();
-  parser___ReduceAction60___init(self, init_table);
-  CHECKNEW_ReduceAction60(self, "parser::ReduceAction60::init for ReduceAction60");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwis;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction61[48] = {
-  {(bigint) 911 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction61 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction61 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 911 /* 3: ReduceAction61 < ReduceAction61: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwis_lexer___TKwis___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 206;
+  fra.me.meth = LOCATE_NEW_TKwis_lexer___TKwis___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:206 */
+  fra.me.REG[1] = NEW_TKwis();
+  INIT_ATTRIBUTES__TKwis(fra.me.REG[1]);
+  lexer___TKwis___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwis(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwis_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwis_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwis();
+  INIT_ATTRIBUTES__TKwis(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwis(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwdo[70] = {
+  {(bigint) 2419 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwdo < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwdo < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwdo < Token: superclass typecheck marker */},
+  {(bigint) 2419 /* 5: TKwdo < TKwdo: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52011,14 +26752,9 @@ const classtable_elt_t VFT_ReduceAction61[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction61 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwdo < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52026,7 +26762,6 @@ const classtable_elt_t VFT_ReduceAction61[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52034,42 +26769,136 @@ const classtable_elt_t VFT_ReduceAction61[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction61 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction61___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction61 < ReduceAction61: superclass init_table position */},
-  {(bigint) parser___ReduceAction61___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction61(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwdo < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwdo___parser_index},
+  {(bigint) 0 /* 67: TKwdo < Token: superclass init_table position */},
+  {(bigint) lexer___TKwdo___init_tk},
+  {(bigint) 3 /* 69: TKwdo < TKwdo: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwdo::_parent */
+/* 3: Attribute TKwdo::_location */
+/* 4: Attribute TKwdo::_symbol_cache */
+/* 5: Attribute TKwdo::_text */
+void INIT_ATTRIBUTES__TKwdo(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwdo;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwdo(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction61;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction61(val_t self, char *from) {
-}
-val_t NEW_ReduceAction61_parser___ReduceAction61___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction61();
-  parser___ReduceAction61___init(self, init_table);
-  CHECKNEW_ReduceAction61(self, "parser::ReduceAction61::init for ReduceAction61");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwdo;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwdo(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwdo;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction62[48] = {
-  {(bigint) 867 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction62 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction62 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 867 /* 3: ReduceAction62 < ReduceAction62: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwdo_lexer___TKwdo___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 219;
+  fra.me.meth = LOCATE_NEW_TKwdo_lexer___TKwdo___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:219 */
+  fra.me.REG[1] = NEW_TKwdo();
+  INIT_ATTRIBUTES__TKwdo(fra.me.REG[1]);
+  lexer___TKwdo___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwdo(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwdo_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwdo_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwdo();
+  INIT_ATTRIBUTES__TKwdo(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwdo(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwreadable[70] = {
+  {(bigint) 2303 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwreadable < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwreadable < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwreadable < Token: superclass typecheck marker */},
+  {(bigint) 2303 /* 5: TKwreadable < TKwreadable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52081,14 +26910,9 @@ const classtable_elt_t VFT_ReduceAction62[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction62 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwreadable < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52096,7 +26920,6 @@ const classtable_elt_t VFT_ReduceAction62[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52104,42 +26927,136 @@ const classtable_elt_t VFT_ReduceAction62[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction62 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction62___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction62 < ReduceAction62: superclass init_table position */},
-  {(bigint) parser___ReduceAction62___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction62(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwreadable < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwreadable___parser_index},
+  {(bigint) 0 /* 67: TKwreadable < Token: superclass init_table position */},
+  {(bigint) lexer___TKwreadable___init_tk},
+  {(bigint) 3 /* 69: TKwreadable < TKwreadable: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwreadable::_parent */
+/* 3: Attribute TKwreadable::_location */
+/* 4: Attribute TKwreadable::_symbol_cache */
+/* 5: Attribute TKwreadable::_text */
+void INIT_ATTRIBUTES__TKwreadable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwreadable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwreadable(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction62;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction62(val_t self, char *from) {
-}
-val_t NEW_ReduceAction62_parser___ReduceAction62___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction62();
-  parser___ReduceAction62___init(self, init_table);
-  CHECKNEW_ReduceAction62(self, "parser::ReduceAction62::init for ReduceAction62");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwreadable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwreadable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwreadable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction63[48] = {
-  {(bigint) 823 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction63 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction63 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 823 /* 3: ReduceAction63 < ReduceAction63: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwreadable_lexer___TKwreadable___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 232;
+  fra.me.meth = LOCATE_NEW_TKwreadable_lexer___TKwreadable___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:232 */
+  fra.me.REG[1] = NEW_TKwreadable();
+  INIT_ATTRIBUTES__TKwreadable(fra.me.REG[1]);
+  lexer___TKwreadable___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwreadable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwreadable_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwreadable_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwreadable();
+  INIT_ATTRIBUTES__TKwreadable(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwreadable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwwritable[70] = {
+  {(bigint) 2259 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwwritable < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwwritable < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwwritable < Token: superclass typecheck marker */},
+  {(bigint) 2259 /* 5: TKwwritable < TKwwritable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52151,14 +27068,9 @@ const classtable_elt_t VFT_ReduceAction63[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction63 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwwritable < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52166,7 +27078,6 @@ const classtable_elt_t VFT_ReduceAction63[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52174,46 +27085,136 @@ const classtable_elt_t VFT_ReduceAction63[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction63 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction63___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction63 < ReduceAction63: superclass init_table position */},
-  {(bigint) parser___ReduceAction63___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction63(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwwritable < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwwritable___parser_index},
+  {(bigint) 0 /* 67: TKwwritable < Token: superclass init_table position */},
+  {(bigint) lexer___TKwwritable___init_tk},
+  {(bigint) 3 /* 69: TKwwritable < TKwwritable: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwwritable::_parent */
+/* 3: Attribute TKwwritable::_location */
+/* 4: Attribute TKwwritable::_symbol_cache */
+/* 5: Attribute TKwwritable::_text */
+void INIT_ATTRIBUTES__TKwwritable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwwritable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwwritable(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction63;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction63(val_t self, char *from) {
-}
-val_t NEW_ReduceAction63_parser___ReduceAction63___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction63();
-  parser___ReduceAction63___init(self, init_table);
-  CHECKNEW_ReduceAction63(self, "parser::ReduceAction63::init for ReduceAction63");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwwritable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwwritable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwwritable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction64[48] = {
-  {(bigint) 779 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction64 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction64 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 779 /* 3: ReduceAction64 < ReduceAction64: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_TKwwritable_lexer___TKwwritable___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 245;
+  fra.me.meth = LOCATE_NEW_TKwwritable_lexer___TKwwritable___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:245 */
+  fra.me.REG[1] = NEW_TKwwritable();
+  INIT_ATTRIBUTES__TKwwritable(fra.me.REG[1]);
+  lexer___TKwwritable___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwwritable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwwritable_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwwritable_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwwritable();
+  INIT_ATTRIBUTES__TKwwritable(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwwritable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwvar[70] = {
+  {(bigint) 2267 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwvar < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwvar < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwvar < Token: superclass typecheck marker */},
+  {(bigint) 2267 /* 5: TKwvar < TKwvar: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52221,14 +27222,13 @@ const classtable_elt_t VFT_ReduceAction64[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction64 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwvar < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52236,7 +27236,6 @@ const classtable_elt_t VFT_ReduceAction64[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52244,42 +27243,136 @@ const classtable_elt_t VFT_ReduceAction64[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction64 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction64___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction64 < ReduceAction64: superclass init_table position */},
-  {(bigint) parser___ReduceAction64___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction64(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwvar < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwvar___parser_index},
+  {(bigint) 0 /* 67: TKwvar < Token: superclass init_table position */},
+  {(bigint) lexer___TKwvar___init_tk},
+  {(bigint) 3 /* 69: TKwvar < TKwvar: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwvar::_parent */
+/* 3: Attribute TKwvar::_location */
+/* 4: Attribute TKwvar::_symbol_cache */
+/* 5: Attribute TKwvar::_text */
+void INIT_ATTRIBUTES__TKwvar(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwvar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwvar(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction64;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction64(val_t self, char *from) {
-}
-val_t NEW_ReduceAction64_parser___ReduceAction64___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction64();
-  parser___ReduceAction64___init(self, init_table);
-  CHECKNEW_ReduceAction64(self, "parser::ReduceAction64::init for ReduceAction64");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwvar;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwvar(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwvar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction65[48] = {
-  {(bigint) 735 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction65 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction65 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 735 /* 3: ReduceAction65 < ReduceAction65: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwvar_lexer___TKwvar___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 258;
+  fra.me.meth = LOCATE_NEW_TKwvar_lexer___TKwvar___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:258 */
+  fra.me.REG[1] = NEW_TKwvar();
+  INIT_ATTRIBUTES__TKwvar(fra.me.REG[1]);
+  lexer___TKwvar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwvar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwvar_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwvar_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwvar();
+  INIT_ATTRIBUTES__TKwvar(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwvar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwintern[70] = {
+  {(bigint) 2371 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwintern < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwintern < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwintern < Token: superclass typecheck marker */},
+  {(bigint) 2371 /* 5: TKwintern < TKwintern: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52291,14 +27384,9 @@ const classtable_elt_t VFT_ReduceAction65[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction65 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwintern < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52306,7 +27394,6 @@ const classtable_elt_t VFT_ReduceAction65[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52314,42 +27401,136 @@ const classtable_elt_t VFT_ReduceAction65[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction65 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction65___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction65 < ReduceAction65: superclass init_table position */},
-  {(bigint) parser___ReduceAction65___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction65(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwintern < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwintern___parser_index},
+  {(bigint) 0 /* 67: TKwintern < Token: superclass init_table position */},
+  {(bigint) lexer___TKwintern___init_tk},
+  {(bigint) 3 /* 69: TKwintern < TKwintern: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwintern::_parent */
+/* 3: Attribute TKwintern::_location */
+/* 4: Attribute TKwintern::_symbol_cache */
+/* 5: Attribute TKwintern::_text */
+void INIT_ATTRIBUTES__TKwintern(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwintern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwintern(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction65;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction65(val_t self, char *from) {
-}
-val_t NEW_ReduceAction65_parser___ReduceAction65___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction65();
-  parser___ReduceAction65___init(self, init_table);
-  CHECKNEW_ReduceAction65(self, "parser::ReduceAction65::init for ReduceAction65");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwintern;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwintern(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwintern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction66[48] = {
-  {(bigint) 691 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction66 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction66 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 691 /* 3: ReduceAction66 < ReduceAction66: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwintern_lexer___TKwintern___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 271;
+  fra.me.meth = LOCATE_NEW_TKwintern_lexer___TKwintern___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:271 */
+  fra.me.REG[1] = NEW_TKwintern();
+  INIT_ATTRIBUTES__TKwintern(fra.me.REG[1]);
+  lexer___TKwintern___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwintern(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwintern_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwintern_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwintern();
+  INIT_ATTRIBUTES__TKwintern(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwintern(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwextern[70] = {
+  {(bigint) 2403 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwextern < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwextern < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwextern < Token: superclass typecheck marker */},
+  {(bigint) 2403 /* 5: TKwextern < TKwextern: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52361,14 +27542,9 @@ const classtable_elt_t VFT_ReduceAction66[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction66 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwextern < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52376,7 +27552,6 @@ const classtable_elt_t VFT_ReduceAction66[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52384,42 +27559,136 @@ const classtable_elt_t VFT_ReduceAction66[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction66 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction66___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction66 < ReduceAction66: superclass init_table position */},
-  {(bigint) parser___ReduceAction66___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction66(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwextern < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwextern___parser_index},
+  {(bigint) 0 /* 67: TKwextern < Token: superclass init_table position */},
+  {(bigint) lexer___TKwextern___init_tk},
+  {(bigint) 3 /* 69: TKwextern < TKwextern: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwextern::_parent */
+/* 3: Attribute TKwextern::_location */
+/* 4: Attribute TKwextern::_symbol_cache */
+/* 5: Attribute TKwextern::_text */
+void INIT_ATTRIBUTES__TKwextern(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwextern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwextern(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction66;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction66(val_t self, char *from) {
-}
-val_t NEW_ReduceAction66_parser___ReduceAction66___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction66();
-  parser___ReduceAction66___init(self, init_table);
-  CHECKNEW_ReduceAction66(self, "parser::ReduceAction66::init for ReduceAction66");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwextern;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwextern(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwextern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction67[48] = {
-  {(bigint) 647 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction67 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction67 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 647 /* 3: ReduceAction67 < ReduceAction67: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwextern_lexer___TKwextern___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 284;
+  fra.me.meth = LOCATE_NEW_TKwextern_lexer___TKwextern___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:284 */
+  fra.me.REG[1] = NEW_TKwextern();
+  INIT_ATTRIBUTES__TKwextern(fra.me.REG[1]);
+  lexer___TKwextern___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwextern(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwextern_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwextern_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwextern();
+  INIT_ATTRIBUTES__TKwextern(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwextern(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwprotected[70] = {
+  {(bigint) 2307 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwprotected < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwprotected < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwprotected < Token: superclass typecheck marker */},
+  {(bigint) 2307 /* 5: TKwprotected < TKwprotected: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52431,14 +27700,9 @@ const classtable_elt_t VFT_ReduceAction67[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction67 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwprotected < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52446,7 +27710,6 @@ const classtable_elt_t VFT_ReduceAction67[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52454,42 +27717,136 @@ const classtable_elt_t VFT_ReduceAction67[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction67 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction67___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction67 < ReduceAction67: superclass init_table position */},
-  {(bigint) parser___ReduceAction67___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction67(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwprotected < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwprotected___parser_index},
+  {(bigint) 0 /* 67: TKwprotected < Token: superclass init_table position */},
+  {(bigint) lexer___TKwprotected___init_tk},
+  {(bigint) 3 /* 69: TKwprotected < TKwprotected: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwprotected::_parent */
+/* 3: Attribute TKwprotected::_location */
+/* 4: Attribute TKwprotected::_symbol_cache */
+/* 5: Attribute TKwprotected::_text */
+void INIT_ATTRIBUTES__TKwprotected(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwprotected;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwprotected(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction67;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction67(val_t self, char *from) {
-}
-val_t NEW_ReduceAction67_parser___ReduceAction67___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction67();
-  parser___ReduceAction67___init(self, init_table);
-  CHECKNEW_ReduceAction67(self, "parser::ReduceAction67::init for ReduceAction67");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwprotected;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwprotected(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwprotected;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction68[48] = {
-  {(bigint) 603 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction68 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction68 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 603 /* 3: ReduceAction68 < ReduceAction68: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwprotected_lexer___TKwprotected___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 297;
+  fra.me.meth = LOCATE_NEW_TKwprotected_lexer___TKwprotected___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:297 */
+  fra.me.REG[1] = NEW_TKwprotected();
+  INIT_ATTRIBUTES__TKwprotected(fra.me.REG[1]);
+  lexer___TKwprotected___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwprotected(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwprotected_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwprotected_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwprotected();
+  INIT_ATTRIBUTES__TKwprotected(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwprotected(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwprivate[70] = {
+  {(bigint) 2311 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwprivate < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwprivate < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwprivate < Token: superclass typecheck marker */},
+  {(bigint) 2311 /* 5: TKwprivate < TKwprivate: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52501,14 +27858,9 @@ const classtable_elt_t VFT_ReduceAction68[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction68 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwprivate < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52516,7 +27868,6 @@ const classtable_elt_t VFT_ReduceAction68[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52524,42 +27875,136 @@ const classtable_elt_t VFT_ReduceAction68[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction68 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction68___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction68 < ReduceAction68: superclass init_table position */},
-  {(bigint) parser___ReduceAction68___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction68(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwprivate < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwprivate___parser_index},
+  {(bigint) 0 /* 67: TKwprivate < Token: superclass init_table position */},
+  {(bigint) lexer___TKwprivate___init_tk},
+  {(bigint) 3 /* 69: TKwprivate < TKwprivate: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwprivate::_parent */
+/* 3: Attribute TKwprivate::_location */
+/* 4: Attribute TKwprivate::_symbol_cache */
+/* 5: Attribute TKwprivate::_text */
+void INIT_ATTRIBUTES__TKwprivate(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwprivate;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwprivate(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction68;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction68(val_t self, char *from) {
-}
-val_t NEW_ReduceAction68_parser___ReduceAction68___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction68();
-  parser___ReduceAction68___init(self, init_table);
-  CHECKNEW_ReduceAction68(self, "parser::ReduceAction68::init for ReduceAction68");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwprivate;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwprivate(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwprivate;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction69[48] = {
-  {(bigint) 559 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction69 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction69 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 559 /* 3: ReduceAction69 < ReduceAction69: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwprivate_lexer___TKwprivate___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 310;
+  fra.me.meth = LOCATE_NEW_TKwprivate_lexer___TKwprivate___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:310 */
+  fra.me.REG[1] = NEW_TKwprivate();
+  INIT_ATTRIBUTES__TKwprivate(fra.me.REG[1]);
+  lexer___TKwprivate___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwprivate(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwprivate_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwprivate_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwprivate();
+  INIT_ATTRIBUTES__TKwprivate(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwprivate(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwintrude[70] = {
+  {(bigint) 2367 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwintrude < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwintrude < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwintrude < Token: superclass typecheck marker */},
+  {(bigint) 2367 /* 5: TKwintrude < TKwintrude: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52571,14 +28016,9 @@ const classtable_elt_t VFT_ReduceAction69[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction69 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwintrude < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52586,7 +28026,6 @@ const classtable_elt_t VFT_ReduceAction69[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52594,42 +28033,136 @@ const classtable_elt_t VFT_ReduceAction69[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction69 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction69___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction69 < ReduceAction69: superclass init_table position */},
-  {(bigint) parser___ReduceAction69___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction69(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwintrude < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwintrude___parser_index},
+  {(bigint) 0 /* 67: TKwintrude < Token: superclass init_table position */},
+  {(bigint) lexer___TKwintrude___init_tk},
+  {(bigint) 3 /* 69: TKwintrude < TKwintrude: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwintrude::_parent */
+/* 3: Attribute TKwintrude::_location */
+/* 4: Attribute TKwintrude::_symbol_cache */
+/* 5: Attribute TKwintrude::_text */
+void INIT_ATTRIBUTES__TKwintrude(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwintrude;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwintrude(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction69;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction69(val_t self, char *from) {
-}
-val_t NEW_ReduceAction69_parser___ReduceAction69___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction69();
-  parser___ReduceAction69___init(self, init_table);
-  CHECKNEW_ReduceAction69(self, "parser::ReduceAction69::init for ReduceAction69");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwintrude;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwintrude(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwintrude;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction70[48] = {
-  {(bigint) 511 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction70 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction70 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 511 /* 3: ReduceAction70 < ReduceAction70: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwintrude_lexer___TKwintrude___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 323;
+  fra.me.meth = LOCATE_NEW_TKwintrude_lexer___TKwintrude___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:323 */
+  fra.me.REG[1] = NEW_TKwintrude();
+  INIT_ATTRIBUTES__TKwintrude(fra.me.REG[1]);
+  lexer___TKwintrude___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwintrude(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwintrude_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwintrude_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwintrude();
+  INIT_ATTRIBUTES__TKwintrude(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwintrude(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwif[70] = {
+  {(bigint) 2391 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwif < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwif < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwif < Token: superclass typecheck marker */},
+  {(bigint) 2391 /* 5: TKwif < TKwif: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52641,14 +28174,9 @@ const classtable_elt_t VFT_ReduceAction70[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction70 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwif < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52656,7 +28184,6 @@ const classtable_elt_t VFT_ReduceAction70[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52664,42 +28191,136 @@ const classtable_elt_t VFT_ReduceAction70[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction70 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction70___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction70 < ReduceAction70: superclass init_table position */},
-  {(bigint) parser___ReduceAction70___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction70(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwif < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwif___parser_index},
+  {(bigint) 0 /* 67: TKwif < Token: superclass init_table position */},
+  {(bigint) lexer___TKwif___init_tk},
+  {(bigint) 3 /* 69: TKwif < TKwif: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwif::_parent */
+/* 3: Attribute TKwif::_location */
+/* 4: Attribute TKwif::_symbol_cache */
+/* 5: Attribute TKwif::_text */
+void INIT_ATTRIBUTES__TKwif(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwif;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwif(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction70;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction70(val_t self, char *from) {
-}
-val_t NEW_ReduceAction70_parser___ReduceAction70___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction70();
-  parser___ReduceAction70___init(self, init_table);
-  CHECKNEW_ReduceAction70(self, "parser::ReduceAction70::init for ReduceAction70");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwif;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwif(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwif;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction71[48] = {
-  {(bigint) 467 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction71 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction71 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 467 /* 3: ReduceAction71 < ReduceAction71: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwif_lexer___TKwif___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 336;
+  fra.me.meth = LOCATE_NEW_TKwif_lexer___TKwif___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:336 */
+  fra.me.REG[1] = NEW_TKwif();
+  INIT_ATTRIBUTES__TKwif(fra.me.REG[1]);
+  lexer___TKwif___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwif(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwif_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwif_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwif();
+  INIT_ATTRIBUTES__TKwif(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwif(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwthen[70] = {
+  {(bigint) 2279 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwthen < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwthen < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwthen < Token: superclass typecheck marker */},
+  {(bigint) 2279 /* 5: TKwthen < TKwthen: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52711,14 +28332,9 @@ const classtable_elt_t VFT_ReduceAction71[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction71 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwthen < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52726,7 +28342,6 @@ const classtable_elt_t VFT_ReduceAction71[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52734,42 +28349,136 @@ const classtable_elt_t VFT_ReduceAction71[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction71 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction71___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction71 < ReduceAction71: superclass init_table position */},
-  {(bigint) parser___ReduceAction71___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction71(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwthen < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwthen___parser_index},
+  {(bigint) 0 /* 67: TKwthen < Token: superclass init_table position */},
+  {(bigint) lexer___TKwthen___init_tk},
+  {(bigint) 3 /* 69: TKwthen < TKwthen: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwthen::_parent */
+/* 3: Attribute TKwthen::_location */
+/* 4: Attribute TKwthen::_symbol_cache */
+/* 5: Attribute TKwthen::_text */
+void INIT_ATTRIBUTES__TKwthen(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwthen;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwthen(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction71;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction71(val_t self, char *from) {
-}
-val_t NEW_ReduceAction71_parser___ReduceAction71___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction71();
-  parser___ReduceAction71___init(self, init_table);
-  CHECKNEW_ReduceAction71(self, "parser::ReduceAction71::init for ReduceAction71");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwthen;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwthen(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwthen;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction72[48] = {
-  {(bigint) 423 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction72 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction72 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 423 /* 3: ReduceAction72 < ReduceAction72: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwthen_lexer___TKwthen___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 349;
+  fra.me.meth = LOCATE_NEW_TKwthen_lexer___TKwthen___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:349 */
+  fra.me.REG[1] = NEW_TKwthen();
+  INIT_ATTRIBUTES__TKwthen(fra.me.REG[1]);
+  lexer___TKwthen___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwthen(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwthen_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwthen_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwthen();
+  INIT_ATTRIBUTES__TKwthen(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwthen(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwelse[70] = {
+  {(bigint) 2415 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwelse < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwelse < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwelse < Token: superclass typecheck marker */},
+  {(bigint) 2415 /* 5: TKwelse < TKwelse: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52781,14 +28490,9 @@ const classtable_elt_t VFT_ReduceAction72[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction72 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwelse < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52796,7 +28500,6 @@ const classtable_elt_t VFT_ReduceAction72[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52804,42 +28507,136 @@ const classtable_elt_t VFT_ReduceAction72[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction72 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction72___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction72 < ReduceAction72: superclass init_table position */},
-  {(bigint) parser___ReduceAction72___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction72(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwelse < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwelse___parser_index},
+  {(bigint) 0 /* 67: TKwelse < Token: superclass init_table position */},
+  {(bigint) lexer___TKwelse___init_tk},
+  {(bigint) 3 /* 69: TKwelse < TKwelse: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwelse::_parent */
+/* 3: Attribute TKwelse::_location */
+/* 4: Attribute TKwelse::_symbol_cache */
+/* 5: Attribute TKwelse::_text */
+void INIT_ATTRIBUTES__TKwelse(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwelse;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwelse(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction72;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction72(val_t self, char *from) {
-}
-val_t NEW_ReduceAction72_parser___ReduceAction72___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction72();
-  parser___ReduceAction72___init(self, init_table);
-  CHECKNEW_ReduceAction72(self, "parser::ReduceAction72::init for ReduceAction72");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwelse;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwelse(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwelse;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction73[48] = {
-  {(bigint) 379 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction73 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction73 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 379 /* 3: ReduceAction73 < ReduceAction73: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwelse_lexer___TKwelse___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 362;
+  fra.me.meth = LOCATE_NEW_TKwelse_lexer___TKwelse___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:362 */
+  fra.me.REG[1] = NEW_TKwelse();
+  INIT_ATTRIBUTES__TKwelse(fra.me.REG[1]);
+  lexer___TKwelse___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwelse(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwelse_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwelse_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwelse();
+  INIT_ATTRIBUTES__TKwelse(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwelse(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwwhile[70] = {
+  {(bigint) 2263 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwwhile < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwwhile < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwwhile < Token: superclass typecheck marker */},
+  {(bigint) 2263 /* 5: TKwwhile < TKwwhile: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52851,14 +28648,9 @@ const classtable_elt_t VFT_ReduceAction73[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction73 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwwhile < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52866,7 +28658,6 @@ const classtable_elt_t VFT_ReduceAction73[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52874,42 +28665,136 @@ const classtable_elt_t VFT_ReduceAction73[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction73 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction73___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction73 < ReduceAction73: superclass init_table position */},
-  {(bigint) parser___ReduceAction73___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction73(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwwhile < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwwhile___parser_index},
+  {(bigint) 0 /* 67: TKwwhile < Token: superclass init_table position */},
+  {(bigint) lexer___TKwwhile___init_tk},
+  {(bigint) 3 /* 69: TKwwhile < TKwwhile: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwwhile::_parent */
+/* 3: Attribute TKwwhile::_location */
+/* 4: Attribute TKwwhile::_symbol_cache */
+/* 5: Attribute TKwwhile::_text */
+void INIT_ATTRIBUTES__TKwwhile(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwwhile;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwwhile(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction73;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction73(val_t self, char *from) {
-}
-val_t NEW_ReduceAction73_parser___ReduceAction73___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction73();
-  parser___ReduceAction73___init(self, init_table);
-  CHECKNEW_ReduceAction73(self, "parser::ReduceAction73::init for ReduceAction73");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwwhile;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwwhile(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwwhile;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction74[48] = {
-  {(bigint) 343 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction74 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction74 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 343 /* 3: ReduceAction74 < ReduceAction74: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwwhile_lexer___TKwwhile___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 375;
+  fra.me.meth = LOCATE_NEW_TKwwhile_lexer___TKwwhile___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:375 */
+  fra.me.REG[1] = NEW_TKwwhile();
+  INIT_ATTRIBUTES__TKwwhile(fra.me.REG[1]);
+  lexer___TKwwhile___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwwhile(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwwhile_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwwhile_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwwhile();
+  INIT_ATTRIBUTES__TKwwhile(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwwhile(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwloop[70] = {
+  {(bigint) 2347 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwloop < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwloop < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwloop < Token: superclass typecheck marker */},
+  {(bigint) 2347 /* 5: TKwloop < TKwloop: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52921,14 +28806,9 @@ const classtable_elt_t VFT_ReduceAction74[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction74 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwloop < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -52936,7 +28816,6 @@ const classtable_elt_t VFT_ReduceAction74[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -52944,42 +28823,136 @@ const classtable_elt_t VFT_ReduceAction74[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction74 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction74___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction74 < ReduceAction74: superclass init_table position */},
-  {(bigint) parser___ReduceAction74___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction74(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwloop < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwloop___parser_index},
+  {(bigint) 0 /* 67: TKwloop < Token: superclass init_table position */},
+  {(bigint) lexer___TKwloop___init_tk},
+  {(bigint) 3 /* 69: TKwloop < TKwloop: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwloop::_parent */
+/* 3: Attribute TKwloop::_location */
+/* 4: Attribute TKwloop::_symbol_cache */
+/* 5: Attribute TKwloop::_text */
+void INIT_ATTRIBUTES__TKwloop(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwloop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwloop(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction74;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction74(val_t self, char *from) {
-}
-val_t NEW_ReduceAction74_parser___ReduceAction74___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction74();
-  parser___ReduceAction74___init(self, init_table);
-  CHECKNEW_ReduceAction74(self, "parser::ReduceAction74::init for ReduceAction74");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwloop;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwloop(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwloop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction75[48] = {
-  {(bigint) 339 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction75 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction75 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 339 /* 3: ReduceAction75 < ReduceAction75: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwloop_lexer___TKwloop___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 388;
+  fra.me.meth = LOCATE_NEW_TKwloop_lexer___TKwloop___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:388 */
+  fra.me.REG[1] = NEW_TKwloop();
+  INIT_ATTRIBUTES__TKwloop(fra.me.REG[1]);
+  lexer___TKwloop___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwloop(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwloop_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwloop_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwloop();
+  INIT_ATTRIBUTES__TKwloop(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwloop(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwfor[70] = {
+  {(bigint) 2395 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwfor < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwfor < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwfor < Token: superclass typecheck marker */},
+  {(bigint) 2395 /* 5: TKwfor < TKwfor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52991,14 +28964,9 @@ const classtable_elt_t VFT_ReduceAction75[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction75 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwfor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53006,7 +28974,6 @@ const classtable_elt_t VFT_ReduceAction75[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53014,42 +28981,136 @@ const classtable_elt_t VFT_ReduceAction75[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction75 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction75___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction75 < ReduceAction75: superclass init_table position */},
-  {(bigint) parser___ReduceAction75___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction75(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwfor < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwfor___parser_index},
+  {(bigint) 0 /* 67: TKwfor < Token: superclass init_table position */},
+  {(bigint) lexer___TKwfor___init_tk},
+  {(bigint) 3 /* 69: TKwfor < TKwfor: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwfor::_parent */
+/* 3: Attribute TKwfor::_location */
+/* 4: Attribute TKwfor::_symbol_cache */
+/* 5: Attribute TKwfor::_text */
+void INIT_ATTRIBUTES__TKwfor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwfor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwfor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction75;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction75(val_t self, char *from) {
-}
-val_t NEW_ReduceAction75_parser___ReduceAction75___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction75();
-  parser___ReduceAction75___init(self, init_table);
-  CHECKNEW_ReduceAction75(self, "parser::ReduceAction75::init for ReduceAction75");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwfor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwfor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwfor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction76[48] = {
-  {(bigint) 335 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction76 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction76 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 335 /* 3: ReduceAction76 < ReduceAction76: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwfor_lexer___TKwfor___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 401;
+  fra.me.meth = LOCATE_NEW_TKwfor_lexer___TKwfor___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:401 */
+  fra.me.REG[1] = NEW_TKwfor();
+  INIT_ATTRIBUTES__TKwfor(fra.me.REG[1]);
+  lexer___TKwfor___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwfor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwfor_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwfor_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwfor();
+  INIT_ATTRIBUTES__TKwfor(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwfor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwin[70] = {
+  {(bigint) 2383 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwin < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwin < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwin < Token: superclass typecheck marker */},
+  {(bigint) 2383 /* 5: TKwin < TKwin: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53061,14 +29122,9 @@ const classtable_elt_t VFT_ReduceAction76[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction76 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwin < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53076,7 +29132,6 @@ const classtable_elt_t VFT_ReduceAction76[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53084,42 +29139,136 @@ const classtable_elt_t VFT_ReduceAction76[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction76 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction76___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction76 < ReduceAction76: superclass init_table position */},
-  {(bigint) parser___ReduceAction76___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction76(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwin < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwin___parser_index},
+  {(bigint) 0 /* 67: TKwin < Token: superclass init_table position */},
+  {(bigint) lexer___TKwin___init_tk},
+  {(bigint) 3 /* 69: TKwin < TKwin: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwin::_parent */
+/* 3: Attribute TKwin::_location */
+/* 4: Attribute TKwin::_symbol_cache */
+/* 5: Attribute TKwin::_text */
+void INIT_ATTRIBUTES__TKwin(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwin;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwin(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction76;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction76(val_t self, char *from) {
-}
-val_t NEW_ReduceAction76_parser___ReduceAction76___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction76();
-  parser___ReduceAction76___init(self, init_table);
-  CHECKNEW_ReduceAction76(self, "parser::ReduceAction76::init for ReduceAction76");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwin;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwin(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwin;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction77[48] = {
-  {(bigint) 331 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction77 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction77 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 331 /* 3: ReduceAction77 < ReduceAction77: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwin_lexer___TKwin___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 414;
+  fra.me.meth = LOCATE_NEW_TKwin_lexer___TKwin___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:414 */
+  fra.me.REG[1] = NEW_TKwin();
+  INIT_ATTRIBUTES__TKwin(fra.me.REG[1]);
+  lexer___TKwin___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwin(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwin_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwin_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwin();
+  INIT_ATTRIBUTES__TKwin(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwin(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwand[70] = {
+  {(bigint) 2443 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwand < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwand < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwand < Token: superclass typecheck marker */},
+  {(bigint) 2443 /* 5: TKwand < TKwand: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53131,14 +29280,9 @@ const classtable_elt_t VFT_ReduceAction77[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction77 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwand < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53146,7 +29290,6 @@ const classtable_elt_t VFT_ReduceAction77[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53154,42 +29297,136 @@ const classtable_elt_t VFT_ReduceAction77[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction77 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction77___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction77 < ReduceAction77: superclass init_table position */},
-  {(bigint) parser___ReduceAction77___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction77(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwand < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwand___parser_index},
+  {(bigint) 0 /* 67: TKwand < Token: superclass init_table position */},
+  {(bigint) lexer___TKwand___init_tk},
+  {(bigint) 3 /* 69: TKwand < TKwand: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwand::_parent */
+/* 3: Attribute TKwand::_location */
+/* 4: Attribute TKwand::_symbol_cache */
+/* 5: Attribute TKwand::_text */
+void INIT_ATTRIBUTES__TKwand(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwand;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwand(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction77;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction77(val_t self, char *from) {
-}
-val_t NEW_ReduceAction77_parser___ReduceAction77___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction77();
-  parser___ReduceAction77___init(self, init_table);
-  CHECKNEW_ReduceAction77(self, "parser::ReduceAction77::init for ReduceAction77");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwand;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwand(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwand;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction78[48] = {
-  {(bigint) 327 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction78 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction78 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 327 /* 3: ReduceAction78 < ReduceAction78: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwand_lexer___TKwand___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 427;
+  fra.me.meth = LOCATE_NEW_TKwand_lexer___TKwand___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:427 */
+  fra.me.REG[1] = NEW_TKwand();
+  INIT_ATTRIBUTES__TKwand(fra.me.REG[1]);
+  lexer___TKwand___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwand(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwand_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwand_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwand();
+  INIT_ATTRIBUTES__TKwand(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwand(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwor[70] = {
+  {(bigint) 2315 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwor < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwor < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwor < Token: superclass typecheck marker */},
+  {(bigint) 2315 /* 5: TKwor < TKwor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53201,14 +29438,9 @@ const classtable_elt_t VFT_ReduceAction78[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction78 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53216,7 +29448,6 @@ const classtable_elt_t VFT_ReduceAction78[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53224,42 +29455,136 @@ const classtable_elt_t VFT_ReduceAction78[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction78 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction78___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction78 < ReduceAction78: superclass init_table position */},
-  {(bigint) parser___ReduceAction78___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction78(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwor < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwor___parser_index},
+  {(bigint) 0 /* 67: TKwor < Token: superclass init_table position */},
+  {(bigint) lexer___TKwor___init_tk},
+  {(bigint) 3 /* 69: TKwor < TKwor: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwor::_parent */
+/* 3: Attribute TKwor::_location */
+/* 4: Attribute TKwor::_symbol_cache */
+/* 5: Attribute TKwor::_text */
+void INIT_ATTRIBUTES__TKwor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction78;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction78(val_t self, char *from) {
-}
-val_t NEW_ReduceAction78_parser___ReduceAction78___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction78();
-  parser___ReduceAction78___init(self, init_table);
-  CHECKNEW_ReduceAction78(self, "parser::ReduceAction78::init for ReduceAction78");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction79[48] = {
-  {(bigint) 323 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction79 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction79 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 323 /* 3: ReduceAction79 < ReduceAction79: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwor_lexer___TKwor___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 440;
+  fra.me.meth = LOCATE_NEW_TKwor_lexer___TKwor___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:440 */
+  fra.me.REG[1] = NEW_TKwor();
+  INIT_ATTRIBUTES__TKwor(fra.me.REG[1]);
+  lexer___TKwor___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwor_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwor_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwor();
+  INIT_ATTRIBUTES__TKwor(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwnot[70] = {
+  {(bigint) 2331 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwnot < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwnot < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwnot < Token: superclass typecheck marker */},
+  {(bigint) 2331 /* 5: TKwnot < TKwnot: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53271,14 +29596,9 @@ const classtable_elt_t VFT_ReduceAction79[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction79 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwnot < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53286,7 +29606,6 @@ const classtable_elt_t VFT_ReduceAction79[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53294,42 +29613,136 @@ const classtable_elt_t VFT_ReduceAction79[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction79 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction79___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction79 < ReduceAction79: superclass init_table position */},
-  {(bigint) parser___ReduceAction79___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction79(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwnot < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwnot___parser_index},
+  {(bigint) 0 /* 67: TKwnot < Token: superclass init_table position */},
+  {(bigint) lexer___TKwnot___init_tk},
+  {(bigint) 3 /* 69: TKwnot < TKwnot: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwnot::_parent */
+/* 3: Attribute TKwnot::_location */
+/* 4: Attribute TKwnot::_symbol_cache */
+/* 5: Attribute TKwnot::_text */
+void INIT_ATTRIBUTES__TKwnot(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwnot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwnot(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction79;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction79(val_t self, char *from) {
-}
-val_t NEW_ReduceAction79_parser___ReduceAction79___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction79();
-  parser___ReduceAction79___init(self, init_table);
-  CHECKNEW_ReduceAction79(self, "parser::ReduceAction79::init for ReduceAction79");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwnot;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwnot(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwnot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction80[48] = {
-  {(bigint) 315 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction80 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction80 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 315 /* 3: ReduceAction80 < ReduceAction80: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwnot_lexer___TKwnot___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 453;
+  fra.me.meth = LOCATE_NEW_TKwnot_lexer___TKwnot___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:453 */
+  fra.me.REG[1] = NEW_TKwnot();
+  INIT_ATTRIBUTES__TKwnot(fra.me.REG[1]);
+  lexer___TKwnot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwnot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwnot_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwnot_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwnot();
+  INIT_ATTRIBUTES__TKwnot(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwnot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwreturn[70] = {
+  {(bigint) 2295 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwreturn < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwreturn < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwreturn < Token: superclass typecheck marker */},
+  {(bigint) 2295 /* 5: TKwreturn < TKwreturn: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53341,14 +29754,9 @@ const classtable_elt_t VFT_ReduceAction80[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction80 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwreturn < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53356,7 +29764,6 @@ const classtable_elt_t VFT_ReduceAction80[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53364,42 +29771,136 @@ const classtable_elt_t VFT_ReduceAction80[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction80 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction80___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction80 < ReduceAction80: superclass init_table position */},
-  {(bigint) parser___ReduceAction80___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction80(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwreturn < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwreturn___parser_index},
+  {(bigint) 0 /* 67: TKwreturn < Token: superclass init_table position */},
+  {(bigint) lexer___TKwreturn___init_tk},
+  {(bigint) 3 /* 69: TKwreturn < TKwreturn: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwreturn::_parent */
+/* 3: Attribute TKwreturn::_location */
+/* 4: Attribute TKwreturn::_symbol_cache */
+/* 5: Attribute TKwreturn::_text */
+void INIT_ATTRIBUTES__TKwreturn(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwreturn;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwreturn(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction80;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction80(val_t self, char *from) {
-}
-val_t NEW_ReduceAction80_parser___ReduceAction80___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction80();
-  parser___ReduceAction80___init(self, init_table);
-  CHECKNEW_ReduceAction80(self, "parser::ReduceAction80::init for ReduceAction80");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwreturn;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwreturn(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwreturn;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction81[48] = {
-  {(bigint) 311 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction81 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction81 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 311 /* 3: ReduceAction81 < ReduceAction81: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwreturn_lexer___TKwreturn___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 466;
+  fra.me.meth = LOCATE_NEW_TKwreturn_lexer___TKwreturn___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:466 */
+  fra.me.REG[1] = NEW_TKwreturn();
+  INIT_ATTRIBUTES__TKwreturn(fra.me.REG[1]);
+  lexer___TKwreturn___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwreturn(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwreturn_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwreturn_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwreturn();
+  INIT_ATTRIBUTES__TKwreturn(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwreturn(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwcontinue[70] = {
+  {(bigint) 2423 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwcontinue < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwcontinue < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwcontinue < Token: superclass typecheck marker */},
+  {(bigint) 2423 /* 5: TKwcontinue < TKwcontinue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53411,14 +29912,9 @@ const classtable_elt_t VFT_ReduceAction81[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction81 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwcontinue < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53426,7 +29922,6 @@ const classtable_elt_t VFT_ReduceAction81[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53434,42 +29929,136 @@ const classtable_elt_t VFT_ReduceAction81[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction81 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction81___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction81 < ReduceAction81: superclass init_table position */},
-  {(bigint) parser___ReduceAction81___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction81(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwcontinue < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwcontinue___parser_index},
+  {(bigint) 0 /* 67: TKwcontinue < Token: superclass init_table position */},
+  {(bigint) lexer___TKwcontinue___init_tk},
+  {(bigint) 3 /* 69: TKwcontinue < TKwcontinue: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwcontinue::_parent */
+/* 3: Attribute TKwcontinue::_location */
+/* 4: Attribute TKwcontinue::_symbol_cache */
+/* 5: Attribute TKwcontinue::_text */
+void INIT_ATTRIBUTES__TKwcontinue(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwcontinue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwcontinue(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction81;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction81(val_t self, char *from) {
-}
-val_t NEW_ReduceAction81_parser___ReduceAction81___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction81();
-  parser___ReduceAction81___init(self, init_table);
-  CHECKNEW_ReduceAction81(self, "parser::ReduceAction81::init for ReduceAction81");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwcontinue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwcontinue(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwcontinue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction82[48] = {
-  {(bigint) 307 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction82 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction82 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 307 /* 3: ReduceAction82 < ReduceAction82: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwcontinue_lexer___TKwcontinue___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 479;
+  fra.me.meth = LOCATE_NEW_TKwcontinue_lexer___TKwcontinue___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:479 */
+  fra.me.REG[1] = NEW_TKwcontinue();
+  INIT_ATTRIBUTES__TKwcontinue(fra.me.REG[1]);
+  lexer___TKwcontinue___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwcontinue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwcontinue_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwcontinue_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwcontinue();
+  INIT_ATTRIBUTES__TKwcontinue(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwcontinue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwbreak[70] = {
+  {(bigint) 2431 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwbreak < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwbreak < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwbreak < Token: superclass typecheck marker */},
+  {(bigint) 2431 /* 5: TKwbreak < TKwbreak: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53481,14 +30070,9 @@ const classtable_elt_t VFT_ReduceAction82[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction82 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwbreak < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53496,7 +30080,6 @@ const classtable_elt_t VFT_ReduceAction82[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53504,42 +30087,136 @@ const classtable_elt_t VFT_ReduceAction82[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction82 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction82___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction82 < ReduceAction82: superclass init_table position */},
-  {(bigint) parser___ReduceAction82___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction82(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwbreak < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwbreak___parser_index},
+  {(bigint) 0 /* 67: TKwbreak < Token: superclass init_table position */},
+  {(bigint) lexer___TKwbreak___init_tk},
+  {(bigint) 3 /* 69: TKwbreak < TKwbreak: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwbreak::_parent */
+/* 3: Attribute TKwbreak::_location */
+/* 4: Attribute TKwbreak::_symbol_cache */
+/* 5: Attribute TKwbreak::_text */
+void INIT_ATTRIBUTES__TKwbreak(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwbreak;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwbreak(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction82;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction82(val_t self, char *from) {
-}
-val_t NEW_ReduceAction82_parser___ReduceAction82___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction82();
-  parser___ReduceAction82___init(self, init_table);
-  CHECKNEW_ReduceAction82(self, "parser::ReduceAction82::init for ReduceAction82");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwbreak;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwbreak(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwbreak;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction83[48] = {
-  {(bigint) 303 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction83 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction83 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 303 /* 3: ReduceAction83 < ReduceAction83: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwbreak_lexer___TKwbreak___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 492;
+  fra.me.meth = LOCATE_NEW_TKwbreak_lexer___TKwbreak___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:492 */
+  fra.me.REG[1] = NEW_TKwbreak();
+  INIT_ATTRIBUTES__TKwbreak(fra.me.REG[1]);
+  lexer___TKwbreak___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwbreak(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwbreak_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwbreak_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwbreak();
+  INIT_ATTRIBUTES__TKwbreak(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwbreak(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwabort[70] = {
+  {(bigint) 2451 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwabort < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwabort < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwabort < Token: superclass typecheck marker */},
+  {(bigint) 2451 /* 5: TKwabort < TKwabort: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53551,14 +30228,9 @@ const classtable_elt_t VFT_ReduceAction83[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction83 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwabort < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53566,7 +30238,6 @@ const classtable_elt_t VFT_ReduceAction83[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53574,42 +30245,136 @@ const classtable_elt_t VFT_ReduceAction83[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction83 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction83___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction83 < ReduceAction83: superclass init_table position */},
-  {(bigint) parser___ReduceAction83___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction83(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwabort < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwabort___parser_index},
+  {(bigint) 0 /* 67: TKwabort < Token: superclass init_table position */},
+  {(bigint) lexer___TKwabort___init_tk},
+  {(bigint) 3 /* 69: TKwabort < TKwabort: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwabort::_parent */
+/* 3: Attribute TKwabort::_location */
+/* 4: Attribute TKwabort::_symbol_cache */
+/* 5: Attribute TKwabort::_text */
+void INIT_ATTRIBUTES__TKwabort(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwabort;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwabort(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction83;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction83(val_t self, char *from) {
-}
-val_t NEW_ReduceAction83_parser___ReduceAction83___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction83();
-  parser___ReduceAction83___init(self, init_table);
-  CHECKNEW_ReduceAction83(self, "parser::ReduceAction83::init for ReduceAction83");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwabort;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwabort(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwabort;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction84[48] = {
-  {(bigint) 299 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction84 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction84 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 299 /* 3: ReduceAction84 < ReduceAction84: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwabort_lexer___TKwabort___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 505;
+  fra.me.meth = LOCATE_NEW_TKwabort_lexer___TKwabort___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:505 */
+  fra.me.REG[1] = NEW_TKwabort();
+  INIT_ATTRIBUTES__TKwabort(fra.me.REG[1]);
+  lexer___TKwabort___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwabort(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwabort_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwabort_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwabort();
+  INIT_ATTRIBUTES__TKwabort(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwabort(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwassert[70] = {
+  {(bigint) 2435 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwassert < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwassert < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwassert < Token: superclass typecheck marker */},
+  {(bigint) 2435 /* 5: TKwassert < TKwassert: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53621,14 +30386,9 @@ const classtable_elt_t VFT_ReduceAction84[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction84 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwassert < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53636,7 +30396,6 @@ const classtable_elt_t VFT_ReduceAction84[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53644,42 +30403,136 @@ const classtable_elt_t VFT_ReduceAction84[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction84 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction84___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction84 < ReduceAction84: superclass init_table position */},
-  {(bigint) parser___ReduceAction84___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction84(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwassert < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwassert___parser_index},
+  {(bigint) 0 /* 67: TKwassert < Token: superclass init_table position */},
+  {(bigint) lexer___TKwassert___init_tk},
+  {(bigint) 3 /* 69: TKwassert < TKwassert: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwassert::_parent */
+/* 3: Attribute TKwassert::_location */
+/* 4: Attribute TKwassert::_symbol_cache */
+/* 5: Attribute TKwassert::_text */
+void INIT_ATTRIBUTES__TKwassert(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwassert;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwassert(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction84;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction84(val_t self, char *from) {
-}
-val_t NEW_ReduceAction84_parser___ReduceAction84___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction84();
-  parser___ReduceAction84___init(self, init_table);
-  CHECKNEW_ReduceAction84(self, "parser::ReduceAction84::init for ReduceAction84");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwassert;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwassert(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwassert;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction85[48] = {
-  {(bigint) 295 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction85 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction85 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 295 /* 3: ReduceAction85 < ReduceAction85: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwassert_lexer___TKwassert___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 518;
+  fra.me.meth = LOCATE_NEW_TKwassert_lexer___TKwassert___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:518 */
+  fra.me.REG[1] = NEW_TKwassert();
+  INIT_ATTRIBUTES__TKwassert(fra.me.REG[1]);
+  lexer___TKwassert___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwassert(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwassert_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwassert_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwassert();
+  INIT_ATTRIBUTES__TKwassert(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwassert(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwnew[70] = {
+  {(bigint) 2335 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwnew < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwnew < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwnew < Token: superclass typecheck marker */},
+  {(bigint) 2335 /* 5: TKwnew < TKwnew: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53691,14 +30544,9 @@ const classtable_elt_t VFT_ReduceAction85[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction85 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwnew < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53706,7 +30554,6 @@ const classtable_elt_t VFT_ReduceAction85[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53714,42 +30561,136 @@ const classtable_elt_t VFT_ReduceAction85[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction85 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction85___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction85 < ReduceAction85: superclass init_table position */},
-  {(bigint) parser___ReduceAction85___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction85(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwnew < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwnew___parser_index},
+  {(bigint) 0 /* 67: TKwnew < Token: superclass init_table position */},
+  {(bigint) lexer___TKwnew___init_tk},
+  {(bigint) 3 /* 69: TKwnew < TKwnew: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwnew::_parent */
+/* 3: Attribute TKwnew::_location */
+/* 4: Attribute TKwnew::_symbol_cache */
+/* 5: Attribute TKwnew::_text */
+void INIT_ATTRIBUTES__TKwnew(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwnew;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwnew(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction85;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction85(val_t self, char *from) {
-}
-val_t NEW_ReduceAction85_parser___ReduceAction85___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction85();
-  parser___ReduceAction85___init(self, init_table);
-  CHECKNEW_ReduceAction85(self, "parser::ReduceAction85::init for ReduceAction85");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwnew;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwnew(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwnew;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction86[48] = {
-  {(bigint) 291 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction86 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction86 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 291 /* 3: ReduceAction86 < ReduceAction86: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwnew_lexer___TKwnew___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 531;
+  fra.me.meth = LOCATE_NEW_TKwnew_lexer___TKwnew___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:531 */
+  fra.me.REG[1] = NEW_TKwnew();
+  INIT_ATTRIBUTES__TKwnew(fra.me.REG[1]);
+  lexer___TKwnew___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwnew(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwnew_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwnew_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwnew();
+  INIT_ATTRIBUTES__TKwnew(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwnew(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwisa[70] = {
+  {(bigint) 2359 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwisa < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwisa < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwisa < Token: superclass typecheck marker */},
+  {(bigint) 2359 /* 5: TKwisa < TKwisa: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53761,14 +30702,9 @@ const classtable_elt_t VFT_ReduceAction86[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction86 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwisa < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53776,7 +30712,6 @@ const classtable_elt_t VFT_ReduceAction86[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53784,42 +30719,136 @@ const classtable_elt_t VFT_ReduceAction86[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction86 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction86___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction86 < ReduceAction86: superclass init_table position */},
-  {(bigint) parser___ReduceAction86___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction86(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwisa < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwisa___parser_index},
+  {(bigint) 0 /* 67: TKwisa < Token: superclass init_table position */},
+  {(bigint) lexer___TKwisa___init_tk},
+  {(bigint) 3 /* 69: TKwisa < TKwisa: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwisa::_parent */
+/* 3: Attribute TKwisa::_location */
+/* 4: Attribute TKwisa::_symbol_cache */
+/* 5: Attribute TKwisa::_text */
+void INIT_ATTRIBUTES__TKwisa(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwisa;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwisa(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction86;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction86(val_t self, char *from) {
-}
-val_t NEW_ReduceAction86_parser___ReduceAction86___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction86();
-  parser___ReduceAction86___init(self, init_table);
-  CHECKNEW_ReduceAction86(self, "parser::ReduceAction86::init for ReduceAction86");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwisa;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwisa(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwisa;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction87[48] = {
-  {(bigint) 287 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction87 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction87 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 287 /* 3: ReduceAction87 < ReduceAction87: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwisa_lexer___TKwisa___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 544;
+  fra.me.meth = LOCATE_NEW_TKwisa_lexer___TKwisa___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:544 */
+  fra.me.REG[1] = NEW_TKwisa();
+  INIT_ATTRIBUTES__TKwisa(fra.me.REG[1]);
+  lexer___TKwisa___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwisa(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwisa_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwisa_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwisa();
+  INIT_ATTRIBUTES__TKwisa(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwisa(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwonce[70] = {
+  {(bigint) 2319 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwonce < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwonce < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwonce < Token: superclass typecheck marker */},
+  {(bigint) 2319 /* 5: TKwonce < TKwonce: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53831,14 +30860,9 @@ const classtable_elt_t VFT_ReduceAction87[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction87 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwonce < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53846,7 +30870,6 @@ const classtable_elt_t VFT_ReduceAction87[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53854,42 +30877,136 @@ const classtable_elt_t VFT_ReduceAction87[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction87 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction87___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction87 < ReduceAction87: superclass init_table position */},
-  {(bigint) parser___ReduceAction87___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction87(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwonce < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwonce___parser_index},
+  {(bigint) 0 /* 67: TKwonce < Token: superclass init_table position */},
+  {(bigint) lexer___TKwonce___init_tk},
+  {(bigint) 3 /* 69: TKwonce < TKwonce: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwonce::_parent */
+/* 3: Attribute TKwonce::_location */
+/* 4: Attribute TKwonce::_symbol_cache */
+/* 5: Attribute TKwonce::_text */
+void INIT_ATTRIBUTES__TKwonce(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwonce;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwonce(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction87;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction87(val_t self, char *from) {
-}
-val_t NEW_ReduceAction87_parser___ReduceAction87___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction87();
-  parser___ReduceAction87___init(self, init_table);
-  CHECKNEW_ReduceAction87(self, "parser::ReduceAction87::init for ReduceAction87");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwonce;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwonce(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwonce;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction88[48] = {
-  {(bigint) 283 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction88 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction88 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 283 /* 3: ReduceAction88 < ReduceAction88: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwonce_lexer___TKwonce___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 557;
+  fra.me.meth = LOCATE_NEW_TKwonce_lexer___TKwonce___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:557 */
+  fra.me.REG[1] = NEW_TKwonce();
+  INIT_ATTRIBUTES__TKwonce(fra.me.REG[1]);
+  lexer___TKwonce___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwonce(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwonce_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwonce_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwonce();
+  INIT_ATTRIBUTES__TKwonce(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwonce(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwsuper[70] = {
+  {(bigint) 2283 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwsuper < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwsuper < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwsuper < Token: superclass typecheck marker */},
+  {(bigint) 2283 /* 5: TKwsuper < TKwsuper: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53901,14 +31018,9 @@ const classtable_elt_t VFT_ReduceAction88[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction88 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwsuper < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53916,7 +31028,6 @@ const classtable_elt_t VFT_ReduceAction88[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53924,42 +31035,136 @@ const classtable_elt_t VFT_ReduceAction88[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction88 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction88___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction88 < ReduceAction88: superclass init_table position */},
-  {(bigint) parser___ReduceAction88___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction88(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwsuper < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwsuper___parser_index},
+  {(bigint) 0 /* 67: TKwsuper < Token: superclass init_table position */},
+  {(bigint) lexer___TKwsuper___init_tk},
+  {(bigint) 3 /* 69: TKwsuper < TKwsuper: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwsuper::_parent */
+/* 3: Attribute TKwsuper::_location */
+/* 4: Attribute TKwsuper::_symbol_cache */
+/* 5: Attribute TKwsuper::_text */
+void INIT_ATTRIBUTES__TKwsuper(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwsuper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwsuper(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction88;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction88(val_t self, char *from) {
-}
-val_t NEW_ReduceAction88_parser___ReduceAction88___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction88();
-  parser___ReduceAction88___init(self, init_table);
-  CHECKNEW_ReduceAction88(self, "parser::ReduceAction88::init for ReduceAction88");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwsuper;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwsuper(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwsuper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction89[48] = {
-  {(bigint) 279 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction89 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction89 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 279 /* 3: ReduceAction89 < ReduceAction89: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwsuper_lexer___TKwsuper___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 570;
+  fra.me.meth = LOCATE_NEW_TKwsuper_lexer___TKwsuper___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:570 */
+  fra.me.REG[1] = NEW_TKwsuper();
+  INIT_ATTRIBUTES__TKwsuper(fra.me.REG[1]);
+  lexer___TKwsuper___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwsuper(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwsuper_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwsuper_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwsuper();
+  INIT_ATTRIBUTES__TKwsuper(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwsuper(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwself[70] = {
+  {(bigint) 2291 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwself < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwself < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwself < Token: superclass typecheck marker */},
+  {(bigint) 2291 /* 5: TKwself < TKwself: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53971,14 +31176,9 @@ const classtable_elt_t VFT_ReduceAction89[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction89 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwself < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -53986,7 +31186,6 @@ const classtable_elt_t VFT_ReduceAction89[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -53994,42 +31193,136 @@ const classtable_elt_t VFT_ReduceAction89[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction89 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction89___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction89 < ReduceAction89: superclass init_table position */},
-  {(bigint) parser___ReduceAction89___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction89(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwself < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwself___parser_index},
+  {(bigint) 0 /* 67: TKwself < Token: superclass init_table position */},
+  {(bigint) lexer___TKwself___init_tk},
+  {(bigint) 3 /* 69: TKwself < TKwself: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwself::_parent */
+/* 3: Attribute TKwself::_location */
+/* 4: Attribute TKwself::_symbol_cache */
+/* 5: Attribute TKwself::_text */
+void INIT_ATTRIBUTES__TKwself(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwself;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwself(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction89;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction89(val_t self, char *from) {
-}
-val_t NEW_ReduceAction89_parser___ReduceAction89___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction89();
-  parser___ReduceAction89___init(self, init_table);
-  CHECKNEW_ReduceAction89(self, "parser::ReduceAction89::init for ReduceAction89");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwself;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwself(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwself;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction90[48] = {
-  {(bigint) 271 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction90 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction90 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 271 /* 3: ReduceAction90 < ReduceAction90: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwself_lexer___TKwself___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 583;
+  fra.me.meth = LOCATE_NEW_TKwself_lexer___TKwself___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:583 */
+  fra.me.REG[1] = NEW_TKwself();
+  INIT_ATTRIBUTES__TKwself(fra.me.REG[1]);
+  lexer___TKwself___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwself(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwself_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwself_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwself();
+  INIT_ATTRIBUTES__TKwself(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwself(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwtrue[70] = {
+  {(bigint) 2275 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwtrue < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwtrue < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwtrue < Token: superclass typecheck marker */},
+  {(bigint) 2275 /* 5: TKwtrue < TKwtrue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54041,14 +31334,9 @@ const classtable_elt_t VFT_ReduceAction90[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction90 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwtrue < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54056,7 +31344,6 @@ const classtable_elt_t VFT_ReduceAction90[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54064,42 +31351,136 @@ const classtable_elt_t VFT_ReduceAction90[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction90 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction90___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction90 < ReduceAction90: superclass init_table position */},
-  {(bigint) parser___ReduceAction90___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction90(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwtrue < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwtrue___parser_index},
+  {(bigint) 0 /* 67: TKwtrue < Token: superclass init_table position */},
+  {(bigint) lexer___TKwtrue___init_tk},
+  {(bigint) 3 /* 69: TKwtrue < TKwtrue: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwtrue::_parent */
+/* 3: Attribute TKwtrue::_location */
+/* 4: Attribute TKwtrue::_symbol_cache */
+/* 5: Attribute TKwtrue::_text */
+void INIT_ATTRIBUTES__TKwtrue(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwtrue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwtrue(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction90;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction90(val_t self, char *from) {
-}
-val_t NEW_ReduceAction90_parser___ReduceAction90___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction90();
-  parser___ReduceAction90___init(self, init_table);
-  CHECKNEW_ReduceAction90(self, "parser::ReduceAction90::init for ReduceAction90");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwtrue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwtrue(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwtrue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction91[48] = {
-  {(bigint) 267 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction91 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction91 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 267 /* 3: ReduceAction91 < ReduceAction91: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwtrue_lexer___TKwtrue___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 596;
+  fra.me.meth = LOCATE_NEW_TKwtrue_lexer___TKwtrue___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:596 */
+  fra.me.REG[1] = NEW_TKwtrue();
+  INIT_ATTRIBUTES__TKwtrue(fra.me.REG[1]);
+  lexer___TKwtrue___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwtrue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwtrue_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwtrue_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwtrue();
+  INIT_ATTRIBUTES__TKwtrue(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwtrue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwfalse[70] = {
+  {(bigint) 2399 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwfalse < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwfalse < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwfalse < Token: superclass typecheck marker */},
+  {(bigint) 2399 /* 5: TKwfalse < TKwfalse: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54111,14 +31492,9 @@ const classtable_elt_t VFT_ReduceAction91[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction91 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwfalse < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54126,7 +31502,6 @@ const classtable_elt_t VFT_ReduceAction91[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54134,42 +31509,136 @@ const classtable_elt_t VFT_ReduceAction91[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction91 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction91___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction91 < ReduceAction91: superclass init_table position */},
-  {(bigint) parser___ReduceAction91___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction91(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwfalse < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwfalse___parser_index},
+  {(bigint) 0 /* 67: TKwfalse < Token: superclass init_table position */},
+  {(bigint) lexer___TKwfalse___init_tk},
+  {(bigint) 3 /* 69: TKwfalse < TKwfalse: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwfalse::_parent */
+/* 3: Attribute TKwfalse::_location */
+/* 4: Attribute TKwfalse::_symbol_cache */
+/* 5: Attribute TKwfalse::_text */
+void INIT_ATTRIBUTES__TKwfalse(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwfalse;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwfalse(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction91;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction91(val_t self, char *from) {
-}
-val_t NEW_ReduceAction91_parser___ReduceAction91___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction91();
-  parser___ReduceAction91___init(self, init_table);
-  CHECKNEW_ReduceAction91(self, "parser::ReduceAction91::init for ReduceAction91");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwfalse;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwfalse(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwfalse;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction92[48] = {
-  {(bigint) 263 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction92 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction92 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 263 /* 3: ReduceAction92 < ReduceAction92: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwfalse_lexer___TKwfalse___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 609;
+  fra.me.meth = LOCATE_NEW_TKwfalse_lexer___TKwfalse___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:609 */
+  fra.me.REG[1] = NEW_TKwfalse();
+  INIT_ATTRIBUTES__TKwfalse(fra.me.REG[1]);
+  lexer___TKwfalse___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwfalse(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwfalse_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwfalse_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwfalse();
+  INIT_ATTRIBUTES__TKwfalse(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwfalse(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwnull[70] = {
+  {(bigint) 2327 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwnull < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwnull < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwnull < Token: superclass typecheck marker */},
+  {(bigint) 2327 /* 5: TKwnull < TKwnull: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54181,14 +31650,9 @@ const classtable_elt_t VFT_ReduceAction92[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction92 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwnull < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54196,7 +31660,6 @@ const classtable_elt_t VFT_ReduceAction92[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54204,42 +31667,136 @@ const classtable_elt_t VFT_ReduceAction92[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction92 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction92___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction92 < ReduceAction92: superclass init_table position */},
-  {(bigint) parser___ReduceAction92___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction92(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwnull < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwnull___parser_index},
+  {(bigint) 0 /* 67: TKwnull < Token: superclass init_table position */},
+  {(bigint) lexer___TKwnull___init_tk},
+  {(bigint) 3 /* 69: TKwnull < TKwnull: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwnull::_parent */
+/* 3: Attribute TKwnull::_location */
+/* 4: Attribute TKwnull::_symbol_cache */
+/* 5: Attribute TKwnull::_text */
+void INIT_ATTRIBUTES__TKwnull(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwnull;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwnull(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction92;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction92(val_t self, char *from) {
-}
-val_t NEW_ReduceAction92_parser___ReduceAction92___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction92();
-  parser___ReduceAction92___init(self, init_table);
-  CHECKNEW_ReduceAction92(self, "parser::ReduceAction92::init for ReduceAction92");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwnull;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwnull(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwnull;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction93[48] = {
-  {(bigint) 259 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction93 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction93 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 259 /* 3: ReduceAction93 < ReduceAction93: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwnull_lexer___TKwnull___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 622;
+  fra.me.meth = LOCATE_NEW_TKwnull_lexer___TKwnull___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:622 */
+  fra.me.REG[1] = NEW_TKwnull();
+  INIT_ATTRIBUTES__TKwnull(fra.me.REG[1]);
+  lexer___TKwnull___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwnull(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwnull_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwnull_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwnull();
+  INIT_ATTRIBUTES__TKwnull(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwnull(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwas[70] = {
+  {(bigint) 2439 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwas < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwas < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwas < Token: superclass typecheck marker */},
+  {(bigint) 2439 /* 5: TKwas < TKwas: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54251,14 +31808,9 @@ const classtable_elt_t VFT_ReduceAction93[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction93 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwas < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54266,7 +31818,6 @@ const classtable_elt_t VFT_ReduceAction93[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54274,42 +31825,136 @@ const classtable_elt_t VFT_ReduceAction93[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction93 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction93___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction93 < ReduceAction93: superclass init_table position */},
-  {(bigint) parser___ReduceAction93___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction93(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwas < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwas___parser_index},
+  {(bigint) 0 /* 67: TKwas < Token: superclass init_table position */},
+  {(bigint) lexer___TKwas___init_tk},
+  {(bigint) 3 /* 69: TKwas < TKwas: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwas::_parent */
+/* 3: Attribute TKwas::_location */
+/* 4: Attribute TKwas::_symbol_cache */
+/* 5: Attribute TKwas::_text */
+void INIT_ATTRIBUTES__TKwas(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwas;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwas(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction93;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction93(val_t self, char *from) {
-}
-val_t NEW_ReduceAction93_parser___ReduceAction93___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction93();
-  parser___ReduceAction93___init(self, init_table);
-  CHECKNEW_ReduceAction93(self, "parser::ReduceAction93::init for ReduceAction93");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwas;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwas(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwas;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction94[48] = {
-  {(bigint) 255 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction94 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction94 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 255 /* 3: ReduceAction94 < ReduceAction94: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwas_lexer___TKwas___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 635;
+  fra.me.meth = LOCATE_NEW_TKwas_lexer___TKwas___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:635 */
+  fra.me.REG[1] = NEW_TKwas();
+  INIT_ATTRIBUTES__TKwas(fra.me.REG[1]);
+  lexer___TKwas___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwas(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwas_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwas_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwas();
+  INIT_ATTRIBUTES__TKwas(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwas(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwnullable[70] = {
+  {(bigint) 2323 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwnullable < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwnullable < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwnullable < Token: superclass typecheck marker */},
+  {(bigint) 2323 /* 5: TKwnullable < TKwnullable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54321,14 +31966,9 @@ const classtable_elt_t VFT_ReduceAction94[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction94 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwnullable < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54336,7 +31976,6 @@ const classtable_elt_t VFT_ReduceAction94[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54344,42 +31983,136 @@ const classtable_elt_t VFT_ReduceAction94[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction94 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction94___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction94 < ReduceAction94: superclass init_table position */},
-  {(bigint) parser___ReduceAction94___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction94(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwnullable < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwnullable___parser_index},
+  {(bigint) 0 /* 67: TKwnullable < Token: superclass init_table position */},
+  {(bigint) lexer___TKwnullable___init_tk},
+  {(bigint) 3 /* 69: TKwnullable < TKwnullable: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwnullable::_parent */
+/* 3: Attribute TKwnullable::_location */
+/* 4: Attribute TKwnullable::_symbol_cache */
+/* 5: Attribute TKwnullable::_text */
+void INIT_ATTRIBUTES__TKwnullable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwnullable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwnullable(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction94;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction94(val_t self, char *from) {
-}
-val_t NEW_ReduceAction94_parser___ReduceAction94___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction94();
-  parser___ReduceAction94___init(self, init_table);
-  CHECKNEW_ReduceAction94(self, "parser::ReduceAction94::init for ReduceAction94");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwnullable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwnullable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwnullable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction95[48] = {
-  {(bigint) 251 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction95 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction95 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 251 /* 3: ReduceAction95 < ReduceAction95: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwnullable_lexer___TKwnullable___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 648;
+  fra.me.meth = LOCATE_NEW_TKwnullable_lexer___TKwnullable___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:648 */
+  fra.me.REG[1] = NEW_TKwnullable();
+  INIT_ATTRIBUTES__TKwnullable(fra.me.REG[1]);
+  lexer___TKwnullable___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwnullable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwnullable_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwnullable_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwnullable();
+  INIT_ATTRIBUTES__TKwnullable(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwnullable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwisset[70] = {
+  {(bigint) 2355 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwisset < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwisset < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwisset < Token: superclass typecheck marker */},
+  {(bigint) 2355 /* 5: TKwisset < TKwisset: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54391,14 +32124,9 @@ const classtable_elt_t VFT_ReduceAction95[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction95 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwisset < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54406,7 +32134,6 @@ const classtable_elt_t VFT_ReduceAction95[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54414,42 +32141,136 @@ const classtable_elt_t VFT_ReduceAction95[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction95 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction95___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction95 < ReduceAction95: superclass init_table position */},
-  {(bigint) parser___ReduceAction95___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction95(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwisset < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwisset___parser_index},
+  {(bigint) 0 /* 67: TKwisset < Token: superclass init_table position */},
+  {(bigint) lexer___TKwisset___init_tk},
+  {(bigint) 3 /* 69: TKwisset < TKwisset: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwisset::_parent */
+/* 3: Attribute TKwisset::_location */
+/* 4: Attribute TKwisset::_symbol_cache */
+/* 5: Attribute TKwisset::_text */
+void INIT_ATTRIBUTES__TKwisset(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwisset;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwisset(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction95;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction95(val_t self, char *from) {
-}
-val_t NEW_ReduceAction95_parser___ReduceAction95___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction95();
-  parser___ReduceAction95___init(self, init_table);
-  CHECKNEW_ReduceAction95(self, "parser::ReduceAction95::init for ReduceAction95");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwisset;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwisset(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwisset;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction96[48] = {
-  {(bigint) 247 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction96 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction96 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 247 /* 3: ReduceAction96 < ReduceAction96: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwisset_lexer___TKwisset___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 661;
+  fra.me.meth = LOCATE_NEW_TKwisset_lexer___TKwisset___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:661 */
+  fra.me.REG[1] = NEW_TKwisset();
+  INIT_ATTRIBUTES__TKwisset(fra.me.REG[1]);
+  lexer___TKwisset___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwisset(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwisset_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwisset_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwisset();
+  INIT_ATTRIBUTES__TKwisset(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwisset(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TKwlabel[70] = {
+  {(bigint) 2351 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TKwlabel < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TKwlabel < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TKwlabel < Token: superclass typecheck marker */},
+  {(bigint) 2351 /* 5: TKwlabel < TKwlabel: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54461,14 +32282,9 @@ const classtable_elt_t VFT_ReduceAction96[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction96 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TKwlabel < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54476,7 +32292,6 @@ const classtable_elt_t VFT_ReduceAction96[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54484,42 +32299,136 @@ const classtable_elt_t VFT_ReduceAction96[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction96 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction96___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction96 < ReduceAction96: superclass init_table position */},
-  {(bigint) parser___ReduceAction96___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction96(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TKwlabel < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TKwlabel___parser_index},
+  {(bigint) 0 /* 67: TKwlabel < Token: superclass init_table position */},
+  {(bigint) lexer___TKwlabel___init_tk},
+  {(bigint) 3 /* 69: TKwlabel < TKwlabel: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TKwlabel::_parent */
+/* 3: Attribute TKwlabel::_location */
+/* 4: Attribute TKwlabel::_symbol_cache */
+/* 5: Attribute TKwlabel::_text */
+void INIT_ATTRIBUTES__TKwlabel(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TKwlabel;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TKwlabel(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction96;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction96(val_t self, char *from) {
-}
-val_t NEW_ReduceAction96_parser___ReduceAction96___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction96();
-  parser___ReduceAction96___init(self, init_table);
-  CHECKNEW_ReduceAction96(self, "parser::ReduceAction96::init for ReduceAction96");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TKwlabel;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TKwlabel(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TKwlabel;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction97[48] = {
-  {(bigint) 243 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction97 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction97 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 243 /* 3: ReduceAction97 < ReduceAction97: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TKwlabel_lexer___TKwlabel___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 674;
+  fra.me.meth = LOCATE_NEW_TKwlabel_lexer___TKwlabel___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:674 */
+  fra.me.REG[1] = NEW_TKwlabel();
+  INIT_ATTRIBUTES__TKwlabel(fra.me.REG[1]);
+  lexer___TKwlabel___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwlabel(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TKwlabel_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TKwlabel_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TKwlabel();
+  INIT_ATTRIBUTES__TKwlabel(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TKwlabel(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TOpar[70] = {
+  {(bigint) 2219 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TOpar < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TOpar < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TOpar < Token: superclass typecheck marker */},
+  {(bigint) 2219 /* 5: TOpar < TOpar: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54531,14 +32440,9 @@ const classtable_elt_t VFT_ReduceAction97[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction97 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TOpar < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54546,7 +32450,6 @@ const classtable_elt_t VFT_ReduceAction97[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54554,42 +32457,136 @@ const classtable_elt_t VFT_ReduceAction97[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction97 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction97___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction97 < ReduceAction97: superclass init_table position */},
-  {(bigint) parser___ReduceAction97___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction97(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TOpar < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TOpar___parser_index},
+  {(bigint) 0 /* 67: TOpar < Token: superclass init_table position */},
+  {(bigint) lexer___TOpar___init_tk},
+  {(bigint) 3 /* 69: TOpar < TOpar: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TOpar::_parent */
+/* 3: Attribute TOpar::_location */
+/* 4: Attribute TOpar::_symbol_cache */
+/* 5: Attribute TOpar::_text */
+void INIT_ATTRIBUTES__TOpar(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TOpar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TOpar(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction97;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction97(val_t self, char *from) {
-}
-val_t NEW_ReduceAction97_parser___ReduceAction97___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction97();
-  parser___ReduceAction97___init(self, init_table);
-  CHECKNEW_ReduceAction97(self, "parser::ReduceAction97::init for ReduceAction97");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TOpar;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TOpar(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TOpar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction98[48] = {
-  {(bigint) 239 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction98 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction98 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 239 /* 3: ReduceAction98 < ReduceAction98: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TOpar_lexer___TOpar___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 687;
+  fra.me.meth = LOCATE_NEW_TOpar_lexer___TOpar___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:687 */
+  fra.me.REG[1] = NEW_TOpar();
+  INIT_ATTRIBUTES__TOpar(fra.me.REG[1]);
+  lexer___TOpar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TOpar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TOpar_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TOpar_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TOpar();
+  INIT_ATTRIBUTES__TOpar(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TOpar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TCpar[70] = {
+  {(bigint) 2499 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TCpar < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TCpar < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TCpar < Token: superclass typecheck marker */},
+  {(bigint) 2499 /* 5: TCpar < TCpar: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54601,14 +32598,9 @@ const classtable_elt_t VFT_ReduceAction98[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction98 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TCpar < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54616,7 +32608,6 @@ const classtable_elt_t VFT_ReduceAction98[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54624,42 +32615,136 @@ const classtable_elt_t VFT_ReduceAction98[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction98 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction98___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction98 < ReduceAction98: superclass init_table position */},
-  {(bigint) parser___ReduceAction98___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction98(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TCpar < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TCpar___parser_index},
+  {(bigint) 0 /* 67: TCpar < Token: superclass init_table position */},
+  {(bigint) lexer___TCpar___init_tk},
+  {(bigint) 3 /* 69: TCpar < TCpar: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TCpar::_parent */
+/* 3: Attribute TCpar::_location */
+/* 4: Attribute TCpar::_symbol_cache */
+/* 5: Attribute TCpar::_text */
+void INIT_ATTRIBUTES__TCpar(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TCpar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TCpar(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction98;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction98(val_t self, char *from) {
-}
-val_t NEW_ReduceAction98_parser___ReduceAction98___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction98();
-  parser___ReduceAction98___init(self, init_table);
-  CHECKNEW_ReduceAction98(self, "parser::ReduceAction98::init for ReduceAction98");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TCpar;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TCpar(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TCpar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction99[48] = {
-  {(bigint) 235 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction99 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction99 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 235 /* 3: ReduceAction99 < ReduceAction99: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TCpar_lexer___TCpar___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 700;
+  fra.me.meth = LOCATE_NEW_TCpar_lexer___TCpar___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:700 */
+  fra.me.REG[1] = NEW_TCpar();
+  INIT_ATTRIBUTES__TCpar(fra.me.REG[1]);
+  lexer___TCpar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TCpar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TCpar_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TCpar_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TCpar();
+  INIT_ATTRIBUTES__TCpar(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TCpar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TObra[70] = {
+  {(bigint) 2223 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TObra < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TObra < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TObra < Token: superclass typecheck marker */},
+  {(bigint) 2223 /* 5: TObra < TObra: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54671,14 +32756,9 @@ const classtable_elt_t VFT_ReduceAction99[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction99 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TObra < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54686,7 +32766,6 @@ const classtable_elt_t VFT_ReduceAction99[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54694,42 +32773,136 @@ const classtable_elt_t VFT_ReduceAction99[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction99 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction99___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction99 < ReduceAction99: superclass init_table position */},
-  {(bigint) parser___ReduceAction99___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction99(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TObra < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TObra___parser_index},
+  {(bigint) 0 /* 67: TObra < Token: superclass init_table position */},
+  {(bigint) lexer___TObra___init_tk},
+  {(bigint) 3 /* 69: TObra < TObra: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TObra::_parent */
+/* 3: Attribute TObra::_location */
+/* 4: Attribute TObra::_symbol_cache */
+/* 5: Attribute TObra::_text */
+void INIT_ATTRIBUTES__TObra(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TObra;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TObra(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction99;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction99(val_t self, char *from) {
-}
-val_t NEW_ReduceAction99_parser___ReduceAction99___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction99();
-  parser___ReduceAction99___init(self, init_table);
-  CHECKNEW_ReduceAction99(self, "parser::ReduceAction99::init for ReduceAction99");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TObra;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TObra(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TObra;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction100[48] = {
-  {(bigint) 3171 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction100 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction100 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3171 /* 3: ReduceAction100 < ReduceAction100: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TObra_lexer___TObra___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 713;
+  fra.me.meth = LOCATE_NEW_TObra_lexer___TObra___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:713 */
+  fra.me.REG[1] = NEW_TObra();
+  INIT_ATTRIBUTES__TObra(fra.me.REG[1]);
+  lexer___TObra___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TObra(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TObra_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TObra_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TObra();
+  INIT_ATTRIBUTES__TObra(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TObra(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TCbra[70] = {
+  {(bigint) 2523 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TCbra < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TCbra < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TCbra < Token: superclass typecheck marker */},
+  {(bigint) 2523 /* 5: TCbra < TCbra: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54741,14 +32914,9 @@ const classtable_elt_t VFT_ReduceAction100[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction100 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TCbra < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54756,7 +32924,6 @@ const classtable_elt_t VFT_ReduceAction100[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54764,42 +32931,136 @@ const classtable_elt_t VFT_ReduceAction100[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction100 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction100___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction100 < ReduceAction100: superclass init_table position */},
-  {(bigint) parser___ReduceAction100___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction100(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TCbra < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TCbra___parser_index},
+  {(bigint) 0 /* 67: TCbra < Token: superclass init_table position */},
+  {(bigint) lexer___TCbra___init_tk},
+  {(bigint) 3 /* 69: TCbra < TCbra: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TCbra::_parent */
+/* 3: Attribute TCbra::_location */
+/* 4: Attribute TCbra::_symbol_cache */
+/* 5: Attribute TCbra::_text */
+void INIT_ATTRIBUTES__TCbra(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TCbra;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TCbra(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction100;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction100(val_t self, char *from) {
-}
-val_t NEW_ReduceAction100_parser___ReduceAction100___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction100();
-  parser___ReduceAction100___init(self, init_table);
-  CHECKNEW_ReduceAction100(self, "parser::ReduceAction100::init for ReduceAction100");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TCbra;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TCbra(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TCbra;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction101[48] = {
-  {(bigint) 3167 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction101 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction101 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3167 /* 3: ReduceAction101 < ReduceAction101: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TCbra_lexer___TCbra___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 726;
+  fra.me.meth = LOCATE_NEW_TCbra_lexer___TCbra___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:726 */
+  fra.me.REG[1] = NEW_TCbra();
+  INIT_ATTRIBUTES__TCbra(fra.me.REG[1]);
+  lexer___TCbra___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TCbra(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TCbra_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TCbra_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TCbra();
+  INIT_ATTRIBUTES__TCbra(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TCbra(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TComma[70] = {
+  {(bigint) 2507 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TComma < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TComma < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TComma < Token: superclass typecheck marker */},
+  {(bigint) 2507 /* 5: TComma < TComma: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54811,14 +33072,9 @@ const classtable_elt_t VFT_ReduceAction101[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction101 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TComma < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54826,7 +33082,6 @@ const classtable_elt_t VFT_ReduceAction101[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54834,42 +33089,136 @@ const classtable_elt_t VFT_ReduceAction101[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction101 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction101___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction101 < ReduceAction101: superclass init_table position */},
-  {(bigint) parser___ReduceAction101___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction101(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TComma < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TComma___parser_index},
+  {(bigint) 0 /* 67: TComma < Token: superclass init_table position */},
+  {(bigint) lexer___TComma___init_tk},
+  {(bigint) 3 /* 69: TComma < TComma: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TComma::_parent */
+/* 3: Attribute TComma::_location */
+/* 4: Attribute TComma::_symbol_cache */
+/* 5: Attribute TComma::_text */
+void INIT_ATTRIBUTES__TComma(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TComma;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TComma(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction101;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction101(val_t self, char *from) {
-}
-val_t NEW_ReduceAction101_parser___ReduceAction101___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction101();
-  parser___ReduceAction101___init(self, init_table);
-  CHECKNEW_ReduceAction101(self, "parser::ReduceAction101::init for ReduceAction101");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TComma;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TComma(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TComma;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction102[48] = {
-  {(bigint) 3163 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction102 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction102 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3163 /* 3: ReduceAction102 < ReduceAction102: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TComma_lexer___TComma___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 739;
+  fra.me.meth = LOCATE_NEW_TComma_lexer___TComma___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:739 */
+  fra.me.REG[1] = NEW_TComma();
+  INIT_ATTRIBUTES__TComma(fra.me.REG[1]);
+  lexer___TComma___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TComma(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TComma_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TComma_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TComma();
+  INIT_ATTRIBUTES__TComma(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TComma(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TColumn[70] = {
+  {(bigint) 2511 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TColumn < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TColumn < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TColumn < Token: superclass typecheck marker */},
+  {(bigint) 2511 /* 5: TColumn < TColumn: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54881,14 +33230,9 @@ const classtable_elt_t VFT_ReduceAction102[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction102 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TColumn < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54896,7 +33240,6 @@ const classtable_elt_t VFT_ReduceAction102[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54904,42 +33247,136 @@ const classtable_elt_t VFT_ReduceAction102[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction102 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction102___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction102 < ReduceAction102: superclass init_table position */},
-  {(bigint) parser___ReduceAction102___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction102(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction102;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction102(val_t self, char *from) {
-}
-val_t NEW_ReduceAction102_parser___ReduceAction102___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction102();
-  parser___ReduceAction102___init(self, init_table);
-  CHECKNEW_ReduceAction102(self, "parser::ReduceAction102::init for ReduceAction102");
-  return self;
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TColumn < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TColumn___parser_index},
+  {(bigint) 0 /* 67: TColumn < Token: superclass init_table position */},
+  {(bigint) lexer___TColumn___init_tk},
+  {(bigint) 3 /* 69: TColumn < TColumn: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TColumn::_parent */
+/* 3: Attribute TColumn::_location */
+/* 4: Attribute TColumn::_symbol_cache */
+/* 5: Attribute TColumn::_text */
+void INIT_ATTRIBUTES__TColumn(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TColumn;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TColumn(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TColumn;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TColumn(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TColumn;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction103[48] = {
-  {(bigint) 3159 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction103 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction103 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3159 /* 3: ReduceAction103 < ReduceAction103: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TColumn_lexer___TColumn___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 752;
+  fra.me.meth = LOCATE_NEW_TColumn_lexer___TColumn___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:752 */
+  fra.me.REG[1] = NEW_TColumn();
+  INIT_ATTRIBUTES__TColumn(fra.me.REG[1]);
+  lexer___TColumn___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TColumn(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TColumn_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TColumn_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TColumn();
+  INIT_ATTRIBUTES__TColumn(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TColumn(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TQuad[70] = {
+  {(bigint) 2203 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TQuad < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TQuad < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TQuad < Token: superclass typecheck marker */},
+  {(bigint) 2203 /* 5: TQuad < TQuad: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54951,14 +33388,9 @@ const classtable_elt_t VFT_ReduceAction103[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction103 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TQuad < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -54966,7 +33398,6 @@ const classtable_elt_t VFT_ReduceAction103[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -54974,42 +33405,136 @@ const classtable_elt_t VFT_ReduceAction103[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction103 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction103___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction103 < ReduceAction103: superclass init_table position */},
-  {(bigint) parser___ReduceAction103___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction103(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TQuad < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TQuad___parser_index},
+  {(bigint) 0 /* 67: TQuad < Token: superclass init_table position */},
+  {(bigint) lexer___TQuad___init_tk},
+  {(bigint) 3 /* 69: TQuad < TQuad: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TQuad::_parent */
+/* 3: Attribute TQuad::_location */
+/* 4: Attribute TQuad::_symbol_cache */
+/* 5: Attribute TQuad::_text */
+void INIT_ATTRIBUTES__TQuad(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TQuad;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TQuad(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction103;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction103(val_t self, char *from) {
-}
-val_t NEW_ReduceAction103_parser___ReduceAction103___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction103();
-  parser___ReduceAction103___init(self, init_table);
-  CHECKNEW_ReduceAction103(self, "parser::ReduceAction103::init for ReduceAction103");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TQuad;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TQuad(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TQuad;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction104[48] = {
-  {(bigint) 3155 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction104 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction104 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3155 /* 3: ReduceAction104 < ReduceAction104: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TQuad_lexer___TQuad___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 765;
+  fra.me.meth = LOCATE_NEW_TQuad_lexer___TQuad___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:765 */
+  fra.me.REG[1] = NEW_TQuad();
+  INIT_ATTRIBUTES__TQuad(fra.me.REG[1]);
+  lexer___TQuad___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TQuad(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TQuad_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TQuad_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TQuad();
+  INIT_ATTRIBUTES__TQuad(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TQuad(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TAssign[70] = {
+  {(bigint) 2535 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TAssign < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TAssign < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TAssign < Token: superclass typecheck marker */},
+  {(bigint) 2535 /* 5: TAssign < TAssign: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55021,14 +33546,9 @@ const classtable_elt_t VFT_ReduceAction104[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction104 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TAssign < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55036,7 +33556,6 @@ const classtable_elt_t VFT_ReduceAction104[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55044,42 +33563,136 @@ const classtable_elt_t VFT_ReduceAction104[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction104 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction104___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction104 < ReduceAction104: superclass init_table position */},
-  {(bigint) parser___ReduceAction104___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction104(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TAssign < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TAssign___parser_index},
+  {(bigint) 0 /* 67: TAssign < Token: superclass init_table position */},
+  {(bigint) lexer___TAssign___init_tk},
+  {(bigint) 3 /* 69: TAssign < TAssign: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TAssign::_parent */
+/* 3: Attribute TAssign::_location */
+/* 4: Attribute TAssign::_symbol_cache */
+/* 5: Attribute TAssign::_text */
+void INIT_ATTRIBUTES__TAssign(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TAssign;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TAssign(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction104;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction104(val_t self, char *from) {
-}
-val_t NEW_ReduceAction104_parser___ReduceAction104___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction104();
-  parser___ReduceAction104___init(self, init_table);
-  CHECKNEW_ReduceAction104(self, "parser::ReduceAction104::init for ReduceAction104");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TAssign;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TAssign(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TAssign;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction105[48] = {
-  {(bigint) 3151 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction105 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction105 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3151 /* 3: ReduceAction105 < ReduceAction105: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TAssign_lexer___TAssign___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 778;
+  fra.me.meth = LOCATE_NEW_TAssign_lexer___TAssign___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:778 */
+  fra.me.REG[1] = NEW_TAssign();
+  INIT_ATTRIBUTES__TAssign(fra.me.REG[1]);
+  lexer___TAssign___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TAssign(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TAssign_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TAssign_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TAssign();
+  INIT_ATTRIBUTES__TAssign(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TAssign(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TPluseq[70] = {
+  {(bigint) 2207 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TPluseq < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TPluseq < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TPluseq < Token: superclass typecheck marker */},
+  {(bigint) 2207 /* 5: TPluseq < TPluseq: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55091,14 +33704,9 @@ const classtable_elt_t VFT_ReduceAction105[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction105 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TPluseq < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55106,7 +33714,6 @@ const classtable_elt_t VFT_ReduceAction105[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55114,42 +33721,136 @@ const classtable_elt_t VFT_ReduceAction105[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction105 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction105___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction105 < ReduceAction105: superclass init_table position */},
-  {(bigint) parser___ReduceAction105___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction105(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TPluseq < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TPluseq___parser_index},
+  {(bigint) 0 /* 67: TPluseq < Token: superclass init_table position */},
+  {(bigint) lexer___TPluseq___init_tk},
+  {(bigint) 3 /* 69: TPluseq < TPluseq: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TPluseq::_parent */
+/* 3: Attribute TPluseq::_location */
+/* 4: Attribute TPluseq::_symbol_cache */
+/* 5: Attribute TPluseq::_text */
+void INIT_ATTRIBUTES__TPluseq(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TPluseq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TPluseq(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction105;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction105(val_t self, char *from) {
-}
-val_t NEW_ReduceAction105_parser___ReduceAction105___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction105();
-  parser___ReduceAction105___init(self, init_table);
-  CHECKNEW_ReduceAction105(self, "parser::ReduceAction105::init for ReduceAction105");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TPluseq;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TPluseq(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TPluseq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction106[48] = {
-  {(bigint) 3147 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction106 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction106 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3147 /* 3: ReduceAction106 < ReduceAction106: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TPluseq_lexer___TPluseq___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 791;
+  fra.me.meth = LOCATE_NEW_TPluseq_lexer___TPluseq___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:791 */
+  fra.me.REG[1] = NEW_TPluseq();
+  INIT_ATTRIBUTES__TPluseq(fra.me.REG[1]);
+  lexer___TPluseq___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TPluseq(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TPluseq_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TPluseq_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TPluseq();
+  INIT_ATTRIBUTES__TPluseq(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TPluseq(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TMinuseq[70] = {
+  {(bigint) 2235 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TMinuseq < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TMinuseq < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TMinuseq < Token: superclass typecheck marker */},
+  {(bigint) 2235 /* 5: TMinuseq < TMinuseq: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55161,14 +33862,9 @@ const classtable_elt_t VFT_ReduceAction106[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction106 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TMinuseq < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55176,7 +33872,6 @@ const classtable_elt_t VFT_ReduceAction106[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55184,42 +33879,136 @@ const classtable_elt_t VFT_ReduceAction106[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction106 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction106___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction106 < ReduceAction106: superclass init_table position */},
-  {(bigint) parser___ReduceAction106___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction106(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TMinuseq < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TMinuseq___parser_index},
+  {(bigint) 0 /* 67: TMinuseq < Token: superclass init_table position */},
+  {(bigint) lexer___TMinuseq___init_tk},
+  {(bigint) 3 /* 69: TMinuseq < TMinuseq: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TMinuseq::_parent */
+/* 3: Attribute TMinuseq::_location */
+/* 4: Attribute TMinuseq::_symbol_cache */
+/* 5: Attribute TMinuseq::_text */
+void INIT_ATTRIBUTES__TMinuseq(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TMinuseq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TMinuseq(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction106;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction106(val_t self, char *from) {
-}
-val_t NEW_ReduceAction106_parser___ReduceAction106___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction106();
-  parser___ReduceAction106___init(self, init_table);
-  CHECKNEW_ReduceAction106(self, "parser::ReduceAction106::init for ReduceAction106");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TMinuseq;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TMinuseq(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TMinuseq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction107[48] = {
-  {(bigint) 3143 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction107 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction107 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3143 /* 3: ReduceAction107 < ReduceAction107: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TMinuseq_lexer___TMinuseq___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 804;
+  fra.me.meth = LOCATE_NEW_TMinuseq_lexer___TMinuseq___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:804 */
+  fra.me.REG[1] = NEW_TMinuseq();
+  INIT_ATTRIBUTES__TMinuseq(fra.me.REG[1]);
+  lexer___TMinuseq___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TMinuseq(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TMinuseq_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TMinuseq_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TMinuseq();
+  INIT_ATTRIBUTES__TMinuseq(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TMinuseq(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TDotdotdot[70] = {
+  {(bigint) 2487 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TDotdotdot < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TDotdotdot < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TDotdotdot < Token: superclass typecheck marker */},
+  {(bigint) 2487 /* 5: TDotdotdot < TDotdotdot: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55231,14 +34020,9 @@ const classtable_elt_t VFT_ReduceAction107[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction107 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TDotdotdot < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55246,7 +34030,6 @@ const classtable_elt_t VFT_ReduceAction107[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55254,42 +34037,136 @@ const classtable_elt_t VFT_ReduceAction107[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction107 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction107___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction107 < ReduceAction107: superclass init_table position */},
-  {(bigint) parser___ReduceAction107___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction107(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TDotdotdot < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TDotdotdot___parser_index},
+  {(bigint) 0 /* 67: TDotdotdot < Token: superclass init_table position */},
+  {(bigint) lexer___TDotdotdot___init_tk},
+  {(bigint) 3 /* 69: TDotdotdot < TDotdotdot: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TDotdotdot::_parent */
+/* 3: Attribute TDotdotdot::_location */
+/* 4: Attribute TDotdotdot::_symbol_cache */
+/* 5: Attribute TDotdotdot::_text */
+void INIT_ATTRIBUTES__TDotdotdot(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TDotdotdot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TDotdotdot(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction107;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction107(val_t self, char *from) {
-}
-val_t NEW_ReduceAction107_parser___ReduceAction107___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction107();
-  parser___ReduceAction107___init(self, init_table);
-  CHECKNEW_ReduceAction107(self, "parser::ReduceAction107::init for ReduceAction107");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TDotdotdot;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TDotdotdot(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TDotdotdot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction108[48] = {
-  {(bigint) 3139 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction108 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction108 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3139 /* 3: ReduceAction108 < ReduceAction108: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TDotdotdot_lexer___TDotdotdot___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 817;
+  fra.me.meth = LOCATE_NEW_TDotdotdot_lexer___TDotdotdot___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:817 */
+  fra.me.REG[1] = NEW_TDotdotdot();
+  INIT_ATTRIBUTES__TDotdotdot(fra.me.REG[1]);
+  lexer___TDotdotdot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TDotdotdot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TDotdotdot_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TDotdotdot_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TDotdotdot();
+  INIT_ATTRIBUTES__TDotdotdot(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TDotdotdot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TDotdot[70] = {
+  {(bigint) 2491 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TDotdot < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TDotdot < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TDotdot < Token: superclass typecheck marker */},
+  {(bigint) 2491 /* 5: TDotdot < TDotdot: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55301,14 +34178,9 @@ const classtable_elt_t VFT_ReduceAction108[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction108 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TDotdot < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55316,7 +34188,6 @@ const classtable_elt_t VFT_ReduceAction108[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55324,42 +34195,136 @@ const classtable_elt_t VFT_ReduceAction108[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction108 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction108___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction108 < ReduceAction108: superclass init_table position */},
-  {(bigint) parser___ReduceAction108___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction108(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TDotdot < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TDotdot___parser_index},
+  {(bigint) 0 /* 67: TDotdot < Token: superclass init_table position */},
+  {(bigint) lexer___TDotdot___init_tk},
+  {(bigint) 3 /* 69: TDotdot < TDotdot: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TDotdot::_parent */
+/* 3: Attribute TDotdot::_location */
+/* 4: Attribute TDotdot::_symbol_cache */
+/* 5: Attribute TDotdot::_text */
+void INIT_ATTRIBUTES__TDotdot(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TDotdot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TDotdot(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction108;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction108(val_t self, char *from) {
-}
-val_t NEW_ReduceAction108_parser___ReduceAction108___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction108();
-  parser___ReduceAction108___init(self, init_table);
-  CHECKNEW_ReduceAction108(self, "parser::ReduceAction108::init for ReduceAction108");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TDotdot;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TDotdot(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TDotdot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction109[48] = {
-  {(bigint) 3135 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction109 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction109 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3135 /* 3: ReduceAction109 < ReduceAction109: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TDotdot_lexer___TDotdot___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 830;
+  fra.me.meth = LOCATE_NEW_TDotdot_lexer___TDotdot___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:830 */
+  fra.me.REG[1] = NEW_TDotdot();
+  INIT_ATTRIBUTES__TDotdot(fra.me.REG[1]);
+  lexer___TDotdot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TDotdot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TDotdot_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TDotdot_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TDotdot();
+  INIT_ATTRIBUTES__TDotdot(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TDotdot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TDot[70] = {
+  {(bigint) 2495 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TDot < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TDot < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TDot < Token: superclass typecheck marker */},
+  {(bigint) 2495 /* 5: TDot < TDot: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55371,14 +34336,9 @@ const classtable_elt_t VFT_ReduceAction109[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction109 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TDot < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55386,7 +34346,6 @@ const classtable_elt_t VFT_ReduceAction109[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55394,42 +34353,136 @@ const classtable_elt_t VFT_ReduceAction109[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction109 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction109___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction109 < ReduceAction109: superclass init_table position */},
-  {(bigint) parser___ReduceAction109___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction109(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TDot < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TDot___parser_index},
+  {(bigint) 0 /* 67: TDot < Token: superclass init_table position */},
+  {(bigint) lexer___TDot___init_tk},
+  {(bigint) 3 /* 69: TDot < TDot: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TDot::_parent */
+/* 3: Attribute TDot::_location */
+/* 4: Attribute TDot::_symbol_cache */
+/* 5: Attribute TDot::_text */
+void INIT_ATTRIBUTES__TDot(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TDot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TDot(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction109;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction109(val_t self, char *from) {
-}
-val_t NEW_ReduceAction109_parser___ReduceAction109___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction109();
-  parser___ReduceAction109___init(self, init_table);
-  CHECKNEW_ReduceAction109(self, "parser::ReduceAction109::init for ReduceAction109");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TDot;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TDot(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TDot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction110[48] = {
-  {(bigint) 3127 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction110 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction110 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3127 /* 3: ReduceAction110 < ReduceAction110: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TDot_lexer___TDot___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 843;
+  fra.me.meth = LOCATE_NEW_TDot_lexer___TDot___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:843 */
+  fra.me.REG[1] = NEW_TDot();
+  INIT_ATTRIBUTES__TDot(fra.me.REG[1]);
+  lexer___TDot___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TDot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TDot_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TDot_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TDot();
+  INIT_ATTRIBUTES__TDot(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TDot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TPlus[70] = {
+  {(bigint) 2211 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TPlus < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TPlus < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TPlus < Token: superclass typecheck marker */},
+  {(bigint) 2211 /* 5: TPlus < TPlus: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55441,14 +34494,9 @@ const classtable_elt_t VFT_ReduceAction110[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction110 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TPlus < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55456,7 +34504,6 @@ const classtable_elt_t VFT_ReduceAction110[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55464,42 +34511,136 @@ const classtable_elt_t VFT_ReduceAction110[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction110 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction110___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction110 < ReduceAction110: superclass init_table position */},
-  {(bigint) parser___ReduceAction110___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction110(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TPlus < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TPlus___parser_index},
+  {(bigint) 0 /* 67: TPlus < Token: superclass init_table position */},
+  {(bigint) lexer___TPlus___init_tk},
+  {(bigint) 3 /* 69: TPlus < TPlus: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TPlus::_parent */
+/* 3: Attribute TPlus::_location */
+/* 4: Attribute TPlus::_symbol_cache */
+/* 5: Attribute TPlus::_text */
+void INIT_ATTRIBUTES__TPlus(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TPlus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TPlus(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction110;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction110(val_t self, char *from) {
-}
-val_t NEW_ReduceAction110_parser___ReduceAction110___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction110();
-  parser___ReduceAction110___init(self, init_table);
-  CHECKNEW_ReduceAction110(self, "parser::ReduceAction110::init for ReduceAction110");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TPlus;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TPlus(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TPlus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction111[48] = {
-  {(bigint) 3123 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction111 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction111 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3123 /* 3: ReduceAction111 < ReduceAction111: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TPlus_lexer___TPlus___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 856;
+  fra.me.meth = LOCATE_NEW_TPlus_lexer___TPlus___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:856 */
+  fra.me.REG[1] = NEW_TPlus();
+  INIT_ATTRIBUTES__TPlus(fra.me.REG[1]);
+  lexer___TPlus___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TPlus(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TPlus_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TPlus_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TPlus();
+  INIT_ATTRIBUTES__TPlus(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TPlus(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TMinus[70] = {
+  {(bigint) 2239 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TMinus < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TMinus < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TMinus < Token: superclass typecheck marker */},
+  {(bigint) 2239 /* 5: TMinus < TMinus: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55511,14 +34652,9 @@ const classtable_elt_t VFT_ReduceAction111[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction111 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TMinus < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55526,7 +34662,6 @@ const classtable_elt_t VFT_ReduceAction111[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55534,42 +34669,136 @@ const classtable_elt_t VFT_ReduceAction111[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction111 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction111___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction111 < ReduceAction111: superclass init_table position */},
-  {(bigint) parser___ReduceAction111___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction111(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TMinus < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TMinus___parser_index},
+  {(bigint) 0 /* 67: TMinus < Token: superclass init_table position */},
+  {(bigint) lexer___TMinus___init_tk},
+  {(bigint) 3 /* 69: TMinus < TMinus: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TMinus::_parent */
+/* 3: Attribute TMinus::_location */
+/* 4: Attribute TMinus::_symbol_cache */
+/* 5: Attribute TMinus::_text */
+void INIT_ATTRIBUTES__TMinus(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TMinus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TMinus(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction111;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction111(val_t self, char *from) {
-}
-val_t NEW_ReduceAction111_parser___ReduceAction111___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction111();
-  parser___ReduceAction111___init(self, init_table);
-  CHECKNEW_ReduceAction111(self, "parser::ReduceAction111::init for ReduceAction111");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TMinus;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TMinus(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TMinus;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction112[48] = {
-  {(bigint) 3119 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction112 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction112 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3119 /* 3: ReduceAction112 < ReduceAction112: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TMinus_lexer___TMinus___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 869;
+  fra.me.meth = LOCATE_NEW_TMinus_lexer___TMinus___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:869 */
+  fra.me.REG[1] = NEW_TMinus();
+  INIT_ATTRIBUTES__TMinus(fra.me.REG[1]);
+  lexer___TMinus___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TMinus(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TMinus_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TMinus_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TMinus();
+  INIT_ATTRIBUTES__TMinus(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TMinus(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TStar[70] = {
+  {(bigint) 2195 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TStar < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TStar < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TStar < Token: superclass typecheck marker */},
+  {(bigint) 2195 /* 5: TStar < TStar: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55581,14 +34810,9 @@ const classtable_elt_t VFT_ReduceAction112[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction112 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TStar < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55596,7 +34820,6 @@ const classtable_elt_t VFT_ReduceAction112[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55604,42 +34827,136 @@ const classtable_elt_t VFT_ReduceAction112[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction112 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction112___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction112 < ReduceAction112: superclass init_table position */},
-  {(bigint) parser___ReduceAction112___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction112(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TStar < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TStar___parser_index},
+  {(bigint) 0 /* 67: TStar < Token: superclass init_table position */},
+  {(bigint) lexer___TStar___init_tk},
+  {(bigint) 3 /* 69: TStar < TStar: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TStar::_parent */
+/* 3: Attribute TStar::_location */
+/* 4: Attribute TStar::_symbol_cache */
+/* 5: Attribute TStar::_text */
+void INIT_ATTRIBUTES__TStar(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TStar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TStar(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction112;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction112(val_t self, char *from) {
-}
-val_t NEW_ReduceAction112_parser___ReduceAction112___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction112();
-  parser___ReduceAction112___init(self, init_table);
-  CHECKNEW_ReduceAction112(self, "parser::ReduceAction112::init for ReduceAction112");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TStar;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TStar(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TStar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction113[48] = {
-  {(bigint) 3115 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction113 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction113 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3115 /* 3: ReduceAction113 < ReduceAction113: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TStar_lexer___TStar___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 882;
+  fra.me.meth = LOCATE_NEW_TStar_lexer___TStar___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:882 */
+  fra.me.REG[1] = NEW_TStar();
+  INIT_ATTRIBUTES__TStar(fra.me.REG[1]);
+  lexer___TStar___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TStar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TStar_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TStar_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TStar();
+  INIT_ATTRIBUTES__TStar(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TStar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TSlash[70] = {
+  {(bigint) 2199 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TSlash < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TSlash < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TSlash < Token: superclass typecheck marker */},
+  {(bigint) 2199 /* 5: TSlash < TSlash: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55651,14 +34968,9 @@ const classtable_elt_t VFT_ReduceAction113[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction113 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TSlash < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55666,7 +34978,6 @@ const classtable_elt_t VFT_ReduceAction113[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55674,42 +34985,136 @@ const classtable_elt_t VFT_ReduceAction113[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction113 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction113___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction113 < ReduceAction113: superclass init_table position */},
-  {(bigint) parser___ReduceAction113___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction113(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TSlash < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TSlash___parser_index},
+  {(bigint) 0 /* 67: TSlash < Token: superclass init_table position */},
+  {(bigint) lexer___TSlash___init_tk},
+  {(bigint) 3 /* 69: TSlash < TSlash: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TSlash::_parent */
+/* 3: Attribute TSlash::_location */
+/* 4: Attribute TSlash::_symbol_cache */
+/* 5: Attribute TSlash::_text */
+void INIT_ATTRIBUTES__TSlash(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TSlash;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TSlash(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction113;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction113(val_t self, char *from) {
-}
-val_t NEW_ReduceAction113_parser___ReduceAction113___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction113();
-  parser___ReduceAction113___init(self, init_table);
-  CHECKNEW_ReduceAction113(self, "parser::ReduceAction113::init for ReduceAction113");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TSlash;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TSlash(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TSlash;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction114[48] = {
-  {(bigint) 3111 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction114 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction114 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3111 /* 3: ReduceAction114 < ReduceAction114: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TSlash_lexer___TSlash___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 895;
+  fra.me.meth = LOCATE_NEW_TSlash_lexer___TSlash___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:895 */
+  fra.me.REG[1] = NEW_TSlash();
+  INIT_ATTRIBUTES__TSlash(fra.me.REG[1]);
+  lexer___TSlash___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TSlash(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TSlash_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TSlash_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TSlash();
+  INIT_ATTRIBUTES__TSlash(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TSlash(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TPercent[70] = {
+  {(bigint) 2215 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TPercent < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TPercent < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TPercent < Token: superclass typecheck marker */},
+  {(bigint) 2215 /* 5: TPercent < TPercent: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55721,14 +35126,9 @@ const classtable_elt_t VFT_ReduceAction114[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction114 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TPercent < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55736,7 +35136,6 @@ const classtable_elt_t VFT_ReduceAction114[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55744,42 +35143,136 @@ const classtable_elt_t VFT_ReduceAction114[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction114 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction114___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction114 < ReduceAction114: superclass init_table position */},
-  {(bigint) parser___ReduceAction114___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction114(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TPercent < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TPercent___parser_index},
+  {(bigint) 0 /* 67: TPercent < Token: superclass init_table position */},
+  {(bigint) lexer___TPercent___init_tk},
+  {(bigint) 3 /* 69: TPercent < TPercent: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TPercent::_parent */
+/* 3: Attribute TPercent::_location */
+/* 4: Attribute TPercent::_symbol_cache */
+/* 5: Attribute TPercent::_text */
+void INIT_ATTRIBUTES__TPercent(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TPercent;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TPercent(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction114;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction114(val_t self, char *from) {
-}
-val_t NEW_ReduceAction114_parser___ReduceAction114___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction114();
-  parser___ReduceAction114___init(self, init_table);
-  CHECKNEW_ReduceAction114(self, "parser::ReduceAction114::init for ReduceAction114");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TPercent;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TPercent(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TPercent;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction115[48] = {
-  {(bigint) 3107 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction115 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction115 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3107 /* 3: ReduceAction115 < ReduceAction115: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TPercent_lexer___TPercent___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 908;
+  fra.me.meth = LOCATE_NEW_TPercent_lexer___TPercent___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:908 */
+  fra.me.REG[1] = NEW_TPercent();
+  INIT_ATTRIBUTES__TPercent(fra.me.REG[1]);
+  lexer___TPercent___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TPercent(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TPercent_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TPercent_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TPercent();
+  INIT_ATTRIBUTES__TPercent(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TPercent(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TEq[70] = {
+  {(bigint) 2475 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TEq < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TEq < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TEq < Token: superclass typecheck marker */},
+  {(bigint) 2475 /* 5: TEq < TEq: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55791,14 +35284,9 @@ const classtable_elt_t VFT_ReduceAction115[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction115 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TEq < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55806,7 +35294,6 @@ const classtable_elt_t VFT_ReduceAction115[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55814,42 +35301,136 @@ const classtable_elt_t VFT_ReduceAction115[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction115 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction115___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction115 < ReduceAction115: superclass init_table position */},
-  {(bigint) parser___ReduceAction115___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction115(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TEq < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TEq___parser_index},
+  {(bigint) 0 /* 67: TEq < Token: superclass init_table position */},
+  {(bigint) lexer___TEq___init_tk},
+  {(bigint) 3 /* 69: TEq < TEq: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TEq::_parent */
+/* 3: Attribute TEq::_location */
+/* 4: Attribute TEq::_symbol_cache */
+/* 5: Attribute TEq::_text */
+void INIT_ATTRIBUTES__TEq(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TEq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TEq(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction115;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction115(val_t self, char *from) {
-}
-val_t NEW_ReduceAction115_parser___ReduceAction115___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction115();
-  parser___ReduceAction115___init(self, init_table);
-  CHECKNEW_ReduceAction115(self, "parser::ReduceAction115::init for ReduceAction115");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TEq;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TEq(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TEq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction116[48] = {
-  {(bigint) 3103 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction116 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction116 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3103 /* 3: ReduceAction116 < ReduceAction116: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TEq_lexer___TEq___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 921;
+  fra.me.meth = LOCATE_NEW_TEq_lexer___TEq___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:921 */
+  fra.me.REG[1] = NEW_TEq();
+  INIT_ATTRIBUTES__TEq(fra.me.REG[1]);
+  lexer___TEq___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TEq(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TEq_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TEq_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TEq();
+  INIT_ATTRIBUTES__TEq(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TEq(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TNe[70] = {
+  {(bigint) 2231 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TNe < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TNe < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TNe < Token: superclass typecheck marker */},
+  {(bigint) 2231 /* 5: TNe < TNe: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55861,14 +35442,9 @@ const classtable_elt_t VFT_ReduceAction116[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction116 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TNe < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55876,7 +35452,6 @@ const classtable_elt_t VFT_ReduceAction116[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55884,42 +35459,136 @@ const classtable_elt_t VFT_ReduceAction116[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction116 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction116___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction116 < ReduceAction116: superclass init_table position */},
-  {(bigint) parser___ReduceAction116___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction116(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TNe < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TNe___parser_index},
+  {(bigint) 0 /* 67: TNe < Token: superclass init_table position */},
+  {(bigint) lexer___TNe___init_tk},
+  {(bigint) 3 /* 69: TNe < TNe: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TNe::_parent */
+/* 3: Attribute TNe::_location */
+/* 4: Attribute TNe::_symbol_cache */
+/* 5: Attribute TNe::_text */
+void INIT_ATTRIBUTES__TNe(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TNe;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TNe(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction116;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction116(val_t self, char *from) {
-}
-val_t NEW_ReduceAction116_parser___ReduceAction116___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction116();
-  parser___ReduceAction116___init(self, init_table);
-  CHECKNEW_ReduceAction116(self, "parser::ReduceAction116::init for ReduceAction116");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TNe;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TNe(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TNe;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction117[48] = {
-  {(bigint) 3099 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction117 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction117 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3099 /* 3: ReduceAction117 < ReduceAction117: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TNe_lexer___TNe___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 934;
+  fra.me.meth = LOCATE_NEW_TNe_lexer___TNe___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:934 */
+  fra.me.REG[1] = NEW_TNe();
+  INIT_ATTRIBUTES__TNe(fra.me.REG[1]);
+  lexer___TNe___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TNe(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TNe_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TNe_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TNe();
+  INIT_ATTRIBUTES__TNe(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TNe(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TLt[70] = {
+  {(bigint) 2247 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TLt < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TLt < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TLt < Token: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: TLt < TLt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55931,14 +35600,9 @@ const classtable_elt_t VFT_ReduceAction117[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction117 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TLt < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -55946,7 +35610,6 @@ const classtable_elt_t VFT_ReduceAction117[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -55954,42 +35617,136 @@ const classtable_elt_t VFT_ReduceAction117[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction117 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction117___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction117 < ReduceAction117: superclass init_table position */},
-  {(bigint) parser___ReduceAction117___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction117(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TLt < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TLt___parser_index},
+  {(bigint) 0 /* 67: TLt < Token: superclass init_table position */},
+  {(bigint) lexer___TLt___init_tk},
+  {(bigint) 3 /* 69: TLt < TLt: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TLt::_parent */
+/* 3: Attribute TLt::_location */
+/* 4: Attribute TLt::_symbol_cache */
+/* 5: Attribute TLt::_text */
+void INIT_ATTRIBUTES__TLt(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TLt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TLt(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction117;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction117(val_t self, char *from) {
-}
-val_t NEW_ReduceAction117_parser___ReduceAction117___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction117();
-  parser___ReduceAction117___init(self, init_table);
-  CHECKNEW_ReduceAction117(self, "parser::ReduceAction117::init for ReduceAction117");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TLt;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TLt(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TLt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction118[48] = {
-  {(bigint) 3095 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction118 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction118 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3095 /* 3: ReduceAction118 < ReduceAction118: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TLt_lexer___TLt___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 947;
+  fra.me.meth = LOCATE_NEW_TLt_lexer___TLt___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:947 */
+  fra.me.REG[1] = NEW_TLt();
+  INIT_ATTRIBUTES__TLt(fra.me.REG[1]);
+  lexer___TLt___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TLt(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TLt_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TLt_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TLt();
+  INIT_ATTRIBUTES__TLt(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TLt(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TLe[70] = {
+  {(bigint) 2255 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TLe < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TLe < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TLe < Token: superclass typecheck marker */},
+  {(bigint) 2255 /* 5: TLe < TLe: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56001,14 +35758,9 @@ const classtable_elt_t VFT_ReduceAction118[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction118 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TLe < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56016,7 +35768,6 @@ const classtable_elt_t VFT_ReduceAction118[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56024,42 +35775,136 @@ const classtable_elt_t VFT_ReduceAction118[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction118 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction118___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction118 < ReduceAction118: superclass init_table position */},
-  {(bigint) parser___ReduceAction118___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction118(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TLe < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TLe___parser_index},
+  {(bigint) 0 /* 67: TLe < Token: superclass init_table position */},
+  {(bigint) lexer___TLe___init_tk},
+  {(bigint) 3 /* 69: TLe < TLe: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TLe::_parent */
+/* 3: Attribute TLe::_location */
+/* 4: Attribute TLe::_symbol_cache */
+/* 5: Attribute TLe::_text */
+void INIT_ATTRIBUTES__TLe(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TLe;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TLe(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction118;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction118(val_t self, char *from) {
-}
-val_t NEW_ReduceAction118_parser___ReduceAction118___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction118();
-  parser___ReduceAction118___init(self, init_table);
-  CHECKNEW_ReduceAction118(self, "parser::ReduceAction118::init for ReduceAction118");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TLe;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TLe(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TLe;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction119[48] = {
-  {(bigint) 3091 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction119 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction119 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3091 /* 3: ReduceAction119 < ReduceAction119: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TLe_lexer___TLe___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 960;
+  fra.me.meth = LOCATE_NEW_TLe_lexer___TLe___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:960 */
+  fra.me.REG[1] = NEW_TLe();
+  INIT_ATTRIBUTES__TLe(fra.me.REG[1]);
+  lexer___TLe___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TLe(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TLe_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TLe_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TLe();
+  INIT_ATTRIBUTES__TLe(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TLe(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TLl[70] = {
+  {(bigint) 2251 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TLl < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TLl < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TLl < Token: superclass typecheck marker */},
+  {(bigint) 2251 /* 5: TLl < TLl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56071,14 +35916,9 @@ const classtable_elt_t VFT_ReduceAction119[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction119 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TLl < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56086,7 +35926,6 @@ const classtable_elt_t VFT_ReduceAction119[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56094,42 +35933,136 @@ const classtable_elt_t VFT_ReduceAction119[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction119 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction119___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction119 < ReduceAction119: superclass init_table position */},
-  {(bigint) parser___ReduceAction119___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction119(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TLl < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TLl___parser_index},
+  {(bigint) 0 /* 67: TLl < Token: superclass init_table position */},
+  {(bigint) lexer___TLl___init_tk},
+  {(bigint) 3 /* 69: TLl < TLl: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TLl::_parent */
+/* 3: Attribute TLl::_location */
+/* 4: Attribute TLl::_symbol_cache */
+/* 5: Attribute TLl::_text */
+void INIT_ATTRIBUTES__TLl(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TLl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TLl(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction119;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction119(val_t self, char *from) {
-}
-val_t NEW_ReduceAction119_parser___ReduceAction119___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction119();
-  parser___ReduceAction119___init(self, init_table);
-  CHECKNEW_ReduceAction119(self, "parser::ReduceAction119::init for ReduceAction119");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TLl;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TLl(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TLl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction120[48] = {
-  {(bigint) 3083 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction120 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction120 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3083 /* 3: ReduceAction120 < ReduceAction120: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TLl_lexer___TLl___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 973;
+  fra.me.meth = LOCATE_NEW_TLl_lexer___TLl___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:973 */
+  fra.me.REG[1] = NEW_TLl();
+  INIT_ATTRIBUTES__TLl(fra.me.REG[1]);
+  lexer___TLl___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TLl(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TLl_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TLl_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TLl();
+  INIT_ATTRIBUTES__TLl(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TLl(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TGt[70] = {
+  {(bigint) 2459 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TGt < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TGt < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TGt < Token: superclass typecheck marker */},
+  {(bigint) 2459 /* 5: TGt < TGt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56141,14 +36074,9 @@ const classtable_elt_t VFT_ReduceAction120[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction120 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TGt < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56156,7 +36084,6 @@ const classtable_elt_t VFT_ReduceAction120[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56164,42 +36091,136 @@ const classtable_elt_t VFT_ReduceAction120[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction120 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction120___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction120 < ReduceAction120: superclass init_table position */},
-  {(bigint) parser___ReduceAction120___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction120(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TGt < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TGt___parser_index},
+  {(bigint) 0 /* 67: TGt < Token: superclass init_table position */},
+  {(bigint) lexer___TGt___init_tk},
+  {(bigint) 3 /* 69: TGt < TGt: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TGt::_parent */
+/* 3: Attribute TGt::_location */
+/* 4: Attribute TGt::_symbol_cache */
+/* 5: Attribute TGt::_text */
+void INIT_ATTRIBUTES__TGt(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TGt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TGt(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction120;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction120(val_t self, char *from) {
-}
-val_t NEW_ReduceAction120_parser___ReduceAction120___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction120();
-  parser___ReduceAction120___init(self, init_table);
-  CHECKNEW_ReduceAction120(self, "parser::ReduceAction120::init for ReduceAction120");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TGt;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TGt(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TGt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction121[48] = {
-  {(bigint) 3079 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction121 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction121 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3079 /* 3: ReduceAction121 < ReduceAction121: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TGt_lexer___TGt___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 986;
+  fra.me.meth = LOCATE_NEW_TGt_lexer___TGt___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:986 */
+  fra.me.REG[1] = NEW_TGt();
+  INIT_ATTRIBUTES__TGt(fra.me.REG[1]);
+  lexer___TGt___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TGt(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TGt_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TGt_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TGt();
+  INIT_ATTRIBUTES__TGt(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TGt(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TGe[70] = {
+  {(bigint) 2467 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TGe < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TGe < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TGe < Token: superclass typecheck marker */},
+  {(bigint) 2467 /* 5: TGe < TGe: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56211,14 +36232,9 @@ const classtable_elt_t VFT_ReduceAction121[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction121 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TGe < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56226,7 +36242,6 @@ const classtable_elt_t VFT_ReduceAction121[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56234,42 +36249,136 @@ const classtable_elt_t VFT_ReduceAction121[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction121 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction121___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction121 < ReduceAction121: superclass init_table position */},
-  {(bigint) parser___ReduceAction121___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction121(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TGe < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TGe___parser_index},
+  {(bigint) 0 /* 67: TGe < Token: superclass init_table position */},
+  {(bigint) lexer___TGe___init_tk},
+  {(bigint) 3 /* 69: TGe < TGe: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TGe::_parent */
+/* 3: Attribute TGe::_location */
+/* 4: Attribute TGe::_symbol_cache */
+/* 5: Attribute TGe::_text */
+void INIT_ATTRIBUTES__TGe(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TGe;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TGe(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction121;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction121(val_t self, char *from) {
-}
-val_t NEW_ReduceAction121_parser___ReduceAction121___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction121();
-  parser___ReduceAction121___init(self, init_table);
-  CHECKNEW_ReduceAction121(self, "parser::ReduceAction121::init for ReduceAction121");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TGe;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TGe(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TGe;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction122[48] = {
-  {(bigint) 3075 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction122 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction122 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3075 /* 3: ReduceAction122 < ReduceAction122: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TGe_lexer___TGe___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 999;
+  fra.me.meth = LOCATE_NEW_TGe_lexer___TGe___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:999 */
+  fra.me.REG[1] = NEW_TGe();
+  INIT_ATTRIBUTES__TGe(fra.me.REG[1]);
+  lexer___TGe___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TGe(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TGe_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TGe_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TGe();
+  INIT_ATTRIBUTES__TGe(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TGe(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TGg[70] = {
+  {(bigint) 2463 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TGg < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TGg < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TGg < Token: superclass typecheck marker */},
+  {(bigint) 2463 /* 5: TGg < TGg: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56281,14 +36390,9 @@ const classtable_elt_t VFT_ReduceAction122[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction122 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TGg < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56296,7 +36400,6 @@ const classtable_elt_t VFT_ReduceAction122[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56304,42 +36407,136 @@ const classtable_elt_t VFT_ReduceAction122[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction122 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction122___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction122 < ReduceAction122: superclass init_table position */},
-  {(bigint) parser___ReduceAction122___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction122(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TGg < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TGg___parser_index},
+  {(bigint) 0 /* 67: TGg < Token: superclass init_table position */},
+  {(bigint) lexer___TGg___init_tk},
+  {(bigint) 3 /* 69: TGg < TGg: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TGg::_parent */
+/* 3: Attribute TGg::_location */
+/* 4: Attribute TGg::_symbol_cache */
+/* 5: Attribute TGg::_text */
+void INIT_ATTRIBUTES__TGg(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TGg;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TGg(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction122;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction122(val_t self, char *from) {
-}
-val_t NEW_ReduceAction122_parser___ReduceAction122___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction122();
-  parser___ReduceAction122___init(self, init_table);
-  CHECKNEW_ReduceAction122(self, "parser::ReduceAction122::init for ReduceAction122");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TGg;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TGg(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TGg;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction123[48] = {
-  {(bigint) 3071 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction123 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction123 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3071 /* 3: ReduceAction123 < ReduceAction123: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TGg_lexer___TGg___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1012;
+  fra.me.meth = LOCATE_NEW_TGg_lexer___TGg___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:1012 */
+  fra.me.REG[1] = NEW_TGg();
+  INIT_ATTRIBUTES__TGg(fra.me.REG[1]);
+  lexer___TGg___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TGg(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TGg_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TGg_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TGg();
+  INIT_ATTRIBUTES__TGg(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TGg(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TStarship[70] = {
+  {(bigint) 2191 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TStarship < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TStarship < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TStarship < Token: superclass typecheck marker */},
+  {(bigint) 2191 /* 5: TStarship < TStarship: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56351,14 +36548,9 @@ const classtable_elt_t VFT_ReduceAction123[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction123 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TStarship < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56366,7 +36558,6 @@ const classtable_elt_t VFT_ReduceAction123[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56374,42 +36565,136 @@ const classtable_elt_t VFT_ReduceAction123[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction123 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction123___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction123 < ReduceAction123: superclass init_table position */},
-  {(bigint) parser___ReduceAction123___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction123(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TStarship < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TStarship___parser_index},
+  {(bigint) 0 /* 67: TStarship < Token: superclass init_table position */},
+  {(bigint) lexer___TStarship___init_tk},
+  {(bigint) 3 /* 69: TStarship < TStarship: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TStarship::_parent */
+/* 3: Attribute TStarship::_location */
+/* 4: Attribute TStarship::_symbol_cache */
+/* 5: Attribute TStarship::_text */
+void INIT_ATTRIBUTES__TStarship(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TStarship;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TStarship(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction123;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction123(val_t self, char *from) {
-}
-val_t NEW_ReduceAction123_parser___ReduceAction123___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction123();
-  parser___ReduceAction123___init(self, init_table);
-  CHECKNEW_ReduceAction123(self, "parser::ReduceAction123::init for ReduceAction123");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TStarship;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TStarship(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TStarship;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction124[48] = {
-  {(bigint) 3067 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction124 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction124 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3067 /* 3: ReduceAction124 < ReduceAction124: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TStarship_lexer___TStarship___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1025;
+  fra.me.meth = LOCATE_NEW_TStarship_lexer___TStarship___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:1025 */
+  fra.me.REG[1] = NEW_TStarship();
+  INIT_ATTRIBUTES__TStarship(fra.me.REG[1]);
+  lexer___TStarship___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TStarship(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TStarship_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TStarship_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TStarship();
+  INIT_ATTRIBUTES__TStarship(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TStarship(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TBang[70] = {
+  {(bigint) 2527 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TBang < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TBang < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TBang < Token: superclass typecheck marker */},
+  {(bigint) 2527 /* 5: TBang < TBang: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56421,14 +36706,9 @@ const classtable_elt_t VFT_ReduceAction124[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction124 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TBang < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56436,7 +36716,6 @@ const classtable_elt_t VFT_ReduceAction124[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56444,42 +36723,136 @@ const classtable_elt_t VFT_ReduceAction124[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction124 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction124___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction124 < ReduceAction124: superclass init_table position */},
-  {(bigint) parser___ReduceAction124___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction124(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TBang < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TBang___parser_index},
+  {(bigint) 0 /* 67: TBang < Token: superclass init_table position */},
+  {(bigint) lexer___TBang___init_tk},
+  {(bigint) 3 /* 69: TBang < TBang: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TBang::_parent */
+/* 3: Attribute TBang::_location */
+/* 4: Attribute TBang::_symbol_cache */
+/* 5: Attribute TBang::_text */
+void INIT_ATTRIBUTES__TBang(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TBang;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TBang(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction124;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction124(val_t self, char *from) {
-}
-val_t NEW_ReduceAction124_parser___ReduceAction124___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction124();
-  parser___ReduceAction124___init(self, init_table);
-  CHECKNEW_ReduceAction124(self, "parser::ReduceAction124::init for ReduceAction124");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TBang;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TBang(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TBang;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction125[48] = {
-  {(bigint) 3063 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction125 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction125 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3063 /* 3: ReduceAction125 < ReduceAction125: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TBang_lexer___TBang___init_tk(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1038;
+  fra.me.meth = LOCATE_NEW_TBang_lexer___TBang___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:1038 */
+  fra.me.REG[1] = NEW_TBang();
+  INIT_ATTRIBUTES__TBang(fra.me.REG[1]);
+  lexer___TBang___init_tk(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TBang(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_TBang_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TBang_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TBang();
+  INIT_ATTRIBUTES__TBang(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TBang(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TClassid[70] = {
+  {(bigint) 2515 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TClassid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TClassid < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TClassid < Token: superclass typecheck marker */},
+  {(bigint) 2515 /* 5: TClassid < TClassid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56491,14 +36864,9 @@ const classtable_elt_t VFT_ReduceAction125[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction125 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TClassid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56506,7 +36874,6 @@ const classtable_elt_t VFT_ReduceAction125[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56514,42 +36881,138 @@ const classtable_elt_t VFT_ReduceAction125[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction125 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction125___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction125 < ReduceAction125: superclass init_table position */},
-  {(bigint) parser___ReduceAction125___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction125(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TClassid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TClassid___parser_index},
+  {(bigint) 0 /* 67: TClassid < Token: superclass init_table position */},
+  {(bigint) lexer___TClassid___init_tk},
+  {(bigint) 3 /* 69: TClassid < TClassid: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TClassid::_parent */
+/* 3: Attribute TClassid::_location */
+/* 4: Attribute TClassid::_symbol_cache */
+/* 5: Attribute TClassid::_text */
+void INIT_ATTRIBUTES__TClassid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TClassid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TClassid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction125;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction125(val_t self, char *from) {
-}
-val_t NEW_ReduceAction125_parser___ReduceAction125___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction125();
-  parser___ReduceAction125___init(self, init_table);
-  CHECKNEW_ReduceAction125(self, "parser::ReduceAction125::init for ReduceAction125");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TClassid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TClassid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TClassid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction126[48] = {
-  {(bigint) 3059 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction126 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction126 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3059 /* 3: ReduceAction126 < ReduceAction126: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TClassid_lexer___TClassid___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1051;
+  fra.me.meth = LOCATE_NEW_TClassid_lexer___TClassid___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1051 */
+  fra.me.REG[2] = NEW_TClassid();
+  INIT_ATTRIBUTES__TClassid(fra.me.REG[2]);
+  lexer___TClassid___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TClassid(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TClassid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TClassid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TClassid();
+  INIT_ATTRIBUTES__TClassid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TClassid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TId[70] = {
+  {(bigint) 2455 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TId < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TId < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TId < Token: superclass typecheck marker */},
+  {(bigint) 2455 /* 5: TId < TId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56561,14 +37024,9 @@ const classtable_elt_t VFT_ReduceAction126[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction126 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TId < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56576,7 +37034,6 @@ const classtable_elt_t VFT_ReduceAction126[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56584,42 +37041,138 @@ const classtable_elt_t VFT_ReduceAction126[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction126 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction126___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction126 < ReduceAction126: superclass init_table position */},
-  {(bigint) parser___ReduceAction126___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction126(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TId < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TId___parser_index},
+  {(bigint) 0 /* 67: TId < Token: superclass init_table position */},
+  {(bigint) lexer___TId___init_tk},
+  {(bigint) 3 /* 69: TId < TId: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TId::_parent */
+/* 3: Attribute TId::_location */
+/* 4: Attribute TId::_symbol_cache */
+/* 5: Attribute TId::_text */
+void INIT_ATTRIBUTES__TId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TId(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction126;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction126(val_t self, char *from) {
-}
-val_t NEW_ReduceAction126_parser___ReduceAction126___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction126();
-  parser___ReduceAction126___init(self, init_table);
-  CHECKNEW_ReduceAction126(self, "parser::ReduceAction126::init for ReduceAction126");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TId;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction127[48] = {
-  {(bigint) 3055 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction127 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction127 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3055 /* 3: ReduceAction127 < ReduceAction127: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TId_lexer___TId___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1064;
+  fra.me.meth = LOCATE_NEW_TId_lexer___TId___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1064 */
+  fra.me.REG[2] = NEW_TId();
+  INIT_ATTRIBUTES__TId(fra.me.REG[2]);
+  lexer___TId___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TId(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TId_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TId_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TId();
+  INIT_ATTRIBUTES__TId(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TId(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TAttrid[70] = {
+  {(bigint) 2531 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TAttrid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TAttrid < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TAttrid < Token: superclass typecheck marker */},
+  {(bigint) 2531 /* 5: TAttrid < TAttrid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56631,14 +37184,9 @@ const classtable_elt_t VFT_ReduceAction127[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction127 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TAttrid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56646,7 +37194,6 @@ const classtable_elt_t VFT_ReduceAction127[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56654,42 +37201,138 @@ const classtable_elt_t VFT_ReduceAction127[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction127 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction127___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction127 < ReduceAction127: superclass init_table position */},
-  {(bigint) parser___ReduceAction127___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction127(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TAttrid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TAttrid___parser_index},
+  {(bigint) 0 /* 67: TAttrid < Token: superclass init_table position */},
+  {(bigint) lexer___TAttrid___init_tk},
+  {(bigint) 3 /* 69: TAttrid < TAttrid: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TAttrid::_parent */
+/* 3: Attribute TAttrid::_location */
+/* 4: Attribute TAttrid::_symbol_cache */
+/* 5: Attribute TAttrid::_text */
+void INIT_ATTRIBUTES__TAttrid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TAttrid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TAttrid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction127;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction127(val_t self, char *from) {
-}
-val_t NEW_ReduceAction127_parser___ReduceAction127___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction127();
-  parser___ReduceAction127___init(self, init_table);
-  CHECKNEW_ReduceAction127(self, "parser::ReduceAction127::init for ReduceAction127");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TAttrid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TAttrid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TAttrid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction128[48] = {
-  {(bigint) 3051 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction128 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction128 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3051 /* 3: ReduceAction128 < ReduceAction128: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TAttrid_lexer___TAttrid___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1077;
+  fra.me.meth = LOCATE_NEW_TAttrid_lexer___TAttrid___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1077 */
+  fra.me.REG[2] = NEW_TAttrid();
+  INIT_ATTRIBUTES__TAttrid(fra.me.REG[2]);
+  lexer___TAttrid___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TAttrid(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TAttrid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TAttrid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TAttrid();
+  INIT_ATTRIBUTES__TAttrid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TAttrid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TNumber[70] = {
+  {(bigint) 2227 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TNumber < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TNumber < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TNumber < Token: superclass typecheck marker */},
+  {(bigint) 2227 /* 5: TNumber < TNumber: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56701,14 +37344,9 @@ const classtable_elt_t VFT_ReduceAction128[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction128 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TNumber < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56716,7 +37354,6 @@ const classtable_elt_t VFT_ReduceAction128[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56724,42 +37361,138 @@ const classtable_elt_t VFT_ReduceAction128[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction128 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction128___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction128 < ReduceAction128: superclass init_table position */},
-  {(bigint) parser___ReduceAction128___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction128(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
+  {(bigint) math___Object___atan2},
+  {(bigint) math___Object___pi},
+  {(bigint) math___Object___srand_from},
+  {(bigint) math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TNumber < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TNumber___parser_index},
+  {(bigint) 0 /* 67: TNumber < Token: superclass init_table position */},
+  {(bigint) lexer___TNumber___init_tk},
+  {(bigint) 3 /* 69: TNumber < TNumber: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TNumber::_parent */
+/* 3: Attribute TNumber::_location */
+/* 4: Attribute TNumber::_symbol_cache */
+/* 5: Attribute TNumber::_text */
+void INIT_ATTRIBUTES__TNumber(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TNumber;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TNumber(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction128;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction128(val_t self, char *from) {
-}
-val_t NEW_ReduceAction128_parser___ReduceAction128___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction128();
-  parser___ReduceAction128___init(self, init_table);
-  CHECKNEW_ReduceAction128(self, "parser::ReduceAction128::init for ReduceAction128");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TNumber;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TNumber(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TNumber;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction129[48] = {
-  {(bigint) 3047 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction129 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction129 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3047 /* 3: ReduceAction129 < ReduceAction129: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TNumber_lexer___TNumber___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1090;
+  fra.me.meth = LOCATE_NEW_TNumber_lexer___TNumber___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1090 */
+  fra.me.REG[2] = NEW_TNumber();
+  INIT_ATTRIBUTES__TNumber(fra.me.REG[2]);
+  lexer___TNumber___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TNumber(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TNumber_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TNumber_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TNumber();
+  INIT_ATTRIBUTES__TNumber(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TNumber(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TFloat[70] = {
+  {(bigint) 2471 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TFloat < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TFloat < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TFloat < Token: superclass typecheck marker */},
+  {(bigint) 2471 /* 5: TFloat < TFloat: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56771,14 +37504,9 @@ const classtable_elt_t VFT_ReduceAction129[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction129 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TFloat < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56786,7 +37514,6 @@ const classtable_elt_t VFT_ReduceAction129[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56794,42 +37521,138 @@ const classtable_elt_t VFT_ReduceAction129[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction129 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction129___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction129 < ReduceAction129: superclass init_table position */},
-  {(bigint) parser___ReduceAction129___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction129(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TFloat < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TFloat___parser_index},
+  {(bigint) 0 /* 67: TFloat < Token: superclass init_table position */},
+  {(bigint) lexer___TFloat___init_tk},
+  {(bigint) 3 /* 69: TFloat < TFloat: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TFloat::_parent */
+/* 3: Attribute TFloat::_location */
+/* 4: Attribute TFloat::_symbol_cache */
+/* 5: Attribute TFloat::_text */
+void INIT_ATTRIBUTES__TFloat(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TFloat;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TFloat(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction129;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction129(val_t self, char *from) {
-}
-val_t NEW_ReduceAction129_parser___ReduceAction129___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction129();
-  parser___ReduceAction129___init(self, init_table);
-  CHECKNEW_ReduceAction129(self, "parser::ReduceAction129::init for ReduceAction129");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TFloat;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TFloat(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TFloat;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction130[48] = {
-  {(bigint) 3039 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction130 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction130 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3039 /* 3: ReduceAction130 < ReduceAction130: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TFloat_lexer___TFloat___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1103;
+  fra.me.meth = LOCATE_NEW_TFloat_lexer___TFloat___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1103 */
+  fra.me.REG[2] = NEW_TFloat();
+  INIT_ATTRIBUTES__TFloat(fra.me.REG[2]);
+  lexer___TFloat___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TFloat(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TFloat_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TFloat_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TFloat();
+  INIT_ATTRIBUTES__TFloat(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TFloat(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TChar[70] = {
+  {(bigint) 2519 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TChar < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TChar < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TChar < Token: superclass typecheck marker */},
+  {(bigint) 2519 /* 5: TChar < TChar: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56841,14 +37664,9 @@ const classtable_elt_t VFT_ReduceAction130[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction130 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TChar < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56856,7 +37674,6 @@ const classtable_elt_t VFT_ReduceAction130[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56864,42 +37681,138 @@ const classtable_elt_t VFT_ReduceAction130[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction130 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction130___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction130 < ReduceAction130: superclass init_table position */},
-  {(bigint) parser___ReduceAction130___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction130(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TChar < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TChar___parser_index},
+  {(bigint) 0 /* 67: TChar < Token: superclass init_table position */},
+  {(bigint) lexer___TChar___init_tk},
+  {(bigint) 3 /* 69: TChar < TChar: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TChar::_parent */
+/* 3: Attribute TChar::_location */
+/* 4: Attribute TChar::_symbol_cache */
+/* 5: Attribute TChar::_text */
+void INIT_ATTRIBUTES__TChar(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TChar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TChar(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction130;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction130(val_t self, char *from) {
-}
-val_t NEW_ReduceAction130_parser___ReduceAction130___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction130();
-  parser___ReduceAction130___init(self, init_table);
-  CHECKNEW_ReduceAction130(self, "parser::ReduceAction130::init for ReduceAction130");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TChar;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TChar(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TChar;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction131[48] = {
-  {(bigint) 3035 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction131 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction131 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3035 /* 3: ReduceAction131 < ReduceAction131: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TChar_lexer___TChar___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1116;
+  fra.me.meth = LOCATE_NEW_TChar_lexer___TChar___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1116 */
+  fra.me.REG[2] = NEW_TChar();
+  INIT_ATTRIBUTES__TChar(fra.me.REG[2]);
+  lexer___TChar___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TChar(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TChar_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TChar_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TChar();
+  INIT_ATTRIBUTES__TChar(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TChar(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TString[70] = {
+  {(bigint) 2183 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TString < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TString < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TString < Token: superclass typecheck marker */},
+  {(bigint) 2183 /* 5: TString < TString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56911,14 +37824,9 @@ const classtable_elt_t VFT_ReduceAction131[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction131 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TString < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56926,7 +37834,6 @@ const classtable_elt_t VFT_ReduceAction131[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -56934,42 +37841,138 @@ const classtable_elt_t VFT_ReduceAction131[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction131 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction131___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction131 < ReduceAction131: superclass init_table position */},
-  {(bigint) parser___ReduceAction131___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction131(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TString < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TString___parser_index},
+  {(bigint) 0 /* 67: TString < Token: superclass init_table position */},
+  {(bigint) lexer___TString___init_tk},
+  {(bigint) 3 /* 69: TString < TString: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TString::_parent */
+/* 3: Attribute TString::_location */
+/* 4: Attribute TString::_symbol_cache */
+/* 5: Attribute TString::_text */
+void INIT_ATTRIBUTES__TString(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TString;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TString(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction131;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction131(val_t self, char *from) {
-}
-val_t NEW_ReduceAction131_parser___ReduceAction131___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction131();
-  parser___ReduceAction131___init(self, init_table);
-  CHECKNEW_ReduceAction131(self, "parser::ReduceAction131::init for ReduceAction131");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TString;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TString(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TString;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction132[48] = {
-  {(bigint) 3031 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction132 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction132 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3031 /* 3: ReduceAction132 < ReduceAction132: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TString_lexer___TString___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1129;
+  fra.me.meth = LOCATE_NEW_TString_lexer___TString___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1129 */
+  fra.me.REG[2] = NEW_TString();
+  INIT_ATTRIBUTES__TString(fra.me.REG[2]);
+  lexer___TString___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TString(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TString_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TString_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TString();
+  INIT_ATTRIBUTES__TString(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TString(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TStartString[70] = {
+  {(bigint) 2187 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TStartString < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TStartString < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TStartString < Token: superclass typecheck marker */},
+  {(bigint) 2187 /* 5: TStartString < TStartString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56981,14 +37984,9 @@ const classtable_elt_t VFT_ReduceAction132[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction132 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TStartString < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -56996,7 +37994,6 @@ const classtable_elt_t VFT_ReduceAction132[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57004,42 +38001,138 @@ const classtable_elt_t VFT_ReduceAction132[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction132 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction132___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction132 < ReduceAction132: superclass init_table position */},
-  {(bigint) parser___ReduceAction132___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction132(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TStartString < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TStartString___parser_index},
+  {(bigint) 0 /* 67: TStartString < Token: superclass init_table position */},
+  {(bigint) lexer___TStartString___init_tk},
+  {(bigint) 3 /* 69: TStartString < TStartString: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TStartString::_parent */
+/* 3: Attribute TStartString::_location */
+/* 4: Attribute TStartString::_symbol_cache */
+/* 5: Attribute TStartString::_text */
+void INIT_ATTRIBUTES__TStartString(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TStartString;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TStartString(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction132;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction132(val_t self, char *from) {
-}
-val_t NEW_ReduceAction132_parser___ReduceAction132___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction132();
-  parser___ReduceAction132___init(self, init_table);
-  CHECKNEW_ReduceAction132(self, "parser::ReduceAction132::init for ReduceAction132");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TStartString;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TStartString(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TStartString;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction133[48] = {
-  {(bigint) 3027 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction133 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction133 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3027 /* 3: ReduceAction133 < ReduceAction133: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TStartString_lexer___TStartString___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1142;
+  fra.me.meth = LOCATE_NEW_TStartString_lexer___TStartString___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1142 */
+  fra.me.REG[2] = NEW_TStartString();
+  INIT_ATTRIBUTES__TStartString(fra.me.REG[2]);
+  lexer___TStartString___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TStartString(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TStartString_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TStartString_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TStartString();
+  INIT_ATTRIBUTES__TStartString(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TStartString(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TMidString[70] = {
+  {(bigint) 2243 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TMidString < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TMidString < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TMidString < Token: superclass typecheck marker */},
+  {(bigint) 2243 /* 5: TMidString < TMidString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57051,14 +38144,9 @@ const classtable_elt_t VFT_ReduceAction133[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction133 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TMidString < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57066,7 +38154,6 @@ const classtable_elt_t VFT_ReduceAction133[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57074,42 +38161,138 @@ const classtable_elt_t VFT_ReduceAction133[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction133 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction133___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction133 < ReduceAction133: superclass init_table position */},
-  {(bigint) parser___ReduceAction133___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction133(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TMidString < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TMidString___parser_index},
+  {(bigint) 0 /* 67: TMidString < Token: superclass init_table position */},
+  {(bigint) lexer___TMidString___init_tk},
+  {(bigint) 3 /* 69: TMidString < TMidString: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TMidString::_parent */
+/* 3: Attribute TMidString::_location */
+/* 4: Attribute TMidString::_symbol_cache */
+/* 5: Attribute TMidString::_text */
+void INIT_ATTRIBUTES__TMidString(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TMidString;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TMidString(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction133;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction133(val_t self, char *from) {
-}
-val_t NEW_ReduceAction133_parser___ReduceAction133___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction133();
-  parser___ReduceAction133___init(self, init_table);
-  CHECKNEW_ReduceAction133(self, "parser::ReduceAction133::init for ReduceAction133");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TMidString;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TMidString(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TMidString;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction134[48] = {
-  {(bigint) 3023 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction134 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction134 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3023 /* 3: ReduceAction134 < ReduceAction134: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TMidString_lexer___TMidString___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1155;
+  fra.me.meth = LOCATE_NEW_TMidString_lexer___TMidString___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1155 */
+  fra.me.REG[2] = NEW_TMidString();
+  INIT_ATTRIBUTES__TMidString(fra.me.REG[2]);
+  lexer___TMidString___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TMidString(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TMidString_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TMidString_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TMidString();
+  INIT_ATTRIBUTES__TMidString(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TMidString(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TEndString[70] = {
+  {(bigint) 2483 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TEndString < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: TEndString < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: TEndString < Token: superclass typecheck marker */},
+  {(bigint) 2483 /* 5: TEndString < TEndString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57121,14 +38304,9 @@ const classtable_elt_t VFT_ReduceAction134[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction134 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TEndString < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57136,7 +38314,6 @@ const classtable_elt_t VFT_ReduceAction134[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57144,42 +38321,138 @@ const classtable_elt_t VFT_ReduceAction134[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction134 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction134___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction134 < ReduceAction134: superclass init_table position */},
-  {(bigint) parser___ReduceAction134___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction134(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: TEndString < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___TEndString___parser_index},
+  {(bigint) 0 /* 67: TEndString < Token: superclass init_table position */},
+  {(bigint) lexer___TEndString___init_tk},
+  {(bigint) 3 /* 69: TEndString < TEndString: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TEndString::_parent */
+/* 3: Attribute TEndString::_location */
+/* 4: Attribute TEndString::_symbol_cache */
+/* 5: Attribute TEndString::_text */
+void INIT_ATTRIBUTES__TEndString(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TEndString;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TEndString(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction134;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction134(val_t self, char *from) {
-}
-val_t NEW_ReduceAction134_parser___ReduceAction134___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction134();
-  parser___ReduceAction134___init(self, init_table);
-  CHECKNEW_ReduceAction134(self, "parser::ReduceAction134::init for ReduceAction134");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_TEndString;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TEndString(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TEndString;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction135[48] = {
-  {(bigint) 3019 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction135 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction135 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3019 /* 3: ReduceAction135 < ReduceAction135: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_TEndString_lexer___TEndString___init_tk(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1168;
+  fra.me.meth = LOCATE_NEW_TEndString_lexer___TEndString___init_tk;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1168 */
+  fra.me.REG[2] = NEW_TEndString();
+  INIT_ATTRIBUTES__TEndString(fra.me.REG[2]);
+  lexer___TEndString___init_tk(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TEndString(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_TEndString_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TEndString_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_TEndString();
+  INIT_ATTRIBUTES__TEndString(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TEndString(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_EOF[71] = {
+  {(bigint) 2751 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: EOF < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: EOF < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: EOF < Token: superclass typecheck marker */},
+  {(bigint) 2751 /* 5: EOF < EOF: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57191,14 +38464,9 @@ const classtable_elt_t VFT_ReduceAction135[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction135 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: EOF < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57206,7 +38474,6 @@ const classtable_elt_t VFT_ReduceAction135[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57214,43 +38481,137 @@ const classtable_elt_t VFT_ReduceAction135[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction135 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction135___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction135 < ReduceAction135: superclass init_table position */},
-  {(bigint) parser___ReduceAction135___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: EOF < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___EOF___parser_index},
+  {(bigint) 0 /* 67: EOF < Token: superclass init_table position */},
+  {(bigint) lexer___EOF___init},
+  {(bigint) 3 /* 69: EOF < EOF: superclass init_table position */},
+  {(bigint) parser_nodes___EOF___noinit},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction135(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute EOF::_parent */
+/* 3: Attribute EOF::_location */
+/* 4: Attribute EOF::_symbol_cache */
+/* 5: Attribute EOF::_text */
+void INIT_ATTRIBUTES__EOF(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__EOF;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_EOF(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction135;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction135(val_t self, char *from) {
-}
-val_t NEW_ReduceAction135_parser___ReduceAction135___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction135();
-  parser___ReduceAction135___init(self, init_table);
-  CHECKNEW_ReduceAction135(self, "parser::ReduceAction135::init for ReduceAction135");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_EOF;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_EOF(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_EOF;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction136[48] = {
-  {(bigint) 3015 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction136 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction136 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3015 /* 3: ReduceAction136 < ReduceAction136: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_EOF_lexer___EOF___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1182;
+  fra.me.meth = LOCATE_NEW_EOF_lexer___EOF___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:1182 */
+  fra.me.REG[1] = NEW_EOF();
+  INIT_ATTRIBUTES__EOF(fra.me.REG[1]);
+  lexer___EOF___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_EOF(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_EOF_parser_nodes___EOF___noinit(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 311;
+  fra.me.meth = LOCATE_NEW_EOF_parser_nodes___EOF___noinit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_nodes.nit:311 */
+  fra.me.REG[0] = NEW_EOF();
+  INIT_ATTRIBUTES__EOF(fra.me.REG[0]);
+  parser_nodes___EOF___noinit(fra.me.REG[0], init_table);
+  CHECKNEW_EOF(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_AError[75] = {
+  {(bigint) 3171 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AError < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AError < ANode: superclass typecheck marker */},
+  {(bigint) 295 /* 4: AError < Token: superclass typecheck marker */},
+  {(bigint) 2751 /* 5: AError < EOF: superclass typecheck marker */},
+  {(bigint) 3171 /* 6: AError < AError: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57261,14 +38622,9 @@ const classtable_elt_t VFT_ReduceAction136[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction136 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AError < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57276,7 +38632,6 @@ const classtable_elt_t VFT_ReduceAction136[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57284,42 +38639,148 @@ const classtable_elt_t VFT_ReduceAction136[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) lexer___Token___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction136 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction136___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction136 < ReduceAction136: superclass init_table position */},
-  {(bigint) parser___ReduceAction136___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction136(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Token___replace_child},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) parser_prod___Token___visit_all},
+  {(bigint) 1 /* 58: AError < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) syntax_base___Token___to_symbol},
+  {(bigint) lexer___Token___text},
+  {(bigint) lexer___EOF___parser_index},
+  {(bigint) 0 /* 67: AError < Token: superclass init_table position */},
+  {(bigint) lexer___EOF___init},
+  {(bigint) 3 /* 69: AError < EOF: superclass init_table position */},
+  {(bigint) parser_nodes___EOF___noinit},
+  {(bigint) lexer___AError___message},
+  {(bigint) lexer___AError___init_error},
+  {(bigint) 4 /* 73: AError < AError: superclass init_table position */},
+  {(bigint) parser_nodes___AError___noinit},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AError::_parent */
+/* 3: Attribute AError::_location */
+/* 4: Attribute AError::_symbol_cache */
+/* 5: Attribute AError::_text */
+/* 6: Attribute AError::_message */
+void INIT_ATTRIBUTES__AError(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AError;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AError(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction136;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction136(val_t self, char *from) {
-}
-val_t NEW_ReduceAction136_parser___ReduceAction136___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction136();
-  parser___ReduceAction136___init(self, init_table);
-  CHECKNEW_ReduceAction136(self, "parser::ReduceAction136::init for ReduceAction136");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_AError;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AError(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AError;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___AError____message(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_message", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_lexer___Token____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction137[48] = {
-  {(bigint) 3011 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction137 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction137 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3011 /* 3: ReduceAction137 < ReduceAction137: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AError_lexer___AError___init_error(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1192;
+  fra.me.meth = LOCATE_NEW_AError_lexer___AError___init_error;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1192 */
+  fra.me.REG[2] = NEW_AError();
+  INIT_ATTRIBUTES__AError(fra.me.REG[2]);
+  lexer___AError___init_error(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AError(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AError_parser_nodes___AError___noinit(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 315;
+  fra.me.meth = LOCATE_NEW_AError_parser_nodes___AError___noinit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_nodes.nit:315 */
+  fra.me.REG[0] = NEW_AError();
+  INIT_ATTRIBUTES__AError(fra.me.REG[0]);
+  parser_nodes___AError___noinit(fra.me.REG[0], init_table);
+  CHECKNEW_AError(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_AModule[74] = {
+  {(bigint) 2823 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AModule < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AModule < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AModule < Prod: superclass typecheck marker */},
+  {(bigint) 2823 /* 5: AModule < AModule: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57331,14 +38792,9 @@ const classtable_elt_t VFT_ReduceAction137[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction137 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AModule < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57346,7 +38802,6 @@ const classtable_elt_t VFT_ReduceAction137[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57354,42 +38809,183 @@ const classtable_elt_t VFT_ReduceAction137[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction137 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction137___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction137 < ReduceAction137: superclass init_table position */},
-  {(bigint) parser___ReduceAction137___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AModule___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AModule___visit_all},
+  {(bigint) 1 /* 58: AModule < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AModule < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AModule___import_super_modules},
+  {(bigint) parser_prod___AModule___empty_init},
+  {(bigint) parser_prod___AModule___init_amodule},
+  {(bigint) 3 /* 70: AModule < AModule: superclass init_table position */},
+  {(bigint) parser_nodes___AModule___n_moduledecl},
+  {(bigint) parser_nodes___AModule___n_imports},
+  {(bigint) parser_nodes___AModule___n_classdefs},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction137(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AModule::_parent */
+/* 3: Attribute AModule::_location */
+/* 4: Attribute AModule::_first_location */
+/* 5: Attribute AModule::_last_location */
+/* 6: Attribute AModule::_n_moduledecl */
+/* 7: Attribute AModule::_n_imports */
+/* 8: Attribute AModule::_n_classdefs */
+void INIT_ATTRIBUTES__AModule(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AModule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:320 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AModule____n_moduledecl(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:321 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:322 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AModule(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction137;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction137(val_t self, char *from) {
-}
-val_t NEW_ReduceAction137_parser___ReduceAction137___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction137();
-  parser___ReduceAction137___init(self, init_table);
-  CHECKNEW_ReduceAction137(self, "parser::ReduceAction137::init for ReduceAction137");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_AModule;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AModule(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AModule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction138[48] = {
-  {(bigint) 3007 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction138 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction138 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3007 /* 3: ReduceAction138 < ReduceAction138: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AModule_parser_prod___AModule___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 71;
+  fra.me.meth = LOCATE_NEW_AModule_parser_prod___AModule___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:71 */
+  fra.me.REG[0] = NEW_AModule();
+  INIT_ATTRIBUTES__AModule(fra.me.REG[0]);
+  parser_prod___AModule___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AModule(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AModule_parser_prod___AModule___init_amodule(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 73;
+  fra.me.meth = LOCATE_NEW_AModule_parser_prod___AModule___init_amodule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:73 */
+  fra.me.REG[3] = NEW_AModule();
+  INIT_ATTRIBUTES__AModule(fra.me.REG[3]);
+  parser_prod___AModule___init_amodule(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AModule(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AModule_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AModule_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AModule();
+  INIT_ATTRIBUTES__AModule(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AModule(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AModuledecl[73] = {
+  {(bigint) 2819 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AModuledecl < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AModuledecl < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AModuledecl < Prod: superclass typecheck marker */},
+  {(bigint) 2819 /* 5: AModuledecl < AModuledecl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57401,14 +38997,9 @@ const classtable_elt_t VFT_ReduceAction138[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction138 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AModuledecl < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57416,7 +39007,6 @@ const classtable_elt_t VFT_ReduceAction138[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57424,42 +39014,176 @@ const classtable_elt_t VFT_ReduceAction138[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction138 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction138___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction138 < ReduceAction138: superclass init_table position */},
-  {(bigint) parser___ReduceAction138___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction138(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AModuledecl___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AModuledecl___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AModuledecl___visit_all},
+  {(bigint) 1 /* 58: AModuledecl < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AModuledecl < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) parser_prod___AModuledecl___empty_init},
+  {(bigint) parser_prod___AModuledecl___init_amoduledecl},
+  {(bigint) 3 /* 69: AModuledecl < AModuledecl: superclass init_table position */},
+  {(bigint) parser_nodes___AModuledecl___n_doc},
+  {(bigint) parser_nodes___AModuledecl___n_kwmodule},
+  {(bigint) parser_nodes___AModuledecl___n_id},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AModuledecl::_parent */
+/* 3: Attribute AModuledecl::_location */
+/* 4: Attribute AModuledecl::_first_location */
+/* 5: Attribute AModuledecl::_last_location */
+/* 6: Attribute AModuledecl::_n_doc */
+/* 7: Attribute AModuledecl::_n_kwmodule */
+/* 8: Attribute AModuledecl::_n_id */
+void INIT_ATTRIBUTES__AModuledecl(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AModuledecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:326 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AModuledecl(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction138;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction138(val_t self, char *from) {
-}
-val_t NEW_ReduceAction138_parser___ReduceAction138___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction138();
-  parser___ReduceAction138___init(self, init_table);
-  CHECKNEW_ReduceAction138(self, "parser::ReduceAction138::init for ReduceAction138");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_AModuledecl;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AModuledecl(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AModuledecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AModuledecl____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction139[48] = {
-  {(bigint) 3003 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction139 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction139 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 3003 /* 3: ReduceAction139 < ReduceAction139: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AModuledecl_parser_prod___AModuledecl___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 148;
+  fra.me.meth = LOCATE_NEW_AModuledecl_parser_prod___AModuledecl___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:148 */
+  fra.me.REG[0] = NEW_AModuledecl();
+  INIT_ATTRIBUTES__AModuledecl(fra.me.REG[0]);
+  parser_prod___AModuledecl___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AModuledecl(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AModuledecl_parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 150;
+  fra.me.meth = LOCATE_NEW_AModuledecl_parser_prod___AModuledecl___init_amoduledecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:150 */
+  fra.me.REG[3] = NEW_AModuledecl();
+  INIT_ATTRIBUTES__AModuledecl(fra.me.REG[3]);
+  parser_prod___AModuledecl___init_amoduledecl(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AModuledecl(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AModuledecl_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AModuledecl_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AModuledecl();
+  INIT_ATTRIBUTES__AModuledecl(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AModuledecl(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AImport[70] = {
+  {(bigint) 2839 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AImport < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AImport < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AImport < Prod: superclass typecheck marker */},
+  {(bigint) 2839 /* 5: AImport < AImport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57471,14 +39195,9 @@ const classtable_elt_t VFT_ReduceAction139[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction139 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AImport < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57486,7 +39205,6 @@ const classtable_elt_t VFT_ReduceAction139[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57494,43 +39212,108 @@ const classtable_elt_t VFT_ReduceAction139[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction139 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction139___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction139 < ReduceAction139: superclass init_table position */},
-  {(bigint) parser___ReduceAction139___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction139(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AImport < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AImport < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AImport___module_name},
+  {(bigint) mmbuilder___AImport___visibility_level},
+  {(bigint) 3 /* 69: AImport < AImport: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AImport::_parent */
+/* 3: Attribute AImport::_location */
+/* 4: Attribute AImport::_first_location */
+/* 5: Attribute AImport::_last_location */
+void INIT_ATTRIBUTES__AImport(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AImport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AImport(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction139;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction139(val_t self, char *from) {
-}
-val_t NEW_ReduceAction139_parser___ReduceAction139___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction139();
-  parser___ReduceAction139___init(self, init_table);
-  CHECKNEW_ReduceAction139(self, "parser::ReduceAction139::init for ReduceAction139");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction140[48] = {
-  {(bigint) 2995 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction140 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction140 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2995 /* 3: ReduceAction140 < ReduceAction140: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_AImport;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AImport(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AImport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AImport_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AImport_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AImport();
+  INIT_ATTRIBUTES__AImport(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AImport(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AStdImport[76] = {
+  {(bigint) 3015 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AStdImport < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AStdImport < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AStdImport < Prod: superclass typecheck marker */},
+  {(bigint) 2839 /* 5: AStdImport < AImport: superclass typecheck marker */},
+  {(bigint) 3015 /* 6: AStdImport < AStdImport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57541,14 +39324,9 @@ const classtable_elt_t VFT_ReduceAction140[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction140 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AStdImport < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57556,7 +39334,6 @@ const classtable_elt_t VFT_ReduceAction140[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57564,61 +39341,192 @@ const classtable_elt_t VFT_ReduceAction140[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction140 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction140___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction140 < ReduceAction140: superclass init_table position */},
-  {(bigint) parser___ReduceAction140___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction140(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AStdImport___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AStdImport___visit_all},
+  {(bigint) 1 /* 58: AStdImport < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AStdImport < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AStdImport___module_name},
+  {(bigint) mmbuilder___AStdImport___visibility_level},
+  {(bigint) 3 /* 69: AStdImport < AImport: superclass init_table position */},
+  {(bigint) parser_prod___AStdImport___empty_init},
+  {(bigint) parser_prod___AStdImport___init_astdimport},
+  {(bigint) 4 /* 72: AStdImport < AStdImport: superclass init_table position */},
+  {(bigint) parser_nodes___AStdImport___n_visibility},
+  {(bigint) parser_nodes___AStdImport___n_kwimport},
+  {(bigint) parser_nodes___AStdImport___n_id},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AStdImport::_parent */
+/* 3: Attribute AStdImport::_location */
+/* 4: Attribute AStdImport::_first_location */
+/* 5: Attribute AStdImport::_last_location */
+/* 6: Attribute AStdImport::_n_visibility */
+/* 7: Attribute AStdImport::_n_kwimport */
+/* 8: Attribute AStdImport::_n_id */
+void INIT_ATTRIBUTES__AStdImport(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AStdImport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AStdImport(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction140;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction140(val_t self, char *from) {
-}
-val_t NEW_ReduceAction140_parser___ReduceAction140___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction140();
-  parser___ReduceAction140___init(self, init_table);
-  CHECKNEW_ReduceAction140(self, "parser::ReduceAction140::init for ReduceAction140");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_AStdImport;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AStdImport(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AStdImport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdImport____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction141[48] = {
-  {(bigint) 2991 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction141 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction141 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2991 /* 3: ReduceAction141 < ReduceAction141: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AStdImport_parser_prod___AStdImport___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 211;
+  fra.me.meth = LOCATE_NEW_AStdImport_parser_prod___AStdImport___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:211 */
+  fra.me.REG[0] = NEW_AStdImport();
+  INIT_ATTRIBUTES__AStdImport(fra.me.REG[0]);
+  parser_prod___AStdImport___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStdImport(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStdImport_parser_prod___AStdImport___init_astdimport(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 213;
+  fra.me.meth = LOCATE_NEW_AStdImport_parser_prod___AStdImport___init_astdimport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:213 */
+  fra.me.REG[3] = NEW_AStdImport();
+  INIT_ATTRIBUTES__AStdImport(fra.me.REG[3]);
+  parser_prod___AStdImport___init_astdimport(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AStdImport(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AStdImport_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AStdImport_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AStdImport();
+  INIT_ATTRIBUTES__AStdImport(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStdImport(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ANoImport[76] = {
+  {(bigint) 3091 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ANoImport < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ANoImport < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ANoImport < Prod: superclass typecheck marker */},
+  {(bigint) 2839 /* 5: ANoImport < AImport: superclass typecheck marker */},
+  {(bigint) 3091 /* 6: ANoImport < ANoImport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction141 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ANoImport < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57626,7 +39534,6 @@ const classtable_elt_t VFT_ReduceAction141[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57634,42 +39541,178 @@ const classtable_elt_t VFT_ReduceAction141[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction141 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction141___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction141 < ReduceAction141: superclass init_table position */},
-  {(bigint) parser___ReduceAction141___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANoImport___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANoImport___visit_all},
+  {(bigint) 1 /* 58: ANoImport < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ANoImport < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___ANoImport___module_name},
+  {(bigint) mmbuilder___AImport___visibility_level},
+  {(bigint) 3 /* 69: ANoImport < AImport: superclass init_table position */},
+  {(bigint) parser_prod___ANoImport___empty_init},
+  {(bigint) parser_prod___ANoImport___init_anoimport},
+  {(bigint) 4 /* 72: ANoImport < ANoImport: superclass init_table position */},
+  {(bigint) parser_nodes___ANoImport___n_visibility},
+  {(bigint) parser_nodes___ANoImport___n_kwimport},
+  {(bigint) parser_nodes___ANoImport___n_kwend},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction141(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ANoImport::_parent */
+/* 3: Attribute ANoImport::_location */
+/* 4: Attribute ANoImport::_first_location */
+/* 5: Attribute ANoImport::_last_location */
+/* 6: Attribute ANoImport::_n_visibility */
+/* 7: Attribute ANoImport::_n_kwimport */
+/* 8: Attribute ANoImport::_n_kwend */
+void INIT_ATTRIBUTES__ANoImport(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ANoImport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ANoImport(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction141;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction141(val_t self, char *from) {
-}
-val_t NEW_ReduceAction141_parser___ReduceAction141___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction141();
-  parser___ReduceAction141___init(self, init_table);
-  CHECKNEW_ReduceAction141(self, "parser::ReduceAction141::init for ReduceAction141");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_ANoImport;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ANoImport(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ANoImport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_kwimport(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwimport", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANoImport____n_kwend(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwend", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction142[48] = {
-  {(bigint) 2987 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction142 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction142 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2987 /* 3: ReduceAction142 < ReduceAction142: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ANoImport_parser_prod___ANoImport___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 270;
+  fra.me.meth = LOCATE_NEW_ANoImport_parser_prod___ANoImport___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:270 */
+  fra.me.REG[0] = NEW_ANoImport();
+  INIT_ATTRIBUTES__ANoImport(fra.me.REG[0]);
+  parser_prod___ANoImport___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ANoImport(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ANoImport_parser_prod___ANoImport___init_anoimport(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 272;
+  fra.me.meth = LOCATE_NEW_ANoImport_parser_prod___ANoImport___init_anoimport;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:272 */
+  fra.me.REG[3] = NEW_ANoImport();
+  INIT_ATTRIBUTES__ANoImport(fra.me.REG[3]);
+  parser_prod___ANoImport___init_anoimport(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_ANoImport(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_ANoImport_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ANoImport_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ANoImport();
+  INIT_ATTRIBUTES__ANoImport(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ANoImport(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AVisibility[69] = {
+  {(bigint) 2791 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AVisibility < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AVisibility < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 2791 /* 5: AVisibility < AVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57681,14 +39724,9 @@ const classtable_elt_t VFT_ReduceAction142[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction142 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AVisibility < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57696,7 +39734,6 @@ const classtable_elt_t VFT_ReduceAction142[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57704,43 +39741,107 @@ const classtable_elt_t VFT_ReduceAction142[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction142 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction142___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction142 < ReduceAction142: superclass init_table position */},
-  {(bigint) parser___ReduceAction142___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction142(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AVisibility < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AVisibility < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AVisibility___level},
+  {(bigint) 3 /* 68: AVisibility < AVisibility: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AVisibility::_parent */
+/* 3: Attribute AVisibility::_location */
+/* 4: Attribute AVisibility::_first_location */
+/* 5: Attribute AVisibility::_last_location */
+void INIT_ATTRIBUTES__AVisibility(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AVisibility(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction142;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction142(val_t self, char *from) {
-}
-val_t NEW_ReduceAction142_parser___ReduceAction142___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction142();
-  parser___ReduceAction142___init(self, init_table);
-  CHECKNEW_ReduceAction142(self, "parser::ReduceAction142::init for ReduceAction142");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction143[48] = {
-  {(bigint) 2983 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction143 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction143 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2983 /* 3: ReduceAction143 < ReduceAction143: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_AVisibility;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AVisibility(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AVisibility_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AVisibility_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AVisibility();
+  INIT_ATTRIBUTES__AVisibility(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AVisibility(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_APublicVisibility[72] = {
+  {(bigint) 3059 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: APublicVisibility < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: APublicVisibility < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: APublicVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 2791 /* 5: APublicVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 3059 /* 6: APublicVisibility < APublicVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57751,14 +39852,9 @@ const classtable_elt_t VFT_ReduceAction143[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction143 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: APublicVisibility < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57766,7 +39862,6 @@ const classtable_elt_t VFT_ReduceAction143[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57774,43 +39869,148 @@ const classtable_elt_t VFT_ReduceAction143[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction143 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction143___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction143 < ReduceAction143: superclass init_table position */},
-  {(bigint) parser___ReduceAction143___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction143(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___APublicVisibility___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___APublicVisibility___visit_all},
+  {(bigint) 1 /* 58: APublicVisibility < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: APublicVisibility < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___APublicVisibility___level},
+  {(bigint) 3 /* 68: APublicVisibility < AVisibility: superclass init_table position */},
+  {(bigint) parser_prod___APublicVisibility___empty_init},
+  {(bigint) parser_prod___APublicVisibility___init_apublicvisibility},
+  {(bigint) 4 /* 71: APublicVisibility < APublicVisibility: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute APublicVisibility::_parent */
+/* 3: Attribute APublicVisibility::_location */
+/* 4: Attribute APublicVisibility::_first_location */
+/* 5: Attribute APublicVisibility::_last_location */
+void INIT_ATTRIBUTES__APublicVisibility(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__APublicVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_APublicVisibility(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction143;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction143(val_t self, char *from) {
-}
-val_t NEW_ReduceAction143_parser___ReduceAction143___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction143();
-  parser___ReduceAction143___init(self, init_table);
-  CHECKNEW_ReduceAction143(self, "parser::ReduceAction143::init for ReduceAction143");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction144[48] = {
-  {(bigint) 2979 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction144 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction144 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2979 /* 3: ReduceAction144 < ReduceAction144: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_APublicVisibility;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_APublicVisibility(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_APublicVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_APublicVisibility_parser_prod___APublicVisibility___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 329;
+  fra.me.meth = LOCATE_NEW_APublicVisibility_parser_prod___APublicVisibility___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:329 */
+  fra.me.REG[0] = NEW_APublicVisibility();
+  INIT_ATTRIBUTES__APublicVisibility(fra.me.REG[0]);
+  parser_prod___APublicVisibility___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_APublicVisibility(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APublicVisibility_parser_prod___APublicVisibility___init_apublicvisibility(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 331;
+  fra.me.meth = LOCATE_NEW_APublicVisibility_parser_prod___APublicVisibility___init_apublicvisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:331 */
+  fra.me.REG[0] = NEW_APublicVisibility();
+  INIT_ATTRIBUTES__APublicVisibility(fra.me.REG[0]);
+  parser_prod___APublicVisibility___init_apublicvisibility(fra.me.REG[0], init_table);
+  CHECKNEW_APublicVisibility(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APublicVisibility_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_APublicVisibility_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_APublicVisibility();
+  INIT_ATTRIBUTES__APublicVisibility(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APublicVisibility(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_APrivateVisibility[73] = {
+  {(bigint) 3071 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: APrivateVisibility < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: APrivateVisibility < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: APrivateVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 2791 /* 5: APrivateVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 3071 /* 6: APrivateVisibility < APrivateVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57821,14 +40021,9 @@ const classtable_elt_t VFT_ReduceAction144[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction144 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: APrivateVisibility < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57836,7 +40031,6 @@ const classtable_elt_t VFT_ReduceAction144[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57844,43 +40038,160 @@ const classtable_elt_t VFT_ReduceAction144[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction144 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction144___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction144 < ReduceAction144: superclass init_table position */},
-  {(bigint) parser___ReduceAction144___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___APrivateVisibility___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___APrivateVisibility___visit_all},
+  {(bigint) 1 /* 58: APrivateVisibility < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: APrivateVisibility < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___APrivateVisibility___level},
+  {(bigint) 3 /* 68: APrivateVisibility < AVisibility: superclass init_table position */},
+  {(bigint) parser_prod___APrivateVisibility___empty_init},
+  {(bigint) parser_prod___APrivateVisibility___init_aprivatevisibility},
+  {(bigint) 4 /* 71: APrivateVisibility < APrivateVisibility: superclass init_table position */},
+  {(bigint) parser_nodes___APrivateVisibility___n_kwprivate},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction144(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute APrivateVisibility::_parent */
+/* 3: Attribute APrivateVisibility::_location */
+/* 4: Attribute APrivateVisibility::_first_location */
+/* 5: Attribute APrivateVisibility::_last_location */
+/* 6: Attribute APrivateVisibility::_n_kwprivate */
+void INIT_ATTRIBUTES__APrivateVisibility(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__APrivateVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_APrivateVisibility(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction144;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction144(val_t self, char *from) {
-}
-val_t NEW_ReduceAction144_parser___ReduceAction144___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction144();
-  parser___ReduceAction144___init(self, init_table);
-  CHECKNEW_ReduceAction144(self, "parser::ReduceAction144::init for ReduceAction144");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_APrivateVisibility;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_APrivateVisibility(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_APrivateVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwprivate", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction145[48] = {
-  {(bigint) 2975 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction145 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction145 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2975 /* 3: ReduceAction145 < ReduceAction145: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_APrivateVisibility_parser_prod___APrivateVisibility___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 345;
+  fra.me.meth = LOCATE_NEW_APrivateVisibility_parser_prod___APrivateVisibility___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:345 */
+  fra.me.REG[0] = NEW_APrivateVisibility();
+  INIT_ATTRIBUTES__APrivateVisibility(fra.me.REG[0]);
+  parser_prod___APrivateVisibility___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_APrivateVisibility(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APrivateVisibility_parser_prod___APrivateVisibility___init_aprivatevisibility(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 347;
+  fra.me.meth = LOCATE_NEW_APrivateVisibility_parser_prod___APrivateVisibility___init_aprivatevisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:347 */
+  fra.me.REG[1] = NEW_APrivateVisibility();
+  INIT_ATTRIBUTES__APrivateVisibility(fra.me.REG[1]);
+  parser_prod___APrivateVisibility___init_aprivatevisibility(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APrivateVisibility(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_APrivateVisibility_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_APrivateVisibility_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_APrivateVisibility();
+  INIT_ATTRIBUTES__APrivateVisibility(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APrivateVisibility(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AProtectedVisibility[73] = {
+  {(bigint) 3067 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AProtectedVisibility < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AProtectedVisibility < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AProtectedVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 2791 /* 5: AProtectedVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 3067 /* 6: AProtectedVisibility < AProtectedVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57891,14 +40202,9 @@ const classtable_elt_t VFT_ReduceAction145[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction145 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AProtectedVisibility < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57906,7 +40212,6 @@ const classtable_elt_t VFT_ReduceAction145[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57914,43 +40219,160 @@ const classtable_elt_t VFT_ReduceAction145[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction145 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction145___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction145 < ReduceAction145: superclass init_table position */},
-  {(bigint) parser___ReduceAction145___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AProtectedVisibility___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AProtectedVisibility___visit_all},
+  {(bigint) 1 /* 58: AProtectedVisibility < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AProtectedVisibility < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AProtectedVisibility___level},
+  {(bigint) 3 /* 68: AProtectedVisibility < AVisibility: superclass init_table position */},
+  {(bigint) parser_prod___AProtectedVisibility___empty_init},
+  {(bigint) parser_prod___AProtectedVisibility___init_aprotectedvisibility},
+  {(bigint) 4 /* 71: AProtectedVisibility < AProtectedVisibility: superclass init_table position */},
+  {(bigint) parser_nodes___AProtectedVisibility___n_kwprotected},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction145(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AProtectedVisibility::_parent */
+/* 3: Attribute AProtectedVisibility::_location */
+/* 4: Attribute AProtectedVisibility::_first_location */
+/* 5: Attribute AProtectedVisibility::_last_location */
+/* 6: Attribute AProtectedVisibility::_n_kwprotected */
+void INIT_ATTRIBUTES__AProtectedVisibility(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AProtectedVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AProtectedVisibility(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction145;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction145(val_t self, char *from) {
-}
-val_t NEW_ReduceAction145_parser___ReduceAction145___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction145();
-  parser___ReduceAction145___init(self, init_table);
-  CHECKNEW_ReduceAction145(self, "parser::ReduceAction145::init for ReduceAction145");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_AProtectedVisibility;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AProtectedVisibility(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AProtectedVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwprotected", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction146[48] = {
-  {(bigint) 2971 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction146 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction146 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2971 /* 3: ReduceAction146 < ReduceAction146: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 376;
+  fra.me.meth = LOCATE_NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:376 */
+  fra.me.REG[0] = NEW_AProtectedVisibility();
+  INIT_ATTRIBUTES__AProtectedVisibility(fra.me.REG[0]);
+  parser_prod___AProtectedVisibility___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AProtectedVisibility(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___init_aprotectedvisibility(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 378;
+  fra.me.meth = LOCATE_NEW_AProtectedVisibility_parser_prod___AProtectedVisibility___init_aprotectedvisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:378 */
+  fra.me.REG[1] = NEW_AProtectedVisibility();
+  INIT_ATTRIBUTES__AProtectedVisibility(fra.me.REG[1]);
+  parser_prod___AProtectedVisibility___init_aprotectedvisibility(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AProtectedVisibility(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AProtectedVisibility_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AProtectedVisibility_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AProtectedVisibility();
+  INIT_ATTRIBUTES__AProtectedVisibility(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AProtectedVisibility(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AIntrudeVisibility[73] = {
+  {(bigint) 3127 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AIntrudeVisibility < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AIntrudeVisibility < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AIntrudeVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 2791 /* 5: AIntrudeVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 3127 /* 6: AIntrudeVisibility < AIntrudeVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57961,14 +40383,9 @@ const classtable_elt_t VFT_ReduceAction146[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction146 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AIntrudeVisibility < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -57976,7 +40393,6 @@ const classtable_elt_t VFT_ReduceAction146[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -57984,42 +40400,159 @@ const classtable_elt_t VFT_ReduceAction146[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction146 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction146___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction146 < ReduceAction146: superclass init_table position */},
-  {(bigint) parser___ReduceAction146___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AIntrudeVisibility___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AIntrudeVisibility___visit_all},
+  {(bigint) 1 /* 58: AIntrudeVisibility < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AIntrudeVisibility < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AIntrudeVisibility___level},
+  {(bigint) 3 /* 68: AIntrudeVisibility < AVisibility: superclass init_table position */},
+  {(bigint) parser_prod___AIntrudeVisibility___empty_init},
+  {(bigint) parser_prod___AIntrudeVisibility___init_aintrudevisibility},
+  {(bigint) 4 /* 71: AIntrudeVisibility < AIntrudeVisibility: superclass init_table position */},
+  {(bigint) parser_nodes___AIntrudeVisibility___n_kwintrude},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction146(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AIntrudeVisibility::_parent */
+/* 3: Attribute AIntrudeVisibility::_location */
+/* 4: Attribute AIntrudeVisibility::_first_location */
+/* 5: Attribute AIntrudeVisibility::_last_location */
+/* 6: Attribute AIntrudeVisibility::_n_kwintrude */
+void INIT_ATTRIBUTES__AIntrudeVisibility(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AIntrudeVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AIntrudeVisibility(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction146;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction146(val_t self, char *from) {
-}
-val_t NEW_ReduceAction146_parser___ReduceAction146___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction146();
-  parser___ReduceAction146___init(self, init_table);
-  CHECKNEW_ReduceAction146(self, "parser::ReduceAction146::init for ReduceAction146");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_AIntrudeVisibility;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AIntrudeVisibility(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AIntrudeVisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwintrude", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction147[48] = {
-  {(bigint) 2967 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction147 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction147 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2967 /* 3: ReduceAction147 < ReduceAction147: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 407;
+  fra.me.meth = LOCATE_NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:407 */
+  fra.me.REG[0] = NEW_AIntrudeVisibility();
+  INIT_ATTRIBUTES__AIntrudeVisibility(fra.me.REG[0]);
+  parser_prod___AIntrudeVisibility___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AIntrudeVisibility(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 409;
+  fra.me.meth = LOCATE_NEW_AIntrudeVisibility_parser_prod___AIntrudeVisibility___init_aintrudevisibility;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:409 */
+  fra.me.REG[1] = NEW_AIntrudeVisibility();
+  INIT_ATTRIBUTES__AIntrudeVisibility(fra.me.REG[1]);
+  parser_prod___AIntrudeVisibility___init_aintrudevisibility(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AIntrudeVisibility(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AIntrudeVisibility_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AIntrudeVisibility_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AIntrudeVisibility();
+  INIT_ATTRIBUTES__AIntrudeVisibility(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AIntrudeVisibility(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AClassdef[77] = {
+  {(bigint) 2867 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AClassdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AClassdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AClassdef < Prod: superclass typecheck marker */},
+  {(bigint) 2867 /* 5: AClassdef < AClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58031,14 +40564,9 @@ const classtable_elt_t VFT_ReduceAction147[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction147 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AClassdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58046,7 +40574,6 @@ const classtable_elt_t VFT_ReduceAction147[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58054,43 +40581,123 @@ const classtable_elt_t VFT_ReduceAction147[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction147 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction147___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction147 < ReduceAction147: superclass init_table position */},
-  {(bigint) parser___ReduceAction147___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction147(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AClassdef___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) mmbuilder___AClassdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AClassdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___AClassdef___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AClassdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AClassdef___name},
+  {(bigint) mmbuilder___AClassdef___arity},
+  {(bigint) mmbuilder___AClassdef___visibility_level},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AClassdef___local_class},
+  {(bigint) syntax_base___AClassdef___next_node},
+  {(bigint) syntax_base___AClassdef___next_node__eq},
+  {(bigint) 3 /* 75: AClassdef < AClassdef: superclass init_table position */},
+  {(bigint) typing___ANode___accept_typing},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AClassdef::_parent */
+/* 3: Attribute AClassdef::_location */
+/* 4: Attribute AClassdef::_first_location */
+/* 5: Attribute AClassdef::_last_location */
+/* 6: Attribute AClassdef::_local_class */
+/* 7: Attribute AClassdef::_next_node */
+void INIT_ATTRIBUTES__AClassdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AClassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:530 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AClassdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction147;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction147(val_t self, char *from) {
-}
-val_t NEW_ReduceAction147_parser___ReduceAction147___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction147();
-  parser___ReduceAction147___init(self, init_table);
-  CHECKNEW_ReduceAction147(self, "parser::ReduceAction147::init for ReduceAction147");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction148[48] = {
-  {(bigint) 2963 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction148 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction148 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2963 /* 3: ReduceAction148 < ReduceAction148: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AClassdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AClassdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AClassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AClassdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AClassdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AClassdef();
+  INIT_ATTRIBUTES__AClassdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AClassdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AStdClassdef[89] = {
+  {(bigint) 3019 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AStdClassdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AStdClassdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AStdClassdef < Prod: superclass typecheck marker */},
+  {(bigint) 2867 /* 5: AStdClassdef < AClassdef: superclass typecheck marker */},
+  {(bigint) 3019 /* 6: AStdClassdef < AStdClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58101,14 +40708,9 @@ const classtable_elt_t VFT_ReduceAction148[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction148 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AStdClassdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58116,7 +40718,6 @@ const classtable_elt_t VFT_ReduceAction148[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58124,43 +40725,243 @@ const classtable_elt_t VFT_ReduceAction148[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction148 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction148___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction148 < ReduceAction148: superclass init_table position */},
-  {(bigint) parser___ReduceAction148___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction148(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AClassdef___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___AStdClassdef___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) mmbuilder___AClassdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AStdClassdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AStdClassdef___visit_all},
+  {(bigint) 1 /* 58: AStdClassdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___AClassdef___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AStdClassdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AStdClassdef___name},
+  {(bigint) mmbuilder___AStdClassdef___arity},
+  {(bigint) mmbuilder___AStdClassdef___visibility_level},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AClassdef___local_class},
+  {(bigint) syntax_base___AClassdef___next_node},
+  {(bigint) syntax_base___AClassdef___next_node__eq},
+  {(bigint) 3 /* 75: AStdClassdef < AClassdef: superclass init_table position */},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) parser_prod___AStdClassdef___empty_init},
+  {(bigint) parser_prod___AStdClassdef___init_astdclassdef},
+  {(bigint) 4 /* 80: AStdClassdef < AStdClassdef: superclass init_table position */},
+  {(bigint) parser_nodes___AStdClassdef___n_doc},
+  {(bigint) parser_nodes___AStdClassdef___n_kwredef},
+  {(bigint) parser_nodes___AStdClassdef___n_visibility},
+  {(bigint) parser_nodes___AStdClassdef___n_classkind},
+  {(bigint) parser_nodes___AStdClassdef___n_id},
+  {(bigint) parser_nodes___AStdClassdef___n_formaldefs},
+  {(bigint) parser_nodes___AStdClassdef___n_superclasses},
+  {(bigint) parser_nodes___AStdClassdef___n_propdefs},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AStdClassdef::_parent */
+/* 3: Attribute AStdClassdef::_location */
+/* 4: Attribute AStdClassdef::_first_location */
+/* 5: Attribute AStdClassdef::_last_location */
+/* 6: Attribute AStdClassdef::_local_class */
+/* 7: Attribute AStdClassdef::_next_node */
+/* 8: Attribute AStdClassdef::_n_doc */
+/* 9: Attribute AStdClassdef::_n_kwredef */
+/* 10: Attribute AStdClassdef::_n_visibility */
+/* 11: Attribute AStdClassdef::_n_classkind */
+/* 12: Attribute AStdClassdef::_n_id */
+/* 13: Attribute AStdClassdef::_n_formaldefs */
+/* 14: Attribute AStdClassdef::_n_superclasses */
+/* 15: Attribute AStdClassdef::_n_propdefs */
+void INIT_ATTRIBUTES__AStdClassdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AStdClassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:362 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:363 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:366 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:367 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:368 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:369 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//syntax_base.nit:530 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AStdClassdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction148;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction148(val_t self, char *from) {
-}
-val_t NEW_ReduceAction148_parser___ReduceAction148___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction148();
-  parser___ReduceAction148___init(self, init_table);
-  CHECKNEW_ReduceAction148(self, "parser::ReduceAction148::init for ReduceAction148");
-  return self;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_AStdClassdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AStdClassdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AStdClassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_classkind", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction149[48] = {
-  {(bigint) 2959 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction149 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction149 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2959 /* 3: ReduceAction149 < ReduceAction149: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AStdClassdef_parser_prod___AStdClassdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 438;
+  fra.me.meth = LOCATE_NEW_AStdClassdef_parser_prod___AStdClassdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:438 */
+  fra.me.REG[0] = NEW_AStdClassdef();
+  INIT_ATTRIBUTES__AStdClassdef(fra.me.REG[0]);
+  parser_prod___AStdClassdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStdClassdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7){
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 440;
+  fra.me.meth = LOCATE_NEW_AStdClassdef_parser_prod___AStdClassdef___init_astdclassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 9;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  fra.me.REG[7] = p7;
+  /* ./parser//parser_prod.nit:440 */
+  fra.me.REG[8] = NEW_AStdClassdef();
+  INIT_ATTRIBUTES__AStdClassdef(fra.me.REG[8]);
+  parser_prod___AStdClassdef___init_astdclassdef(fra.me.REG[8], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], init_table);
+  CHECKNEW_AStdClassdef(fra.me.REG[8]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[8];
+}
+val_t NEW_AStdClassdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AStdClassdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AStdClassdef();
+  INIT_ATTRIBUTES__AStdClassdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStdClassdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ATopClassdef[81] = {
+  {(bigint) 3003 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ATopClassdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ATopClassdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ATopClassdef < Prod: superclass typecheck marker */},
+  {(bigint) 2867 /* 5: ATopClassdef < AClassdef: superclass typecheck marker */},
+  {(bigint) 3003 /* 6: ATopClassdef < ATopClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58171,14 +40972,9 @@ const classtable_elt_t VFT_ReduceAction149[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction149 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ATopClassdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58186,7 +40982,6 @@ const classtable_elt_t VFT_ReduceAction149[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58194,43 +40989,179 @@ const classtable_elt_t VFT_ReduceAction149[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction149 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction149___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction149 < ReduceAction149: superclass init_table position */},
-  {(bigint) parser___ReduceAction149___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AClassdef___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) mmbuilder___AClassdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ATopClassdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ATopClassdef___visit_all},
+  {(bigint) 1 /* 58: ATopClassdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___AClassdef___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ATopClassdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___ATopClassdef___name},
+  {(bigint) mmbuilder___AClassdef___arity},
+  {(bigint) mmbuilder___AClassdef___visibility_level},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AClassdef___local_class},
+  {(bigint) syntax_base___AClassdef___next_node},
+  {(bigint) syntax_base___AClassdef___next_node__eq},
+  {(bigint) 3 /* 75: ATopClassdef < AClassdef: superclass init_table position */},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) parser_prod___ATopClassdef___empty_init},
+  {(bigint) parser_prod___ATopClassdef___init_atopclassdef},
+  {(bigint) 4 /* 79: ATopClassdef < ATopClassdef: superclass init_table position */},
+  {(bigint) parser_nodes___ATopClassdef___n_propdefs},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction149(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ATopClassdef::_parent */
+/* 3: Attribute ATopClassdef::_location */
+/* 4: Attribute ATopClassdef::_first_location */
+/* 5: Attribute ATopClassdef::_last_location */
+/* 6: Attribute ATopClassdef::_local_class */
+/* 7: Attribute ATopClassdef::_next_node */
+/* 8: Attribute ATopClassdef::_n_propdefs */
+void INIT_ATTRIBUTES__ATopClassdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ATopClassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:373 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//syntax_base.nit:530 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ATopClassdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction149;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction149(val_t self, char *from) {
-}
-val_t NEW_ReduceAction149_parser___ReduceAction149___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction149();
-  parser___ReduceAction149___init(self, init_table);
-  CHECKNEW_ReduceAction149(self, "parser::ReduceAction149::init for ReduceAction149");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_ATopClassdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ATopClassdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ATopClassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction150[48] = {
-  {(bigint) 2951 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction150 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction150 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2951 /* 3: ReduceAction150 < ReduceAction150: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ATopClassdef_parser_prod___ATopClassdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 600;
+  fra.me.meth = LOCATE_NEW_ATopClassdef_parser_prod___ATopClassdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:600 */
+  fra.me.REG[0] = NEW_ATopClassdef();
+  INIT_ATTRIBUTES__ATopClassdef(fra.me.REG[0]);
+  parser_prod___ATopClassdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ATopClassdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 602;
+  fra.me.meth = LOCATE_NEW_ATopClassdef_parser_prod___ATopClassdef___init_atopclassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:602 */
+  fra.me.REG[1] = NEW_ATopClassdef();
+  INIT_ATTRIBUTES__ATopClassdef(fra.me.REG[1]);
+  parser_prod___ATopClassdef___init_atopclassdef(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ATopClassdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ATopClassdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ATopClassdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ATopClassdef();
+  INIT_ATTRIBUTES__ATopClassdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ATopClassdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AMainClassdef[81] = {
+  {(bigint) 3111 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AMainClassdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AMainClassdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AMainClassdef < Prod: superclass typecheck marker */},
+  {(bigint) 2867 /* 5: AMainClassdef < AClassdef: superclass typecheck marker */},
+  {(bigint) 3111 /* 6: AMainClassdef < AMainClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58241,14 +41172,9 @@ const classtable_elt_t VFT_ReduceAction150[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction150 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AMainClassdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58256,7 +41182,6 @@ const classtable_elt_t VFT_ReduceAction150[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58264,42 +41189,178 @@ const classtable_elt_t VFT_ReduceAction150[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction150 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction150___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction150 < ReduceAction150: superclass init_table position */},
-  {(bigint) parser___ReduceAction150___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AClassdef___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) mmbuilder___AClassdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AMainClassdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AMainClassdef___visit_all},
+  {(bigint) 1 /* 58: AMainClassdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___AClassdef___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AMainClassdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMainClassdef___name},
+  {(bigint) mmbuilder___AClassdef___arity},
+  {(bigint) mmbuilder___AClassdef___visibility_level},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AClassdef___local_class},
+  {(bigint) syntax_base___AClassdef___next_node},
+  {(bigint) syntax_base___AClassdef___next_node__eq},
+  {(bigint) 3 /* 75: AMainClassdef < AClassdef: superclass init_table position */},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) parser_prod___AMainClassdef___empty_init},
+  {(bigint) parser_prod___AMainClassdef___init_amainclassdef},
+  {(bigint) 4 /* 79: AMainClassdef < AMainClassdef: superclass init_table position */},
+  {(bigint) parser_nodes___AMainClassdef___n_propdefs},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction150(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AMainClassdef::_parent */
+/* 3: Attribute AMainClassdef::_location */
+/* 4: Attribute AMainClassdef::_first_location */
+/* 5: Attribute AMainClassdef::_last_location */
+/* 6: Attribute AMainClassdef::_local_class */
+/* 7: Attribute AMainClassdef::_next_node */
+/* 8: Attribute AMainClassdef::_n_propdefs */
+void INIT_ATTRIBUTES__AMainClassdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AMainClassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:377 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//syntax_base.nit:530 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMainClassdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction150;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction150(val_t self, char *from) {
-}
-val_t NEW_ReduceAction150_parser___ReduceAction150___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction150();
-  parser___ReduceAction150___init(self, init_table);
-  CHECKNEW_ReduceAction150(self, "parser::ReduceAction150::init for ReduceAction150");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_AMainClassdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AMainClassdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AMainClassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction151[48] = {
-  {(bigint) 2947 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction151 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction151 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2947 /* 3: ReduceAction151 < ReduceAction151: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AMainClassdef_parser_prod___AMainClassdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 638;
+  fra.me.meth = LOCATE_NEW_AMainClassdef_parser_prod___AMainClassdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:638 */
+  fra.me.REG[0] = NEW_AMainClassdef();
+  INIT_ATTRIBUTES__AMainClassdef(fra.me.REG[0]);
+  parser_prod___AMainClassdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AMainClassdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AMainClassdef_parser_prod___AMainClassdef___init_amainclassdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 640;
+  fra.me.meth = LOCATE_NEW_AMainClassdef_parser_prod___AMainClassdef___init_amainclassdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:640 */
+  fra.me.REG[1] = NEW_AMainClassdef();
+  INIT_ATTRIBUTES__AMainClassdef(fra.me.REG[1]);
+  parser_prod___AMainClassdef___init_amainclassdef(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMainClassdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AMainClassdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AMainClassdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AMainClassdef();
+  INIT_ATTRIBUTES__AMainClassdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMainClassdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AClasskind[71] = {
+  {(bigint) 2863 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AClasskind < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AClasskind < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 2863 /* 5: AClasskind < AClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58311,14 +41372,9 @@ const classtable_elt_t VFT_ReduceAction151[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction151 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AClasskind < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58326,7 +41382,6 @@ const classtable_elt_t VFT_ReduceAction151[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58334,43 +41389,109 @@ const classtable_elt_t VFT_ReduceAction151[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction151 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction151___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction151 < ReduceAction151: superclass init_table position */},
-  {(bigint) parser___ReduceAction151___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction151(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AClasskind < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AClasskind < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AClasskind___is_interface},
+  {(bigint) mmbuilder___AClasskind___is_enum},
+  {(bigint) mmbuilder___AClasskind___is_abstract},
+  {(bigint) 3 /* 70: AClasskind < AClasskind: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AClasskind::_parent */
+/* 3: Attribute AClasskind::_location */
+/* 4: Attribute AClasskind::_first_location */
+/* 5: Attribute AClasskind::_last_location */
+void INIT_ATTRIBUTES__AClasskind(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AClasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AClasskind(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction151;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction151(val_t self, char *from) {
-}
-val_t NEW_ReduceAction151_parser___ReduceAction151___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction151();
-  parser___ReduceAction151___init(self, init_table);
-  CHECKNEW_ReduceAction151(self, "parser::ReduceAction151::init for ReduceAction151");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction152[48] = {
-  {(bigint) 2943 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction152 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction152 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2943 /* 3: ReduceAction152 < ReduceAction152: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_AClasskind;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AClasskind(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AClasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AClasskind_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AClasskind_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AClasskind();
+  INIT_ATTRIBUTES__AClasskind(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AClasskind(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AConcreteClasskind[75] = {
+  {(bigint) 3183 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AConcreteClasskind < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AConcreteClasskind < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AConcreteClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 2863 /* 5: AConcreteClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 3183 /* 6: AConcreteClasskind < AConcreteClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58381,14 +41502,9 @@ const classtable_elt_t VFT_ReduceAction152[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction152 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AConcreteClasskind < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58396,7 +41512,6 @@ const classtable_elt_t VFT_ReduceAction152[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58404,43 +41519,162 @@ const classtable_elt_t VFT_ReduceAction152[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction152 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction152___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction152 < ReduceAction152: superclass init_table position */},
-  {(bigint) parser___ReduceAction152___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AConcreteClasskind___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AConcreteClasskind___visit_all},
+  {(bigint) 1 /* 58: AConcreteClasskind < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AConcreteClasskind < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AClasskind___is_interface},
+  {(bigint) mmbuilder___AClasskind___is_enum},
+  {(bigint) mmbuilder___AClasskind___is_abstract},
+  {(bigint) 3 /* 70: AConcreteClasskind < AClasskind: superclass init_table position */},
+  {(bigint) parser_prod___AConcreteClasskind___empty_init},
+  {(bigint) parser_prod___AConcreteClasskind___init_aconcreteclasskind},
+  {(bigint) 4 /* 73: AConcreteClasskind < AConcreteClasskind: superclass init_table position */},
+  {(bigint) parser_nodes___AConcreteClasskind___n_kwclass},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction152(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AConcreteClasskind::_parent */
+/* 3: Attribute AConcreteClasskind::_location */
+/* 4: Attribute AConcreteClasskind::_first_location */
+/* 5: Attribute AConcreteClasskind::_last_location */
+/* 6: Attribute AConcreteClasskind::_n_kwclass */
+void INIT_ATTRIBUTES__AConcreteClasskind(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AConcreteClasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AConcreteClasskind(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction152;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction152(val_t self, char *from) {
-}
-val_t NEW_ReduceAction152_parser___ReduceAction152___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction152();
-  parser___ReduceAction152___init(self, init_table);
-  CHECKNEW_ReduceAction152(self, "parser::ReduceAction152::init for ReduceAction152");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_AConcreteClasskind;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AConcreteClasskind(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AConcreteClasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction153[48] = {
-  {(bigint) 2939 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction153 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction153 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2939 /* 3: ReduceAction153 < ReduceAction153: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 676;
+  fra.me.meth = LOCATE_NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:676 */
+  fra.me.REG[0] = NEW_AConcreteClasskind();
+  INIT_ATTRIBUTES__AConcreteClasskind(fra.me.REG[0]);
+  parser_prod___AConcreteClasskind___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AConcreteClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 678;
+  fra.me.meth = LOCATE_NEW_AConcreteClasskind_parser_prod___AConcreteClasskind___init_aconcreteclasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:678 */
+  fra.me.REG[1] = NEW_AConcreteClasskind();
+  INIT_ATTRIBUTES__AConcreteClasskind(fra.me.REG[1]);
+  parser_prod___AConcreteClasskind___init_aconcreteclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AConcreteClasskind(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AConcreteClasskind_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AConcreteClasskind_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AConcreteClasskind();
+  INIT_ATTRIBUTES__AConcreteClasskind(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AConcreteClasskind(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAbstractClasskind[76] = {
+  {(bigint) 3243 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAbstractClasskind < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAbstractClasskind < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAbstractClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 2863 /* 5: AAbstractClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 3243 /* 6: AAbstractClasskind < AAbstractClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58451,14 +41685,9 @@ const classtable_elt_t VFT_ReduceAction153[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction153 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAbstractClasskind < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58466,7 +41695,6 @@ const classtable_elt_t VFT_ReduceAction153[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58474,43 +41702,171 @@ const classtable_elt_t VFT_ReduceAction153[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction153 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction153___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction153 < ReduceAction153: superclass init_table position */},
-  {(bigint) parser___ReduceAction153___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction153(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction153;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction153(val_t self, char *from) {
-}
-val_t NEW_ReduceAction153_parser___ReduceAction153___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction153();
-  parser___ReduceAction153___init(self, init_table);
-  CHECKNEW_ReduceAction153(self, "parser::ReduceAction153::init for ReduceAction153");
-  return self;
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AAbstractClasskind___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AAbstractClasskind___visit_all},
+  {(bigint) 1 /* 58: AAbstractClasskind < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAbstractClasskind < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AClasskind___is_interface},
+  {(bigint) mmbuilder___AClasskind___is_enum},
+  {(bigint) mmbuilder___AAbstractClasskind___is_abstract},
+  {(bigint) 3 /* 70: AAbstractClasskind < AClasskind: superclass init_table position */},
+  {(bigint) parser_prod___AAbstractClasskind___empty_init},
+  {(bigint) parser_prod___AAbstractClasskind___init_aabstractclasskind},
+  {(bigint) 4 /* 73: AAbstractClasskind < AAbstractClasskind: superclass init_table position */},
+  {(bigint) parser_nodes___AAbstractClasskind___n_kwabstract},
+  {(bigint) parser_nodes___AAbstractClasskind___n_kwclass},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AAbstractClasskind::_parent */
+/* 3: Attribute AAbstractClasskind::_location */
+/* 4: Attribute AAbstractClasskind::_first_location */
+/* 5: Attribute AAbstractClasskind::_last_location */
+/* 6: Attribute AAbstractClasskind::_n_kwabstract */
+/* 7: Attribute AAbstractClasskind::_n_kwclass */
+void INIT_ATTRIBUTES__AAbstractClasskind(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAbstractClasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAbstractClasskind(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AAbstractClasskind;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAbstractClasskind(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAbstractClasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwabstract", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwclass", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction154[48] = {
-  {(bigint) 2935 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction154 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction154 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2935 /* 3: ReduceAction154 < ReduceAction154: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 707;
+  fra.me.meth = LOCATE_NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:707 */
+  fra.me.REG[0] = NEW_AAbstractClasskind();
+  INIT_ATTRIBUTES__AAbstractClasskind(fra.me.REG[0]);
+  parser_prod___AAbstractClasskind___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AAbstractClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 709;
+  fra.me.meth = LOCATE_NEW_AAbstractClasskind_parser_prod___AAbstractClasskind___init_aabstractclasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:709 */
+  fra.me.REG[2] = NEW_AAbstractClasskind();
+  INIT_ATTRIBUTES__AAbstractClasskind(fra.me.REG[2]);
+  parser_prod___AAbstractClasskind___init_aabstractclasskind(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AAbstractClasskind(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AAbstractClasskind_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAbstractClasskind_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAbstractClasskind();
+  INIT_ATTRIBUTES__AAbstractClasskind(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAbstractClasskind(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AInterfaceClasskind[75] = {
+  {(bigint) 3131 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AInterfaceClasskind < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AInterfaceClasskind < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AInterfaceClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 2863 /* 5: AInterfaceClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 3131 /* 6: AInterfaceClasskind < AInterfaceClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58521,14 +41877,9 @@ const classtable_elt_t VFT_ReduceAction154[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction154 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AInterfaceClasskind < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58536,7 +41887,6 @@ const classtable_elt_t VFT_ReduceAction154[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58544,43 +41894,162 @@ const classtable_elt_t VFT_ReduceAction154[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction154 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction154___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction154 < ReduceAction154: superclass init_table position */},
-  {(bigint) parser___ReduceAction154___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AInterfaceClasskind___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AInterfaceClasskind___visit_all},
+  {(bigint) 1 /* 58: AInterfaceClasskind < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AInterfaceClasskind < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AInterfaceClasskind___is_interface},
+  {(bigint) mmbuilder___AClasskind___is_enum},
+  {(bigint) mmbuilder___AClasskind___is_abstract},
+  {(bigint) 3 /* 70: AInterfaceClasskind < AClasskind: superclass init_table position */},
+  {(bigint) parser_prod___AInterfaceClasskind___empty_init},
+  {(bigint) parser_prod___AInterfaceClasskind___init_ainterfaceclasskind},
+  {(bigint) 4 /* 73: AInterfaceClasskind < AInterfaceClasskind: superclass init_table position */},
+  {(bigint) parser_nodes___AInterfaceClasskind___n_kwinterface},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction154(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AInterfaceClasskind::_parent */
+/* 3: Attribute AInterfaceClasskind::_location */
+/* 4: Attribute AInterfaceClasskind::_first_location */
+/* 5: Attribute AInterfaceClasskind::_last_location */
+/* 6: Attribute AInterfaceClasskind::_n_kwinterface */
+void INIT_ATTRIBUTES__AInterfaceClasskind(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AInterfaceClasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AInterfaceClasskind(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction154;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction154(val_t self, char *from) {
-}
-val_t NEW_ReduceAction154_parser___ReduceAction154___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction154();
-  parser___ReduceAction154___init(self, init_table);
-  CHECKNEW_ReduceAction154(self, "parser::ReduceAction154::init for ReduceAction154");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_AInterfaceClasskind;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AInterfaceClasskind(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AInterfaceClasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwinterface", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction155[48] = {
-  {(bigint) 2931 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction155 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction155 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2931 /* 3: ReduceAction155 < ReduceAction155: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 752;
+  fra.me.meth = LOCATE_NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:752 */
+  fra.me.REG[0] = NEW_AInterfaceClasskind();
+  INIT_ATTRIBUTES__AInterfaceClasskind(fra.me.REG[0]);
+  parser_prod___AInterfaceClasskind___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AInterfaceClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 754;
+  fra.me.meth = LOCATE_NEW_AInterfaceClasskind_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:754 */
+  fra.me.REG[1] = NEW_AInterfaceClasskind();
+  INIT_ATTRIBUTES__AInterfaceClasskind(fra.me.REG[1]);
+  parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AInterfaceClasskind(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AInterfaceClasskind_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AInterfaceClasskind_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AInterfaceClasskind();
+  INIT_ATTRIBUTES__AInterfaceClasskind(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AInterfaceClasskind(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AEnumClasskind[75] = {
+  {(bigint) 3179 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AEnumClasskind < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AEnumClasskind < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AEnumClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 2863 /* 5: AEnumClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 3179 /* 6: AEnumClasskind < AEnumClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58591,14 +42060,9 @@ const classtable_elt_t VFT_ReduceAction155[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction155 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AEnumClasskind < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58606,7 +42070,6 @@ const classtable_elt_t VFT_ReduceAction155[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58614,42 +42077,161 @@ const classtable_elt_t VFT_ReduceAction155[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction155 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction155___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction155 < ReduceAction155: superclass init_table position */},
-  {(bigint) parser___ReduceAction155___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction155(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AEnumClasskind___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AEnumClasskind___visit_all},
+  {(bigint) 1 /* 58: AEnumClasskind < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AEnumClasskind < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AClasskind___is_interface},
+  {(bigint) mmbuilder___AEnumClasskind___is_enum},
+  {(bigint) mmbuilder___AClasskind___is_abstract},
+  {(bigint) 3 /* 70: AEnumClasskind < AClasskind: superclass init_table position */},
+  {(bigint) parser_prod___AEnumClasskind___empty_init},
+  {(bigint) parser_prod___AEnumClasskind___init_aenumclasskind},
+  {(bigint) 4 /* 73: AEnumClasskind < AEnumClasskind: superclass init_table position */},
+  {(bigint) parser_nodes___AEnumClasskind___n_kwenum},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AEnumClasskind::_parent */
+/* 3: Attribute AEnumClasskind::_location */
+/* 4: Attribute AEnumClasskind::_first_location */
+/* 5: Attribute AEnumClasskind::_last_location */
+/* 6: Attribute AEnumClasskind::_n_kwenum */
+void INIT_ATTRIBUTES__AEnumClasskind(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AEnumClasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AEnumClasskind(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction155;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction155(val_t self, char *from) {
-}
-val_t NEW_ReduceAction155_parser___ReduceAction155___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction155();
-  parser___ReduceAction155___init(self, init_table);
-  CHECKNEW_ReduceAction155(self, "parser::ReduceAction155::init for ReduceAction155");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_AEnumClasskind;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AEnumClasskind(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AEnumClasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwenum", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction156[48] = {
-  {(bigint) 2927 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction156 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction156 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2927 /* 3: ReduceAction156 < ReduceAction156: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 783;
+  fra.me.meth = LOCATE_NEW_AEnumClasskind_parser_prod___AEnumClasskind___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:783 */
+  fra.me.REG[0] = NEW_AEnumClasskind();
+  INIT_ATTRIBUTES__AEnumClasskind(fra.me.REG[0]);
+  parser_prod___AEnumClasskind___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AEnumClasskind(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 785;
+  fra.me.meth = LOCATE_NEW_AEnumClasskind_parser_prod___AEnumClasskind___init_aenumclasskind;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:785 */
+  fra.me.REG[1] = NEW_AEnumClasskind();
+  INIT_ATTRIBUTES__AEnumClasskind(fra.me.REG[1]);
+  parser_prod___AEnumClasskind___init_aenumclasskind(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AEnumClasskind(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AEnumClasskind_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AEnumClasskind_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AEnumClasskind();
+  INIT_ATTRIBUTES__AEnumClasskind(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AEnumClasskind(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AFormaldef[74] = {
+  {(bigint) 2843 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AFormaldef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AFormaldef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AFormaldef < Prod: superclass typecheck marker */},
+  {(bigint) 2843 /* 5: AFormaldef < AFormaldef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58661,14 +42243,9 @@ const classtable_elt_t VFT_ReduceAction156[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction156 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AFormaldef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58676,7 +42253,6 @@ const classtable_elt_t VFT_ReduceAction156[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58684,42 +42260,170 @@ const classtable_elt_t VFT_ReduceAction156[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction156 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction156___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction156 < ReduceAction156: superclass init_table position */},
-  {(bigint) parser___ReduceAction156___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AFormaldef___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___AFormaldef___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AFormaldef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AFormaldef___visit_all},
+  {(bigint) 1 /* 58: AFormaldef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AFormaldef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) parser_prod___AFormaldef___empty_init},
+  {(bigint) parser_prod___AFormaldef___init_aformaldef},
+  {(bigint) 3 /* 71: AFormaldef < AFormaldef: superclass init_table position */},
+  {(bigint) parser_nodes___AFormaldef___n_id},
+  {(bigint) parser_nodes___AFormaldef___n_type},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction156(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AFormaldef::_parent */
+/* 3: Attribute AFormaldef::_location */
+/* 4: Attribute AFormaldef::_first_location */
+/* 5: Attribute AFormaldef::_last_location */
+/* 6: Attribute AFormaldef::_formal */
+/* 7: Attribute AFormaldef::_n_id */
+/* 8: Attribute AFormaldef::_n_type */
+void INIT_ATTRIBUTES__AFormaldef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AFormaldef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:400 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AFormaldef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction156;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction156(val_t self, char *from) {
-}
-val_t NEW_ReduceAction156_parser___ReduceAction156___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction156();
-  parser___ReduceAction156___init(self, init_table);
-  CHECKNEW_ReduceAction156(self, "parser::ReduceAction156::init for ReduceAction156");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_AFormaldef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AFormaldef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AFormaldef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AFormaldef____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction157[48] = {
-  {(bigint) 2923 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction157 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction157 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2923 /* 3: ReduceAction157 < ReduceAction157: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AFormaldef_parser_prod___AFormaldef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 814;
+  fra.me.meth = LOCATE_NEW_AFormaldef_parser_prod___AFormaldef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:814 */
+  fra.me.REG[0] = NEW_AFormaldef();
+  INIT_ATTRIBUTES__AFormaldef(fra.me.REG[0]);
+  parser_prod___AFormaldef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AFormaldef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 816;
+  fra.me.meth = LOCATE_NEW_AFormaldef_parser_prod___AFormaldef___init_aformaldef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:816 */
+  fra.me.REG[2] = NEW_AFormaldef();
+  INIT_ATTRIBUTES__AFormaldef(fra.me.REG[2]);
+  parser_prod___AFormaldef___init_aformaldef(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AFormaldef(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AFormaldef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AFormaldef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AFormaldef();
+  INIT_ATTRIBUTES__AFormaldef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AFormaldef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ASuperclass[77] = {
+  {(bigint) 2799 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ASuperclass < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ASuperclass < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ASuperclass < Prod: superclass typecheck marker */},
+  {(bigint) 2799 /* 5: ASuperclass < ASuperclass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58731,14 +42435,9 @@ const classtable_elt_t VFT_ReduceAction157[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction157 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ASuperclass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58746,7 +42445,6 @@ const classtable_elt_t VFT_ReduceAction157[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58754,42 +42452,179 @@ const classtable_elt_t VFT_ReduceAction157[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction157 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction157___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction157 < ReduceAction157: superclass init_table position */},
-  {(bigint) parser___ReduceAction157___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ASuperclass___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ASuperclass___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ASuperclass___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASuperclass___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASuperclass___visit_all},
+  {(bigint) 1 /* 58: ASuperclass < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ASuperclass < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___ASuperclass___ancestor},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) parser_prod___ASuperclass___empty_init},
+  {(bigint) parser_prod___ASuperclass___init_asuperclass},
+  {(bigint) 3 /* 73: ASuperclass < ASuperclass: superclass init_table position */},
+  {(bigint) parser_nodes___ASuperclass___n_kwspecial},
+  {(bigint) parser_nodes___ASuperclass___n_kwsuper},
+  {(bigint) parser_nodes___ASuperclass___n_type},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction157(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ASuperclass::_parent */
+/* 3: Attribute ASuperclass::_location */
+/* 4: Attribute ASuperclass::_first_location */
+/* 5: Attribute ASuperclass::_last_location */
+/* 6: Attribute ASuperclass::_ancestor */
+/* 7: Attribute ASuperclass::_n_kwspecial */
+/* 8: Attribute ASuperclass::_n_kwsuper */
+/* 9: Attribute ASuperclass::_n_type */
+void INIT_ATTRIBUTES__ASuperclass(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ASuperclass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:404 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:405 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASuperclass(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction157;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction157(val_t self, char *from) {
-}
-val_t NEW_ReduceAction157_parser___ReduceAction157___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction157();
-  parser___ReduceAction157___init(self, init_table);
-  CHECKNEW_ReduceAction157(self, "parser::ReduceAction157::init for ReduceAction157");
-  return self;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_ASuperclass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ASuperclass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ASuperclass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperclass____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction158[48] = {
-  {(bigint) 2919 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction158 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction158 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2919 /* 3: ReduceAction158 < ReduceAction158: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ASuperclass_parser_prod___ASuperclass___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 863;
+  fra.me.meth = LOCATE_NEW_ASuperclass_parser_prod___ASuperclass___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:863 */
+  fra.me.REG[0] = NEW_ASuperclass();
+  INIT_ATTRIBUTES__ASuperclass(fra.me.REG[0]);
+  parser_prod___ASuperclass___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASuperclass(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 865;
+  fra.me.meth = LOCATE_NEW_ASuperclass_parser_prod___ASuperclass___init_asuperclass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:865 */
+  fra.me.REG[3] = NEW_ASuperclass();
+  INIT_ATTRIBUTES__ASuperclass(fra.me.REG[3]);
+  parser_prod___ASuperclass___init_asuperclass(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_ASuperclass(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_ASuperclass_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ASuperclass_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ASuperclass();
+  INIT_ATTRIBUTES__ASuperclass(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASuperclass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_APropdef[74] = {
+  {(bigint) 2811 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: APropdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: APropdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: APropdef < Prod: superclass typecheck marker */},
+  {(bigint) 2811 /* 5: APropdef < APropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58801,14 +42636,9 @@ const classtable_elt_t VFT_ReduceAction158[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction158 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: APropdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58816,7 +42646,6 @@ const classtable_elt_t VFT_ReduceAction158[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58824,43 +42653,120 @@ const classtable_elt_t VFT_ReduceAction158[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction158 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction158___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction158 < ReduceAction158: superclass init_table position */},
-  {(bigint) parser___ReduceAction158___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction158(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: APropdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: APropdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___APropdef___process_and_check},
+  {(bigint) mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) mmbuilder___APropdef___inherit_signature},
+  {(bigint) mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) typing___APropdef___self_var},
+  {(bigint) 3 /* 72: APropdef < APropdef: superclass init_table position */},
+  {(bigint) parser_nodes___APropdef___n_doc},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute APropdef::_parent */
+/* 3: Attribute APropdef::_location */
+/* 4: Attribute APropdef::_first_location */
+/* 5: Attribute APropdef::_last_location */
+/* 6: Attribute APropdef::_n_doc */
+/* 7: Attribute APropdef::_self_var */
+void INIT_ATTRIBUTES__APropdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__APropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:409 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_APropdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction158;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction158(val_t self, char *from) {
-}
-val_t NEW_ReduceAction158_parser___ReduceAction158___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction158();
-  parser___ReduceAction158___init(self, init_table);
-  CHECKNEW_ReduceAction158(self, "parser::ReduceAction158::init for ReduceAction158");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction159[48] = {
-  {(bigint) 2915 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction159 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction159 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2915 /* 3: ReduceAction159 < ReduceAction159: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_APropdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_APropdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_APropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_APropdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_APropdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_APropdef();
+  INIT_ATTRIBUTES__APropdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APropdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAttrPropdef[94] = {
+  {(bigint) 3215 /* 0: Identity */},
+  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAttrPropdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAttrPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAttrPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 2811 /* 5: AAttrPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3215 /* 6: AAttrPropdef < AAttrPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58871,14 +42777,9 @@ const classtable_elt_t VFT_ReduceAction159[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction159 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAttrPropdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58886,7 +42787,6 @@ const classtable_elt_t VFT_ReduceAction159[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58894,43 +42794,238 @@ const classtable_elt_t VFT_ReduceAction159[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction159 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction159___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction159 < ReduceAction159: superclass init_table position */},
-  {(bigint) parser___ReduceAction159___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction159(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AAttrPropdef___accept_property_builder},
+  {(bigint) mmbuilder___AAttrPropdef___accept_property_verifier},
+  {(bigint) mmbuilder___AAttrPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AAttrPropdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AAttrPropdef___visit_all},
+  {(bigint) 1 /* 58: AAttrPropdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AAttrPropdef___accept_icode_generation},
+  {(bigint) typing___AAttrPropdef___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAttrPropdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___APropdef___process_and_check},
+  {(bigint) mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) mmbuilder___APropdef___inherit_signature},
+  {(bigint) mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) typing___APropdef___self_var},
+  {(bigint) 3 /* 72: AAttrPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser_nodes___APropdef___n_doc},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AAttrPropdef___prop},
+  {(bigint) mmbuilder___AAttrPropdef___readmethod},
+  {(bigint) mmbuilder___AAttrPropdef___writemethod},
+  {(bigint) parser_prod___AAttrPropdef___empty_init},
+  {(bigint) parser_prod___AAttrPropdef___init_aattrpropdef},
+  {(bigint) 4 /* 82: AAttrPropdef < AAttrPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AAttrPropdef___n_kwredef},
+  {(bigint) parser_nodes___AAttrPropdef___n_visibility},
+  {(bigint) parser_nodes___AAttrPropdef___n_kwvar},
+  {(bigint) parser_nodes___AAttrPropdef___n_id},
+  {(bigint) parser_nodes___AAttrPropdef___n_id2},
+  {(bigint) parser_nodes___AAttrPropdef___n_type},
+  {(bigint) parser_nodes___AAttrPropdef___n_readable},
+  {(bigint) parser_nodes___AAttrPropdef___n_writable},
+  {(bigint) parser_nodes___AAttrPropdef___n_expr},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AAttrPropdef::_parent */
+/* 3: Attribute AAttrPropdef::_location */
+/* 4: Attribute AAttrPropdef::_first_location */
+/* 5: Attribute AAttrPropdef::_last_location */
+/* 6: Attribute AAttrPropdef::_n_doc */
+/* 7: Attribute AAttrPropdef::_self_var */
+/* 8: Attribute AAttrPropdef::_readmethod */
+/* 9: Attribute AAttrPropdef::_writemethod */
+/* 10: Attribute AAttrPropdef::_prop */
+/* 11: Attribute AAttrPropdef::_n_kwredef */
+/* 12: Attribute AAttrPropdef::_n_visibility */
+/* 13: Attribute AAttrPropdef::_n_kwvar */
+/* 14: Attribute AAttrPropdef::_n_id */
+/* 15: Attribute AAttrPropdef::_n_id2 */
+/* 16: Attribute AAttrPropdef::_n_type */
+/* 17: Attribute AAttrPropdef::_n_readable */
+/* 18: Attribute AAttrPropdef::_n_writable */
+/* 19: Attribute AAttrPropdef::_n_expr */
+void INIT_ATTRIBUTES__AAttrPropdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAttrPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:409 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:419 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:420 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:413 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:418 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:421 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAttrPropdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction159;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction159(val_t self, char *from) {
-}
-val_t NEW_ReduceAction159_parser___ReduceAction159___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction159();
-  parser___ReduceAction159___init(self, init_table);
-  CHECKNEW_ReduceAction159(self, "parser::ReduceAction159::init for ReduceAction159");
-  return self;
+  obj = alloc(sizeof(val_t) * 20);
+  obj->vft = (classtable_elt_t*)VFT_AAttrPropdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAttrPropdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAttrPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction160[48] = {
-  {(bigint) 2907 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction160 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction160 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2907 /* 3: ReduceAction160 < ReduceAction160: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAttrPropdef_parser_prod___AAttrPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 930;
+  fra.me.meth = LOCATE_NEW_AAttrPropdef_parser_prod___AAttrPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:930 */
+  fra.me.REG[0] = NEW_AAttrPropdef();
+  INIT_ATTRIBUTES__AAttrPropdef(fra.me.REG[0]);
+  parser_prod___AAttrPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AAttrPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6, val_t p7, val_t p8, val_t p9){
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 932;
+  fra.me.meth = LOCATE_NEW_AAttrPropdef_parser_prod___AAttrPropdef___init_aattrpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 11;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  fra.me.REG[7] = p7;
+  fra.me.REG[8] = p8;
+  fra.me.REG[9] = p9;
+  /* ./parser//parser_prod.nit:932 */
+  fra.me.REG[10] = NEW_AAttrPropdef();
+  INIT_ATTRIBUTES__AAttrPropdef(fra.me.REG[10]);
+  parser_prod___AAttrPropdef___init_aattrpropdef(fra.me.REG[10], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7], fra.me.REG[8], fra.me.REG[9], init_table);
+  CHECKNEW_AAttrPropdef(fra.me.REG[10]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[10];
+}
+val_t NEW_AAttrPropdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAttrPropdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAttrPropdef();
+  INIT_ATTRIBUTES__AAttrPropdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAttrPropdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AMethPropdef[89] = {
+  {(bigint) 3107 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AMethPropdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AMethPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 2811 /* 5: AMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AMethPropdef < AMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58941,14 +43036,9 @@ const classtable_elt_t VFT_ReduceAction160[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction160 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AMethPropdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -58956,7 +43046,6 @@ const classtable_elt_t VFT_ReduceAction160[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -58964,44 +43053,196 @@ const classtable_elt_t VFT_ReduceAction160[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction160 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction160___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction160 < ReduceAction160: superclass init_table position */},
-  {(bigint) parser___ReduceAction160___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction160(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AMethPropdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AMethPropdef___visit_all},
+  {(bigint) 1 /* 58: AMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) typing___AMethPropdef___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AMethPropdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___APropdef___process_and_check},
+  {(bigint) mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) mmbuilder___APropdef___inherit_signature},
+  {(bigint) mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) typing___APropdef___self_var},
+  {(bigint) 3 /* 72: AMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser_nodes___APropdef___n_doc},
+  {(bigint) mmbuilder___AMethPropdef___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AMethPropdef___method},
+  {(bigint) parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 4 /* 81: AMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser_nodes___AMethPropdef___n_signature},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) icode_generation___AMethPropdef___fill_iroutine},
+  {(bigint) typing___ANode___accept_typing},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AMethPropdef::_parent */
+/* 3: Attribute AMethPropdef::_location */
+/* 4: Attribute AMethPropdef::_first_location */
+/* 5: Attribute AMethPropdef::_last_location */
+/* 6: Attribute AMethPropdef::_n_doc */
+/* 7: Attribute AMethPropdef::_self_var */
+/* 8: Attribute AMethPropdef::_name */
+/* 9: Attribute AMethPropdef::_method */
+/* 10: Attribute AMethPropdef::_n_kwredef */
+/* 11: Attribute AMethPropdef::_n_visibility */
+/* 12: Attribute AMethPropdef::_n_methid */
+/* 13: Attribute AMethPropdef::_n_signature */
+void INIT_ATTRIBUTES__AMethPropdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:409 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:425 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:427 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMethPropdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction160;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction160(val_t self, char *from) {
-}
-val_t NEW_ReduceAction160_parser___ReduceAction160___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction160();
-  parser___ReduceAction160___init(self, init_table);
-  CHECKNEW_ReduceAction160(self, "parser::ReduceAction160::init for ReduceAction160");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction161[48] = {
-  {(bigint) 2903 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction161 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction161 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2903 /* 3: ReduceAction161 < ReduceAction161: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_AMethPropdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AMethPropdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMethPropdef_parser_prod___AMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1119;
+  fra.me.meth = LOCATE_NEW_AMethPropdef_parser_prod___AMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1119 */
+  fra.me.REG[0] = NEW_AMethPropdef();
+  INIT_ATTRIBUTES__AMethPropdef(fra.me.REG[0]);
+  parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1121;
+  fra.me.meth = LOCATE_NEW_AMethPropdef_parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:1121 */
+  fra.me.REG[5] = NEW_AMethPropdef();
+  INIT_ATTRIBUTES__AMethPropdef(fra.me.REG[5]);
+  parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_AMethPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+val_t NEW_AMethPropdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AMethPropdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AMethPropdef();
+  INIT_ATTRIBUTES__AMethPropdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMethPropdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ADeferredMethPropdef[93] = {
+  {(bigint) 3399 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ADeferredMethPropdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ADeferredMethPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ADeferredMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 2811 /* 5: ADeferredMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: ADeferredMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3399 /* 7: ADeferredMethPropdef < ADeferredMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59011,14 +43252,9 @@ const classtable_elt_t VFT_ReduceAction161[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction161 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ADeferredMethPropdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59026,7 +43262,6 @@ const classtable_elt_t VFT_ReduceAction161[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59034,44 +43269,259 @@ const classtable_elt_t VFT_ReduceAction161[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction161 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction161___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction161 < ReduceAction161: superclass init_table position */},
-  {(bigint) parser___ReduceAction161___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ADeferredMethPropdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ADeferredMethPropdef___visit_all},
+  {(bigint) 1 /* 58: ADeferredMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) typing___AMethPropdef___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ADeferredMethPropdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___APropdef___process_and_check},
+  {(bigint) mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) mmbuilder___APropdef___inherit_signature},
+  {(bigint) mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) typing___APropdef___self_var},
+  {(bigint) 3 /* 72: ADeferredMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser_nodes___APropdef___n_doc},
+  {(bigint) mmbuilder___AMethPropdef___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AMethPropdef___method},
+  {(bigint) parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 4 /* 81: ADeferredMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser_nodes___AMethPropdef___n_signature},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) icode_generation___ADeferredMethPropdef___fill_iroutine},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) parser_prod___ADeferredMethPropdef___empty_init},
+  {(bigint) parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef},
+  {(bigint) 5 /* 91: ADeferredMethPropdef < ADeferredMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___ADeferredMethPropdef___n_kwmeth},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction161(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ADeferredMethPropdef::_parent */
+/* 3: Attribute ADeferredMethPropdef::_location */
+/* 4: Attribute ADeferredMethPropdef::_first_location */
+/* 5: Attribute ADeferredMethPropdef::_last_location */
+/* 6: Attribute ADeferredMethPropdef::_n_doc */
+/* 7: Attribute ADeferredMethPropdef::_self_var */
+/* 8: Attribute ADeferredMethPropdef::_name */
+/* 9: Attribute ADeferredMethPropdef::_method */
+/* 10: Attribute ADeferredMethPropdef::_n_kwredef */
+/* 11: Attribute ADeferredMethPropdef::_n_visibility */
+/* 12: Attribute ADeferredMethPropdef::_n_methid */
+/* 13: Attribute ADeferredMethPropdef::_n_signature */
+/* 14: Attribute ADeferredMethPropdef::_n_kwmeth */
+void INIT_ATTRIBUTES__ADeferredMethPropdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ADeferredMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:409 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:425 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:427 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ADeferredMethPropdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction161;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction161(val_t self, char *from) {
-}
-val_t NEW_ReduceAction161_parser___ReduceAction161___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction161();
-  parser___ReduceAction161___init(self, init_table);
-  CHECKNEW_ReduceAction161(self, "parser::ReduceAction161::init for ReduceAction161");
-  return self;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_ADeferredMethPropdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ADeferredMethPropdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ADeferredMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction162[48] = {
-  {(bigint) 2899 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction162 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction162 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2899 /* 3: ReduceAction162 < ReduceAction162: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1119;
+  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1119 */
+  fra.me.REG[0] = NEW_ADeferredMethPropdef();
+  INIT_ATTRIBUTES__ADeferredMethPropdef(fra.me.REG[0]);
+  parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ADeferredMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1214;
+  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1214 */
+  fra.me.REG[0] = NEW_ADeferredMethPropdef();
+  INIT_ATTRIBUTES__ADeferredMethPropdef(fra.me.REG[0]);
+  parser_prod___ADeferredMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ADeferredMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1216;
+  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:1216 */
+  fra.me.REG[6] = NEW_ADeferredMethPropdef();
+  INIT_ATTRIBUTES__ADeferredMethPropdef(fra.me.REG[6]);
+  parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
+  CHECKNEW_ADeferredMethPropdef(fra.me.REG[6]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[6];
+}
+val_t NEW_ADeferredMethPropdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ADeferredMethPropdef();
+  INIT_ATTRIBUTES__ADeferredMethPropdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ADeferredMethPropdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1121;
+  fra.me.meth = LOCATE_NEW_ADeferredMethPropdef_parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:1121 */
+  fra.me.REG[5] = NEW_ADeferredMethPropdef();
+  INIT_ATTRIBUTES__ADeferredMethPropdef(fra.me.REG[5]);
+  parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_ADeferredMethPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_AInternMethPropdef[93] = {
+  {(bigint) 3367 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AInternMethPropdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AInternMethPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AInternMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 2811 /* 5: AInternMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AInternMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3367 /* 7: AInternMethPropdef < AInternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59081,14 +43531,9 @@ const classtable_elt_t VFT_ReduceAction162[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction162 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AInternMethPropdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59096,7 +43541,6 @@ const classtable_elt_t VFT_ReduceAction162[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59104,44 +43548,259 @@ const classtable_elt_t VFT_ReduceAction162[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction162 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction162___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction162 < ReduceAction162: superclass init_table position */},
-  {(bigint) parser___ReduceAction162___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AInternMethPropdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AInternMethPropdef___visit_all},
+  {(bigint) 1 /* 58: AInternMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) typing___AMethPropdef___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AInternMethPropdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___APropdef___process_and_check},
+  {(bigint) mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) mmbuilder___APropdef___inherit_signature},
+  {(bigint) mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) typing___APropdef___self_var},
+  {(bigint) 3 /* 72: AInternMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser_nodes___APropdef___n_doc},
+  {(bigint) mmbuilder___AMethPropdef___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AMethPropdef___method},
+  {(bigint) parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 4 /* 81: AInternMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser_nodes___AMethPropdef___n_signature},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) icode_generation___AInternMethPropdef___fill_iroutine},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) parser_prod___AInternMethPropdef___empty_init},
+  {(bigint) parser_prod___AInternMethPropdef___init_ainternmethpropdef},
+  {(bigint) 5 /* 91: AInternMethPropdef < AInternMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AInternMethPropdef___n_kwmeth},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction162(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AInternMethPropdef::_parent */
+/* 3: Attribute AInternMethPropdef::_location */
+/* 4: Attribute AInternMethPropdef::_first_location */
+/* 5: Attribute AInternMethPropdef::_last_location */
+/* 6: Attribute AInternMethPropdef::_n_doc */
+/* 7: Attribute AInternMethPropdef::_self_var */
+/* 8: Attribute AInternMethPropdef::_name */
+/* 9: Attribute AInternMethPropdef::_method */
+/* 10: Attribute AInternMethPropdef::_n_kwredef */
+/* 11: Attribute AInternMethPropdef::_n_visibility */
+/* 12: Attribute AInternMethPropdef::_n_methid */
+/* 13: Attribute AInternMethPropdef::_n_signature */
+/* 14: Attribute AInternMethPropdef::_n_kwmeth */
+void INIT_ATTRIBUTES__AInternMethPropdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AInternMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:409 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:425 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:427 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AInternMethPropdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction162;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction162(val_t self, char *from) {
-}
-val_t NEW_ReduceAction162_parser___ReduceAction162___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction162();
-  parser___ReduceAction162___init(self, init_table);
-  CHECKNEW_ReduceAction162(self, "parser::ReduceAction162::init for ReduceAction162");
-  return self;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_AInternMethPropdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AInternMethPropdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AInternMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction163[48] = {
-  {(bigint) 2895 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction163 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction163 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2895 /* 3: ReduceAction163 < ReduceAction163: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AInternMethPropdef_parser_prod___AMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1119;
+  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser_prod___AMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1119 */
+  fra.me.REG[0] = NEW_AInternMethPropdef();
+  INIT_ATTRIBUTES__AInternMethPropdef(fra.me.REG[0]);
+  parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AInternMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1323;
+  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1323 */
+  fra.me.REG[0] = NEW_AInternMethPropdef();
+  INIT_ATTRIBUTES__AInternMethPropdef(fra.me.REG[0]);
+  parser_prod___AInternMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AInternMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1325;
+  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser_prod___AInternMethPropdef___init_ainternmethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:1325 */
+  fra.me.REG[6] = NEW_AInternMethPropdef();
+  INIT_ATTRIBUTES__AInternMethPropdef(fra.me.REG[6]);
+  parser_prod___AInternMethPropdef___init_ainternmethpropdef(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
+  CHECKNEW_AInternMethPropdef(fra.me.REG[6]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[6];
+}
+val_t NEW_AInternMethPropdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AInternMethPropdef();
+  INIT_ATTRIBUTES__AInternMethPropdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AInternMethPropdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AInternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1121;
+  fra.me.meth = LOCATE_NEW_AInternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:1121 */
+  fra.me.REG[5] = NEW_AInternMethPropdef();
+  INIT_ATTRIBUTES__AInternMethPropdef(fra.me.REG[5]);
+  parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_AInternMethPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_AExternMethPropdef[95] = {
+  {(bigint) 3383 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AExternMethPropdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AExternMethPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AExternMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 2811 /* 5: AExternMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AExternMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3383 /* 7: AExternMethPropdef < AExternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59151,14 +43810,9 @@ const classtable_elt_t VFT_ReduceAction163[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction163 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AExternMethPropdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59166,7 +43820,6 @@ const classtable_elt_t VFT_ReduceAction163[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59174,44 +43827,267 @@ const classtable_elt_t VFT_ReduceAction163[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction163 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction163___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction163 < ReduceAction163: superclass init_table position */},
-  {(bigint) parser___ReduceAction163___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) mmbuilder___AExternMethPropdef___accept_property_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AExternMethPropdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AExternMethPropdef___visit_all},
+  {(bigint) 1 /* 58: AExternMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) typing___AMethPropdef___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AExternMethPropdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___APropdef___process_and_check},
+  {(bigint) mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) mmbuilder___APropdef___inherit_signature},
+  {(bigint) mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) typing___APropdef___self_var},
+  {(bigint) 3 /* 72: AExternMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser_nodes___APropdef___n_doc},
+  {(bigint) mmbuilder___AMethPropdef___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AMethPropdef___method},
+  {(bigint) parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 4 /* 81: AExternMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser_nodes___AMethPropdef___n_signature},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) icode_generation___AExternMethPropdef___fill_iroutine},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) parser_prod___AExternMethPropdef___empty_init},
+  {(bigint) parser_prod___AExternMethPropdef___init_aexternmethpropdef},
+  {(bigint) 5 /* 92: AExternMethPropdef < AExternMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AExternMethPropdef___n_kwmeth},
+  {(bigint) parser_nodes___AExternMethPropdef___n_extern},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction163(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AExternMethPropdef::_parent */
+/* 3: Attribute AExternMethPropdef::_location */
+/* 4: Attribute AExternMethPropdef::_first_location */
+/* 5: Attribute AExternMethPropdef::_last_location */
+/* 6: Attribute AExternMethPropdef::_n_doc */
+/* 7: Attribute AExternMethPropdef::_self_var */
+/* 8: Attribute AExternMethPropdef::_name */
+/* 9: Attribute AExternMethPropdef::_method */
+/* 10: Attribute AExternMethPropdef::_n_kwredef */
+/* 11: Attribute AExternMethPropdef::_n_visibility */
+/* 12: Attribute AExternMethPropdef::_n_methid */
+/* 13: Attribute AExternMethPropdef::_n_signature */
+/* 14: Attribute AExternMethPropdef::_n_kwmeth */
+/* 15: Attribute AExternMethPropdef::_n_extern */
+void INIT_ATTRIBUTES__AExternMethPropdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AExternMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:409 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:425 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:427 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:441 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AExternMethPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AExternMethPropdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction163;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction163(val_t self, char *from) {
-}
-val_t NEW_ReduceAction163_parser___ReduceAction163___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction163();
-  parser___ReduceAction163___init(self, init_table);
-  CHECKNEW_ReduceAction163(self, "parser::ReduceAction163::init for ReduceAction163");
-  return self;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_AExternMethPropdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AExternMethPropdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AExternMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwmeth", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction164[48] = {
-  {(bigint) 2891 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction164 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction164 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2891 /* 3: ReduceAction164 < ReduceAction164: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AExternMethPropdef_parser_prod___AMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1119;
+  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser_prod___AMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1119 */
+  fra.me.REG[0] = NEW_AExternMethPropdef();
+  INIT_ATTRIBUTES__AExternMethPropdef(fra.me.REG[0]);
+  parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AExternMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1432;
+  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1432 */
+  fra.me.REG[0] = NEW_AExternMethPropdef();
+  INIT_ATTRIBUTES__AExternMethPropdef(fra.me.REG[0]);
+  parser_prod___AExternMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AExternMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1434;
+  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser_prod___AExternMethPropdef___init_aexternmethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:1434 */
+  fra.me.REG[7] = NEW_AExternMethPropdef();
+  INIT_ATTRIBUTES__AExternMethPropdef(fra.me.REG[7]);
+  parser_prod___AExternMethPropdef___init_aexternmethpropdef(fra.me.REG[7], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], init_table);
+  CHECKNEW_AExternMethPropdef(fra.me.REG[7]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[7];
+}
+val_t NEW_AExternMethPropdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AExternMethPropdef();
+  INIT_ATTRIBUTES__AExternMethPropdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AExternMethPropdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AExternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1121;
+  fra.me.meth = LOCATE_NEW_AExternMethPropdef_parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:1121 */
+  fra.me.REG[5] = NEW_AExternMethPropdef();
+  INIT_ATTRIBUTES__AExternMethPropdef(fra.me.REG[5]);
+  parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_AExternMethPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_AConcreteMethPropdef[95] = {
+  {(bigint) 3411 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AConcreteMethPropdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AConcreteMethPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AConcreteMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 2811 /* 5: AConcreteMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AConcreteMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3411 /* 7: AConcreteMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59221,14 +44097,9 @@ const classtable_elt_t VFT_ReduceAction164[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction164 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AConcreteMethPropdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59236,7 +44107,6 @@ const classtable_elt_t VFT_ReduceAction164[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59244,45 +44114,260 @@ const classtable_elt_t VFT_ReduceAction164[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction164 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction164___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction164 < ReduceAction164: superclass init_table position */},
-  {(bigint) parser___ReduceAction164___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AConcreteMethPropdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AConcreteMethPropdef___visit_all},
+  {(bigint) 1 /* 58: AConcreteMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) typing___AMethPropdef___accept_typing},
+  {(bigint) typing___AConcreteMethPropdef___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AConcreteMethPropdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___APropdef___process_and_check},
+  {(bigint) mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) mmbuilder___APropdef___inherit_signature},
+  {(bigint) mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) typing___APropdef___self_var},
+  {(bigint) 3 /* 72: AConcreteMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser_nodes___APropdef___n_doc},
+  {(bigint) mmbuilder___AMethPropdef___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AMethPropdef___method},
+  {(bigint) parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 4 /* 81: AConcreteMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser_nodes___AMethPropdef___n_signature},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) icode_generation___AConcreteMethPropdef___fill_iroutine},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___AConcreteMethPropdef___empty_init},
+  {(bigint) parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
+  {(bigint) 5 /* 92: AConcreteMethPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AConcreteMethPropdef___n_kwmeth},
+  {(bigint) parser_nodes___AConcreteMethPropdef___n_block},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction164(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AConcreteMethPropdef::_parent */
+/* 3: Attribute AConcreteMethPropdef::_location */
+/* 4: Attribute AConcreteMethPropdef::_first_location */
+/* 5: Attribute AConcreteMethPropdef::_last_location */
+/* 6: Attribute AConcreteMethPropdef::_n_doc */
+/* 7: Attribute AConcreteMethPropdef::_self_var */
+/* 8: Attribute AConcreteMethPropdef::_name */
+/* 9: Attribute AConcreteMethPropdef::_method */
+/* 10: Attribute AConcreteMethPropdef::_n_kwredef */
+/* 11: Attribute AConcreteMethPropdef::_n_visibility */
+/* 12: Attribute AConcreteMethPropdef::_n_methid */
+/* 13: Attribute AConcreteMethPropdef::_n_signature */
+/* 14: Attribute AConcreteMethPropdef::_n_kwmeth */
+/* 15: Attribute AConcreteMethPropdef::_n_block */
+void INIT_ATTRIBUTES__AConcreteMethPropdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AConcreteMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:409 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:425 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:427 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:446 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AConcreteMethPropdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction164;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction164(val_t self, char *from) {
-}
-val_t NEW_ReduceAction164_parser___ReduceAction164___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction164();
-  parser___ReduceAction164___init(self, init_table);
-  CHECKNEW_ReduceAction164(self, "parser::ReduceAction164::init for ReduceAction164");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction165[48] = {
-  {(bigint) 2887 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction165 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction165 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2887 /* 3: ReduceAction165 < ReduceAction165: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_AConcreteMethPropdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AConcreteMethPropdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AConcreteMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1119;
+  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1119 */
+  fra.me.REG[0] = NEW_AConcreteMethPropdef();
+  INIT_ATTRIBUTES__AConcreteMethPropdef(fra.me.REG[0]);
+  parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AConcreteMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1559;
+  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1559 */
+  fra.me.REG[0] = NEW_AConcreteMethPropdef();
+  INIT_ATTRIBUTES__AConcreteMethPropdef(fra.me.REG[0]);
+  parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AConcreteMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1561;
+  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:1561 */
+  fra.me.REG[7] = NEW_AConcreteMethPropdef();
+  INIT_ATTRIBUTES__AConcreteMethPropdef(fra.me.REG[7]);
+  parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[7], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], init_table);
+  CHECKNEW_AConcreteMethPropdef(fra.me.REG[7]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[7];
+}
+val_t NEW_AConcreteMethPropdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AConcreteMethPropdef();
+  INIT_ATTRIBUTES__AConcreteMethPropdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AConcreteMethPropdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1121;
+  fra.me.meth = LOCATE_NEW_AConcreteMethPropdef_parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:1121 */
+  fra.me.REG[5] = NEW_AConcreteMethPropdef();
+  INIT_ATTRIBUTES__AConcreteMethPropdef(fra.me.REG[5]);
+  parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_AConcreteMethPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_AConcreteInitPropdef[103] = {
+  {(bigint) 3471 /* 0: Identity */},
+  {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AConcreteInitPropdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AConcreteInitPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AConcreteInitPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 2811 /* 5: AConcreteInitPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AConcreteInitPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3411 /* 7: AConcreteInitPropdef < AConcreteMethPropdef: superclass typecheck marker */},
+  {(bigint) 3471 /* 8: AConcreteInitPropdef < AConcreteInitPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59291,14 +44376,9 @@ const classtable_elt_t VFT_ReduceAction165[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction165 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AConcreteInitPropdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59306,7 +44386,6 @@ const classtable_elt_t VFT_ReduceAction165[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59314,45 +44393,347 @@ const classtable_elt_t VFT_ReduceAction165[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction165 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction165___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction165 < ReduceAction165: superclass init_table position */},
-  {(bigint) parser___ReduceAction165___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AConcreteInitPropdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AConcreteInitPropdef___visit_all},
+  {(bigint) 1 /* 58: AConcreteInitPropdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) typing___AConcreteInitPropdef___accept_typing},
+  {(bigint) typing___AConcreteInitPropdef___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AConcreteInitPropdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___APropdef___process_and_check},
+  {(bigint) mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) mmbuilder___APropdef___inherit_signature},
+  {(bigint) mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) typing___APropdef___self_var},
+  {(bigint) 3 /* 72: AConcreteInitPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser_nodes___APropdef___n_doc},
+  {(bigint) mmbuilder___AMethPropdef___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AMethPropdef___method},
+  {(bigint) parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 4 /* 81: AConcreteInitPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser_nodes___AMethPropdef___n_signature},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) icode_generation___AConcreteMethPropdef___fill_iroutine},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___AConcreteMethPropdef___empty_init},
+  {(bigint) parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
+  {(bigint) 5 /* 92: AConcreteInitPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AConcreteMethPropdef___n_kwmeth},
+  {(bigint) parser_nodes___AConcreteMethPropdef___n_block},
+  {(bigint) typing___AMethPropdef___accept_typing},
+  {(bigint) typing___AConcreteMethPropdef___after_typing},
+  {(bigint) syntax_base___AConcreteInitPropdef___super_init_calls},
+  {(bigint) syntax_base___AConcreteInitPropdef___explicit_super_init_calls},
+  {(bigint) parser_prod___AConcreteInitPropdef___empty_init},
+  {(bigint) parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef},
+  {(bigint) 6 /* 101: AConcreteInitPropdef < AConcreteInitPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AConcreteInitPropdef___n_kwinit},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction165(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AConcreteInitPropdef::_parent */
+/* 3: Attribute AConcreteInitPropdef::_location */
+/* 4: Attribute AConcreteInitPropdef::_first_location */
+/* 5: Attribute AConcreteInitPropdef::_last_location */
+/* 6: Attribute AConcreteInitPropdef::_n_doc */
+/* 7: Attribute AConcreteInitPropdef::_self_var */
+/* 8: Attribute AConcreteInitPropdef::_name */
+/* 9: Attribute AConcreteInitPropdef::_method */
+/* 10: Attribute AConcreteInitPropdef::_n_kwredef */
+/* 11: Attribute AConcreteInitPropdef::_n_visibility */
+/* 12: Attribute AConcreteInitPropdef::_n_methid */
+/* 13: Attribute AConcreteInitPropdef::_n_signature */
+/* 14: Attribute AConcreteInitPropdef::_n_kwmeth */
+/* 15: Attribute AConcreteInitPropdef::_n_block */
+/* 16: Attribute AConcreteInitPropdef::_super_init_calls */
+/* 17: Attribute AConcreteInitPropdef::_explicit_super_init_calls */
+/* 18: Attribute AConcreteInitPropdef::_n_kwinit */
+void INIT_ATTRIBUTES__AConcreteInitPropdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AConcreteInitPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:551 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_syntax_base___AConcreteInitPropdef____super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//syntax_base.nit:552 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_syntax_base___AConcreteInitPropdef____explicit_super_init_calls(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:409 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:425 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:427 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:446 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AConcreteInitPropdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction165;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction165(val_t self, char *from) {
-}
-val_t NEW_ReduceAction165_parser___ReduceAction165___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction165();
-  parser___ReduceAction165___init(self, init_table);
-  CHECKNEW_ReduceAction165(self, "parser::ReduceAction165::init for ReduceAction165");
-  return self;
+  obj = alloc(sizeof(val_t) * 19);
+  obj->vft = (classtable_elt_t*)VFT_AConcreteInitPropdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AConcreteInitPropdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AConcreteInitPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___AConcreteInitPropdef____super_init_calls(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_super_init_calls", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AConcreteInitPropdef____explicit_super_init_calls(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_explicit_super_init_calls", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction166[48] = {
-  {(bigint) 2883 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction166 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction166 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2883 /* 3: ReduceAction166 < ReduceAction166: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1559;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1559 */
+  fra.me.REG[0] = NEW_AConcreteInitPropdef();
+  INIT_ATTRIBUTES__AConcreteInitPropdef(fra.me.REG[0]);
+  parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AConcreteInitPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1686;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1686 */
+  fra.me.REG[0] = NEW_AConcreteInitPropdef();
+  INIT_ATTRIBUTES__AConcreteInitPropdef(fra.me.REG[0]);
+  parser_prod___AConcreteInitPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AConcreteInitPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1688;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:1688 */
+  fra.me.REG[7] = NEW_AConcreteInitPropdef();
+  INIT_ATTRIBUTES__AConcreteInitPropdef(fra.me.REG[7]);
+  parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(fra.me.REG[7], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], init_table);
+  CHECKNEW_AConcreteInitPropdef(fra.me.REG[7]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[7];
+}
+val_t NEW_AConcreteInitPropdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AConcreteInitPropdef();
+  INIT_ATTRIBUTES__AConcreteInitPropdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AConcreteInitPropdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1119;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1119 */
+  fra.me.REG[0] = NEW_AConcreteInitPropdef();
+  INIT_ATTRIBUTES__AConcreteInitPropdef(fra.me.REG[0]);
+  parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AConcreteInitPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1561;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:1561 */
+  fra.me.REG[7] = NEW_AConcreteInitPropdef();
+  INIT_ATTRIBUTES__AConcreteInitPropdef(fra.me.REG[7]);
+  parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[7], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], init_table);
+  CHECKNEW_AConcreteInitPropdef(fra.me.REG[7]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[7];
+}
+val_t NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1121;
+  fra.me.meth = LOCATE_NEW_AConcreteInitPropdef_parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:1121 */
+  fra.me.REG[5] = NEW_AConcreteInitPropdef();
+  INIT_ATTRIBUTES__AConcreteInitPropdef(fra.me.REG[5]);
+  parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_AConcreteInitPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_AMainMethPropdef[98] = {
+  {(bigint) 3467 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AMainMethPropdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AMainMethPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AMainMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 2811 /* 5: AMainMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3107 /* 6: AMainMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3411 /* 7: AMainMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
+  {(bigint) 3467 /* 8: AMainMethPropdef < AMainMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59361,14 +44742,9 @@ const classtable_elt_t VFT_ReduceAction166[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction166 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AMainMethPropdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59376,7 +44752,6 @@ const classtable_elt_t VFT_ReduceAction166[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59384,43 +44759,303 @@ const classtable_elt_t VFT_ReduceAction166[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction166 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction166___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction166 < ReduceAction166: superclass init_table position */},
-  {(bigint) parser___ReduceAction166___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction166(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_builder},
+  {(bigint) mmbuilder___AMethPropdef___accept_property_verifier},
+  {(bigint) mmbuilder___AMethPropdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AMainMethPropdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AMainMethPropdef___visit_all},
+  {(bigint) 1 /* 58: AMainMethPropdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AMethPropdef___accept_icode_generation},
+  {(bigint) typing___AMethPropdef___accept_typing},
+  {(bigint) typing___AConcreteMethPropdef___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AMainMethPropdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMainMethPropdef___process_and_check},
+  {(bigint) mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) mmbuilder___APropdef___inherit_signature},
+  {(bigint) mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) typing___APropdef___self_var},
+  {(bigint) 3 /* 72: AMainMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) parser_nodes___APropdef___n_doc},
+  {(bigint) mmbuilder___AMethPropdef___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___AMethPropdef___method},
+  {(bigint) parser_prod___AMethPropdef___empty_init},
+  {(bigint) parser_prod___AMethPropdef___init_amethpropdef},
+  {(bigint) 4 /* 81: AMainMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AMethPropdef___n_kwredef},
+  {(bigint) parser_nodes___AMethPropdef___n_visibility},
+  {(bigint) parser_nodes___AMethPropdef___n_methid},
+  {(bigint) parser_nodes___AMethPropdef___n_signature},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) icode_generation___AConcreteMethPropdef___fill_iroutine},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___AConcreteMethPropdef___empty_init},
+  {(bigint) parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
+  {(bigint) 5 /* 92: AMainMethPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) parser_nodes___AConcreteMethPropdef___n_kwmeth},
+  {(bigint) parser_nodes___AConcreteMethPropdef___n_block},
+  {(bigint) parser_prod___AMainMethPropdef___empty_init},
+  {(bigint) parser_prod___AMainMethPropdef___init_amainmethpropdef},
+  {(bigint) 6 /* 97: AMainMethPropdef < AMainMethPropdef: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AMainMethPropdef::_parent */
+/* 3: Attribute AMainMethPropdef::_location */
+/* 4: Attribute AMainMethPropdef::_first_location */
+/* 5: Attribute AMainMethPropdef::_last_location */
+/* 6: Attribute AMainMethPropdef::_n_doc */
+/* 7: Attribute AMainMethPropdef::_self_var */
+/* 8: Attribute AMainMethPropdef::_name */
+/* 9: Attribute AMainMethPropdef::_method */
+/* 10: Attribute AMainMethPropdef::_n_kwredef */
+/* 11: Attribute AMainMethPropdef::_n_visibility */
+/* 12: Attribute AMainMethPropdef::_n_methid */
+/* 13: Attribute AMainMethPropdef::_n_signature */
+/* 14: Attribute AMainMethPropdef::_n_kwmeth */
+/* 15: Attribute AMainMethPropdef::_n_block */
+void INIT_ATTRIBUTES__AMainMethPropdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AMainMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:425 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:446 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:427 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:409 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMainMethPropdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction166;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction166(val_t self, char *from) {
-}
-val_t NEW_ReduceAction166_parser___ReduceAction166___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction166();
-  parser___ReduceAction166___init(self, init_table);
-  CHECKNEW_ReduceAction166(self, "parser::ReduceAction166::init for ReduceAction166");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction167[48] = {
-  {(bigint) 2879 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction167 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction167 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2879 /* 3: ReduceAction167 < ReduceAction167: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_AMainMethPropdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AMainMethPropdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AMainMethPropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1559;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1559 */
+  fra.me.REG[0] = NEW_AMainMethPropdef();
+  INIT_ATTRIBUTES__AMainMethPropdef(fra.me.REG[0]);
+  parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AMainMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1817;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1817 */
+  fra.me.REG[0] = NEW_AMainMethPropdef();
+  INIT_ATTRIBUTES__AMainMethPropdef(fra.me.REG[0]);
+  parser_prod___AMainMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AMainMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1819;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser_prod___AMainMethPropdef___init_amainmethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1819 */
+  fra.me.REG[2] = NEW_AMainMethPropdef();
+  INIT_ATTRIBUTES__AMainMethPropdef(fra.me.REG[2]);
+  parser_prod___AMainMethPropdef___init_amainmethpropdef(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AMainMethPropdef(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AMainMethPropdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AMainMethPropdef();
+  INIT_ATTRIBUTES__AMainMethPropdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMainMethPropdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AMainMethPropdef_parser_prod___AMethPropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1119;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser_prod___AMethPropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1119 */
+  fra.me.REG[0] = NEW_AMainMethPropdef();
+  INIT_ATTRIBUTES__AMainMethPropdef(fra.me.REG[0]);
+  parser_prod___AMethPropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AMainMethPropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5, val_t p6){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1561;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:1561 */
+  fra.me.REG[7] = NEW_AMainMethPropdef();
+  INIT_ATTRIBUTES__AMainMethPropdef(fra.me.REG[7]);
+  parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(fra.me.REG[7], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6], init_table);
+  CHECKNEW_AMainMethPropdef(fra.me.REG[7]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[7];
+}
+val_t NEW_AMainMethPropdef_parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1121;
+  fra.me.meth = LOCATE_NEW_AMainMethPropdef_parser_prod___AMethPropdef___init_amethpropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:1121 */
+  fra.me.REG[5] = NEW_AMainMethPropdef();
+  INIT_ATTRIBUTES__AMainMethPropdef(fra.me.REG[5]);
+  parser_prod___AMethPropdef___init_amethpropdef(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_AMainMethPropdef(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_ATypePropdef[86] = {
+  {(bigint) 2995 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ATypePropdef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ATypePropdef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ATypePropdef < Prod: superclass typecheck marker */},
+  {(bigint) 2811 /* 5: ATypePropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 2995 /* 6: ATypePropdef < ATypePropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59431,14 +45066,9 @@ const classtable_elt_t VFT_ReduceAction167[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction167 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ATypePropdef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59446,7 +45076,6 @@ const classtable_elt_t VFT_ReduceAction167[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59454,41 +45083,213 @@ const classtable_elt_t VFT_ReduceAction167[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction167 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction167___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction167 < ReduceAction167: superclass init_table position */},
-  {(bigint) parser___ReduceAction167___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ATypePropdef___accept_property_builder},
+  {(bigint) mmbuilder___ATypePropdef___accept_property_verifier},
+  {(bigint) mmbuilder___ATypePropdef___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ATypePropdef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ATypePropdef___visit_all},
+  {(bigint) 1 /* 58: ATypePropdef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ATypePropdef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___APropdef___process_and_check},
+  {(bigint) mmbuilder___APropdef___do_and_check_intro},
+  {(bigint) mmbuilder___APropdef___inherit_signature},
+  {(bigint) mmbuilder___APropdef___do_and_check_redef},
+  {(bigint) typing___APropdef___self_var},
+  {(bigint) 3 /* 72: ATypePropdef < APropdef: superclass init_table position */},
+  {(bigint) parser_nodes___APropdef___n_doc},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) mmbuilder___ATypePropdef___prop},
+  {(bigint) parser_prod___ATypePropdef___empty_init},
+  {(bigint) parser_prod___ATypePropdef___init_atypepropdef},
+  {(bigint) 4 /* 80: ATypePropdef < ATypePropdef: superclass init_table position */},
+  {(bigint) parser_nodes___ATypePropdef___n_kwredef},
+  {(bigint) parser_nodes___ATypePropdef___n_visibility},
+  {(bigint) parser_nodes___ATypePropdef___n_kwtype},
+  {(bigint) parser_nodes___ATypePropdef___n_id},
+  {(bigint) parser_nodes___ATypePropdef___n_type},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction167(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ATypePropdef::_parent */
+/* 3: Attribute ATypePropdef::_location */
+/* 4: Attribute ATypePropdef::_first_location */
+/* 5: Attribute ATypePropdef::_last_location */
+/* 6: Attribute ATypePropdef::_n_doc */
+/* 7: Attribute ATypePropdef::_self_var */
+/* 8: Attribute ATypePropdef::_prop */
+/* 9: Attribute ATypePropdef::_n_kwredef */
+/* 10: Attribute ATypePropdef::_n_visibility */
+/* 11: Attribute ATypePropdef::_n_kwtype */
+/* 12: Attribute ATypePropdef::_n_id */
+/* 13: Attribute ATypePropdef::_n_type */
+void INIT_ATTRIBUTES__ATypePropdef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ATypePropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:409 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:457 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ATypePropdef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction167;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction167(val_t self, char *from) {
-}
-val_t NEW_ReduceAction167_parser___ReduceAction167___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction167();
-  parser___ReduceAction167___init(self, init_table);
-  CHECKNEW_ReduceAction167(self, "parser::ReduceAction167::init for ReduceAction167");
-  return self;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_ATypePropdef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ATypePropdef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ATypePropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_visibility", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwtype", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATypePropdef____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction168[48] = {
+val_t NEW_ATypePropdef_parser_prod___ATypePropdef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1870;
+  fra.me.meth = LOCATE_NEW_ATypePropdef_parser_prod___ATypePropdef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1870 */
+  fra.me.REG[0] = NEW_ATypePropdef();
+  INIT_ATTRIBUTES__ATypePropdef(fra.me.REG[0]);
+  parser_prod___ATypePropdef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ATypePropdef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1872;
+  fra.me.meth = LOCATE_NEW_ATypePropdef_parser_prod___ATypePropdef___init_atypepropdef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:1872 */
+  fra.me.REG[6] = NEW_ATypePropdef();
+  INIT_ATTRIBUTES__ATypePropdef(fra.me.REG[6]);
+  parser_prod___ATypePropdef___init_atypepropdef(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
+  CHECKNEW_ATypePropdef(fra.me.REG[6]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[6];
+}
+val_t NEW_ATypePropdef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ATypePropdef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ATypePropdef();
+  INIT_ATTRIBUTES__ATypePropdef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ATypePropdef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAble[70] = {
   {(bigint) 2875 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction168 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction168 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2875 /* 3: ReduceAction168 < ReduceAction168: superclass typecheck marker */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAble < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAble < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAble < Prod: superclass typecheck marker */},
+  {(bigint) 2875 /* 5: AAble < AAble: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59500,15 +45301,9 @@ const classtable_elt_t VFT_ReduceAction168[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction168 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAble < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59516,7 +45311,6 @@ const classtable_elt_t VFT_ReduceAction168[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59524,43 +45318,119 @@ const classtable_elt_t VFT_ReduceAction168[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction168 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction168___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction168 < ReduceAction168: superclass init_table position */},
-  {(bigint) parser___ReduceAction168___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction168(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AAble < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAble < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 3 /* 67: AAble < AAble: superclass init_table position */},
+  {(bigint) parser_nodes___AAble___n_visibility},
+  {(bigint) parser_nodes___AAble___n_kwredef},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AAble::_parent */
+/* 3: Attribute AAble::_location */
+/* 4: Attribute AAble::_first_location */
+/* 5: Attribute AAble::_last_location */
+/* 6: Attribute AAble::_n_visibility */
+/* 7: Attribute AAble::_n_kwredef */
+void INIT_ATTRIBUTES__AAble(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAble;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:464 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:465 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAble(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction168;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction168(val_t self, char *from) {
-}
-val_t NEW_ReduceAction168_parser___ReduceAction168___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction168();
-  parser___ReduceAction168___init(self, init_table);
-  CHECKNEW_ReduceAction168(self, "parser::ReduceAction168::init for ReduceAction168");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction169[48] = {
-  {(bigint) 2871 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction169 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction169 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2871 /* 3: ReduceAction169 < ReduceAction169: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AAble;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAble(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAble;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAble_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAble_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAble();
+  INIT_ATTRIBUTES__AAble(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAble(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AReadAble[74] = {
+  {(bigint) 3051 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AReadAble < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AReadAble < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AReadAble < Prod: superclass typecheck marker */},
+  {(bigint) 2875 /* 5: AReadAble < AAble: superclass typecheck marker */},
+  {(bigint) 3051 /* 6: AReadAble < AReadAble: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59571,14 +45441,9 @@ const classtable_elt_t VFT_ReduceAction169[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction169 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AReadAble < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59586,7 +45451,6 @@ const classtable_elt_t VFT_ReduceAction169[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59594,43 +45458,174 @@ const classtable_elt_t VFT_ReduceAction169[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction169 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction169___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction169 < ReduceAction169: superclass init_table position */},
-  {(bigint) parser___ReduceAction169___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AReadAble___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AReadAble___visit_all},
+  {(bigint) 1 /* 58: AReadAble < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AReadAble < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 3 /* 67: AReadAble < AAble: superclass init_table position */},
+  {(bigint) parser_nodes___AAble___n_visibility},
+  {(bigint) parser_nodes___AAble___n_kwredef},
+  {(bigint) parser_prod___AReadAble___empty_init},
+  {(bigint) parser_prod___AReadAble___init_areadable},
+  {(bigint) 4 /* 72: AReadAble < AReadAble: superclass init_table position */},
+  {(bigint) parser_nodes___AReadAble___n_kwreadable},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction169(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AReadAble::_parent */
+/* 3: Attribute AReadAble::_location */
+/* 4: Attribute AReadAble::_first_location */
+/* 5: Attribute AReadAble::_last_location */
+/* 6: Attribute AReadAble::_n_visibility */
+/* 7: Attribute AReadAble::_n_kwredef */
+/* 8: Attribute AReadAble::_n_kwreadable */
+void INIT_ATTRIBUTES__AReadAble(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AReadAble;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:465 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:464 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AReadAble(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction169;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction169(val_t self, char *from) {
-}
-val_t NEW_ReduceAction169_parser___ReduceAction169___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction169();
-  parser___ReduceAction169___init(self, init_table);
-  CHECKNEW_ReduceAction169(self, "parser::ReduceAction169::init for ReduceAction169");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_AReadAble;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AReadAble(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AReadAble;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwreadable", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction170[48] = {
-  {(bigint) 2863 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction170 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction170 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2863 /* 3: ReduceAction170 < ReduceAction170: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AReadAble_parser_prod___AReadAble___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1979;
+  fra.me.meth = LOCATE_NEW_AReadAble_parser_prod___AReadAble___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:1979 */
+  fra.me.REG[0] = NEW_AReadAble();
+  INIT_ATTRIBUTES__AReadAble(fra.me.REG[0]);
+  parser_prod___AReadAble___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AReadAble(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AReadAble_parser_prod___AReadAble___init_areadable(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1981;
+  fra.me.meth = LOCATE_NEW_AReadAble_parser_prod___AReadAble___init_areadable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1981 */
+  fra.me.REG[2] = NEW_AReadAble();
+  INIT_ATTRIBUTES__AReadAble(fra.me.REG[2]);
+  parser_prod___AReadAble___init_areadable(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AReadAble(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AReadAble_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AReadAble_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AReadAble();
+  INIT_ATTRIBUTES__AReadAble(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AReadAble(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AWriteAble[74] = {
+  {(bigint) 2983 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AWriteAble < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AWriteAble < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AWriteAble < Prod: superclass typecheck marker */},
+  {(bigint) 2875 /* 5: AWriteAble < AAble: superclass typecheck marker */},
+  {(bigint) 2983 /* 6: AWriteAble < AWriteAble: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59641,14 +45636,9 @@ const classtable_elt_t VFT_ReduceAction170[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction170 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AWriteAble < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59656,7 +45646,6 @@ const classtable_elt_t VFT_ReduceAction170[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59664,42 +45653,175 @@ const classtable_elt_t VFT_ReduceAction170[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction170 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction170___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction170 < ReduceAction170: superclass init_table position */},
-  {(bigint) parser___ReduceAction170___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AWriteAble___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AWriteAble___visit_all},
+  {(bigint) 1 /* 58: AWriteAble < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AWriteAble < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 3 /* 67: AWriteAble < AAble: superclass init_table position */},
+  {(bigint) parser_nodes___AAble___n_visibility},
+  {(bigint) parser_nodes___AAble___n_kwredef},
+  {(bigint) parser_prod___AWriteAble___empty_init},
+  {(bigint) parser_prod___AWriteAble___init_awriteable},
+  {(bigint) 4 /* 72: AWriteAble < AWriteAble: superclass init_table position */},
+  {(bigint) parser_nodes___AWriteAble___n_kwwritable},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction170(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AWriteAble::_parent */
+/* 3: Attribute AWriteAble::_location */
+/* 4: Attribute AWriteAble::_first_location */
+/* 5: Attribute AWriteAble::_last_location */
+/* 6: Attribute AWriteAble::_n_visibility */
+/* 7: Attribute AWriteAble::_n_kwredef */
+/* 8: Attribute AWriteAble::_n_kwwritable */
+void INIT_ATTRIBUTES__AWriteAble(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AWriteAble;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:465 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:464 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AWriteAble(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction170;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction170(val_t self, char *from) {
-}
-val_t NEW_ReduceAction170_parser___ReduceAction170___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction170();
-  parser___ReduceAction170___init(self, init_table);
-  CHECKNEW_ReduceAction170(self, "parser::ReduceAction170::init for ReduceAction170");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_AWriteAble;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AWriteAble(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AWriteAble;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwwritable", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction171[48] = {
-  {(bigint) 2859 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction171 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction171 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2859 /* 3: ReduceAction171 < ReduceAction171: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AWriteAble_parser_prod___AWriteAble___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2028;
+  fra.me.meth = LOCATE_NEW_AWriteAble_parser_prod___AWriteAble___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2028 */
+  fra.me.REG[0] = NEW_AWriteAble();
+  INIT_ATTRIBUTES__AWriteAble(fra.me.REG[0]);
+  parser_prod___AWriteAble___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AWriteAble(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2030;
+  fra.me.meth = LOCATE_NEW_AWriteAble_parser_prod___AWriteAble___init_awriteable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2030 */
+  fra.me.REG[3] = NEW_AWriteAble();
+  INIT_ATTRIBUTES__AWriteAble(fra.me.REG[3]);
+  parser_prod___AWriteAble___init_awriteable(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AWriteAble(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AWriteAble_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AWriteAble_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AWriteAble();
+  INIT_ATTRIBUTES__AWriteAble(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AWriteAble(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AMethid[70] = {
+  {(bigint) 2827 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: AMethid < AMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59711,14 +45833,9 @@ const classtable_elt_t VFT_ReduceAction171[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction171 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59726,7 +45843,6 @@ const classtable_elt_t VFT_ReduceAction171[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59734,43 +45850,109 @@ const classtable_elt_t VFT_ReduceAction171[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction171 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction171___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction171 < ReduceAction171: superclass init_table position */},
-  {(bigint) parser___ReduceAction171___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction171(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: AMethid < AMethid: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AMethid::_parent */
+/* 3: Attribute AMethid::_location */
+/* 4: Attribute AMethid::_first_location */
+/* 5: Attribute AMethid::_last_location */
+/* 6: Attribute AMethid::_name */
+void INIT_ATTRIBUTES__AMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction171;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction171(val_t self, char *from) {
-}
-val_t NEW_ReduceAction171_parser___ReduceAction171___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction171();
-  parser___ReduceAction171___init(self, init_table);
-  CHECKNEW_ReduceAction171(self, "parser::ReduceAction171::init for ReduceAction171");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction172[48] = {
-  {(bigint) 2855 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction172 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction172 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2855 /* 3: ReduceAction172 < ReduceAction172: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_AMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AMethid();
+  INIT_ATTRIBUTES__AMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AIdMethid[74] = {
+  {(bigint) 3147 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AIdMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AIdMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AIdMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: AIdMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3147 /* 6: AIdMethid < AIdMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59781,14 +45963,9 @@ const classtable_elt_t VFT_ReduceAction172[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction172 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AIdMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59796,7 +45973,6 @@ const classtable_elt_t VFT_ReduceAction172[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59804,43 +45980,162 @@ const classtable_elt_t VFT_ReduceAction172[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction172 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction172___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction172 < ReduceAction172: superclass init_table position */},
-  {(bigint) parser___ReduceAction172___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AIdMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AIdMethid___visit_all},
+  {(bigint) 1 /* 58: AIdMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AIdMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: AIdMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___AIdMethid___empty_init},
+  {(bigint) parser_prod___AIdMethid___init_aidmethid},
+  {(bigint) 4 /* 72: AIdMethid < AIdMethid: superclass init_table position */},
+  {(bigint) parser_nodes___AIdMethid___n_id},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction172(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AIdMethid::_parent */
+/* 3: Attribute AIdMethid::_location */
+/* 4: Attribute AIdMethid::_first_location */
+/* 5: Attribute AIdMethid::_last_location */
+/* 6: Attribute AIdMethid::_name */
+/* 7: Attribute AIdMethid::_n_id */
+void INIT_ATTRIBUTES__AIdMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AIdMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AIdMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction172;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction172(val_t self, char *from) {
-}
-val_t NEW_ReduceAction172_parser___ReduceAction172___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction172();
-  parser___ReduceAction172___init(self, init_table);
-  CHECKNEW_ReduceAction172(self, "parser::ReduceAction172::init for ReduceAction172");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AIdMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AIdMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AIdMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIdMethid____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction173[48] = {
-  {(bigint) 2851 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction173 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction173 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2851 /* 3: ReduceAction173 < ReduceAction173: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AIdMethid_parser_prod___AIdMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2095;
+  fra.me.meth = LOCATE_NEW_AIdMethid_parser_prod___AIdMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2095 */
+  fra.me.REG[0] = NEW_AIdMethid();
+  INIT_ATTRIBUTES__AIdMethid(fra.me.REG[0]);
+  parser_prod___AIdMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AIdMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AIdMethid_parser_prod___AIdMethid___init_aidmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2097;
+  fra.me.meth = LOCATE_NEW_AIdMethid_parser_prod___AIdMethid___init_aidmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2097 */
+  fra.me.REG[1] = NEW_AIdMethid();
+  INIT_ATTRIBUTES__AIdMethid(fra.me.REG[1]);
+  parser_prod___AIdMethid___init_aidmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AIdMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AIdMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AIdMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AIdMethid();
+  INIT_ATTRIBUTES__AIdMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AIdMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_APlusMethid[74] = {
+  {(bigint) 3075 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: APlusMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: APlusMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: APlusMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: APlusMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3075 /* 6: APlusMethid < APlusMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59851,14 +46146,9 @@ const classtable_elt_t VFT_ReduceAction173[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction173 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: APlusMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59866,7 +46156,6 @@ const classtable_elt_t VFT_ReduceAction173[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59874,43 +46163,162 @@ const classtable_elt_t VFT_ReduceAction173[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction173 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction173___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction173 < ReduceAction173: superclass init_table position */},
-  {(bigint) parser___ReduceAction173___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___APlusMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___APlusMethid___visit_all},
+  {(bigint) 1 /* 58: APlusMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: APlusMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: APlusMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___APlusMethid___empty_init},
+  {(bigint) parser_prod___APlusMethid___init_aplusmethid},
+  {(bigint) 4 /* 72: APlusMethid < APlusMethid: superclass init_table position */},
+  {(bigint) parser_nodes___APlusMethid___n_plus},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction173(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute APlusMethid::_parent */
+/* 3: Attribute APlusMethid::_location */
+/* 4: Attribute APlusMethid::_first_location */
+/* 5: Attribute APlusMethid::_last_location */
+/* 6: Attribute APlusMethid::_name */
+/* 7: Attribute APlusMethid::_n_plus */
+void INIT_ATTRIBUTES__APlusMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__APlusMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_APlusMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction173;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction173(val_t self, char *from) {
-}
-val_t NEW_ReduceAction173_parser___ReduceAction173___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction173();
-  parser___ReduceAction173___init(self, init_table);
-  CHECKNEW_ReduceAction173(self, "parser::ReduceAction173::init for ReduceAction173");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_APlusMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_APlusMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_APlusMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APlusMethid____n_plus(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_plus", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction174[48] = {
-  {(bigint) 2847 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction174 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction174 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2847 /* 3: ReduceAction174 < ReduceAction174: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_APlusMethid_parser_prod___APlusMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2126;
+  fra.me.meth = LOCATE_NEW_APlusMethid_parser_prod___APlusMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2126 */
+  fra.me.REG[0] = NEW_APlusMethid();
+  INIT_ATTRIBUTES__APlusMethid(fra.me.REG[0]);
+  parser_prod___APlusMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_APlusMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APlusMethid_parser_prod___APlusMethid___init_aplusmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2128;
+  fra.me.meth = LOCATE_NEW_APlusMethid_parser_prod___APlusMethid___init_aplusmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2128 */
+  fra.me.REG[1] = NEW_APlusMethid();
+  INIT_ATTRIBUTES__APlusMethid(fra.me.REG[1]);
+  parser_prod___APlusMethid___init_aplusmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APlusMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_APlusMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_APlusMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_APlusMethid();
+  INIT_ATTRIBUTES__APlusMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APlusMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AMinusMethid[74] = {
+  {(bigint) 3099 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AMinusMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AMinusMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AMinusMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: AMinusMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3099 /* 6: AMinusMethid < AMinusMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59921,14 +46329,9 @@ const classtable_elt_t VFT_ReduceAction174[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction174 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AMinusMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -59936,7 +46339,6 @@ const classtable_elt_t VFT_ReduceAction174[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -59944,43 +46346,162 @@ const classtable_elt_t VFT_ReduceAction174[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction174 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction174___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction174 < ReduceAction174: superclass init_table position */},
-  {(bigint) parser___ReduceAction174___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AMinusMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AMinusMethid___visit_all},
+  {(bigint) 1 /* 58: AMinusMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AMinusMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: AMinusMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___AMinusMethid___empty_init},
+  {(bigint) parser_prod___AMinusMethid___init_aminusmethid},
+  {(bigint) 4 /* 72: AMinusMethid < AMinusMethid: superclass init_table position */},
+  {(bigint) parser_nodes___AMinusMethid___n_minus},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction174(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AMinusMethid::_parent */
+/* 3: Attribute AMinusMethid::_location */
+/* 4: Attribute AMinusMethid::_first_location */
+/* 5: Attribute AMinusMethid::_last_location */
+/* 6: Attribute AMinusMethid::_name */
+/* 7: Attribute AMinusMethid::_n_minus */
+void INIT_ATTRIBUTES__AMinusMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AMinusMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMinusMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction174;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction174(val_t self, char *from) {
-}
-val_t NEW_ReduceAction174_parser___ReduceAction174___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction174();
-  parser___ReduceAction174___init(self, init_table);
-  CHECKNEW_ReduceAction174(self, "parser::ReduceAction174::init for ReduceAction174");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AMinusMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AMinusMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AMinusMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AMinusMethid____n_minus(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction175[48] = {
-  {(bigint) 2843 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction175 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction175 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2843 /* 3: ReduceAction175 < ReduceAction175: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AMinusMethid_parser_prod___AMinusMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2157;
+  fra.me.meth = LOCATE_NEW_AMinusMethid_parser_prod___AMinusMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2157 */
+  fra.me.REG[0] = NEW_AMinusMethid();
+  INIT_ATTRIBUTES__AMinusMethid(fra.me.REG[0]);
+  parser_prod___AMinusMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AMinusMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AMinusMethid_parser_prod___AMinusMethid___init_aminusmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2159;
+  fra.me.meth = LOCATE_NEW_AMinusMethid_parser_prod___AMinusMethid___init_aminusmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2159 */
+  fra.me.REG[1] = NEW_AMinusMethid();
+  INIT_ATTRIBUTES__AMinusMethid(fra.me.REG[1]);
+  parser_prod___AMinusMethid___init_aminusmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMinusMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AMinusMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AMinusMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AMinusMethid();
+  INIT_ATTRIBUTES__AMinusMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMinusMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AStarMethid[74] = {
+  {(bigint) 3027 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AStarMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AStarMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AStarMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: AStarMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3027 /* 6: AStarMethid < AStarMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59991,14 +46512,9 @@ const classtable_elt_t VFT_ReduceAction175[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction175 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AStarMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60006,7 +46522,6 @@ const classtable_elt_t VFT_ReduceAction175[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60014,43 +46529,162 @@ const classtable_elt_t VFT_ReduceAction175[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction175 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction175___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction175 < ReduceAction175: superclass init_table position */},
-  {(bigint) parser___ReduceAction175___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AStarMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AStarMethid___visit_all},
+  {(bigint) 1 /* 58: AStarMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AStarMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: AStarMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___AStarMethid___empty_init},
+  {(bigint) parser_prod___AStarMethid___init_astarmethid},
+  {(bigint) 4 /* 72: AStarMethid < AStarMethid: superclass init_table position */},
+  {(bigint) parser_nodes___AStarMethid___n_star},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction175(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AStarMethid::_parent */
+/* 3: Attribute AStarMethid::_location */
+/* 4: Attribute AStarMethid::_first_location */
+/* 5: Attribute AStarMethid::_last_location */
+/* 6: Attribute AStarMethid::_name */
+/* 7: Attribute AStarMethid::_n_star */
+void INIT_ATTRIBUTES__AStarMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AStarMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AStarMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction175;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction175(val_t self, char *from) {
-}
-val_t NEW_ReduceAction175_parser___ReduceAction175___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction175();
-  parser___ReduceAction175___init(self, init_table);
-  CHECKNEW_ReduceAction175(self, "parser::ReduceAction175::init for ReduceAction175");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AStarMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AStarMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AStarMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStarMethid____n_star(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_star", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction176[48] = {
-  {(bigint) 2839 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction176 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction176 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2839 /* 3: ReduceAction176 < ReduceAction176: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AStarMethid_parser_prod___AStarMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2188;
+  fra.me.meth = LOCATE_NEW_AStarMethid_parser_prod___AStarMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2188 */
+  fra.me.REG[0] = NEW_AStarMethid();
+  INIT_ATTRIBUTES__AStarMethid(fra.me.REG[0]);
+  parser_prod___AStarMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStarMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStarMethid_parser_prod___AStarMethid___init_astarmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2190;
+  fra.me.meth = LOCATE_NEW_AStarMethid_parser_prod___AStarMethid___init_astarmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2190 */
+  fra.me.REG[1] = NEW_AStarMethid();
+  INIT_ATTRIBUTES__AStarMethid(fra.me.REG[1]);
+  parser_prod___AStarMethid___init_astarmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStarMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AStarMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AStarMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AStarMethid();
+  INIT_ATTRIBUTES__AStarMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStarMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ASlashMethid[74] = {
+  {(bigint) 3031 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ASlashMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ASlashMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ASlashMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: ASlashMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3031 /* 6: ASlashMethid < ASlashMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60061,14 +46695,9 @@ const classtable_elt_t VFT_ReduceAction176[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction176 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ASlashMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60076,7 +46705,6 @@ const classtable_elt_t VFT_ReduceAction176[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60084,43 +46712,162 @@ const classtable_elt_t VFT_ReduceAction176[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction176 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction176___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction176 < ReduceAction176: superclass init_table position */},
-  {(bigint) parser___ReduceAction176___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASlashMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASlashMethid___visit_all},
+  {(bigint) 1 /* 58: ASlashMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ASlashMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: ASlashMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___ASlashMethid___empty_init},
+  {(bigint) parser_prod___ASlashMethid___init_aslashmethid},
+  {(bigint) 4 /* 72: ASlashMethid < ASlashMethid: superclass init_table position */},
+  {(bigint) parser_nodes___ASlashMethid___n_slash},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction176(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ASlashMethid::_parent */
+/* 3: Attribute ASlashMethid::_location */
+/* 4: Attribute ASlashMethid::_first_location */
+/* 5: Attribute ASlashMethid::_last_location */
+/* 6: Attribute ASlashMethid::_name */
+/* 7: Attribute ASlashMethid::_n_slash */
+void INIT_ATTRIBUTES__ASlashMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ASlashMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASlashMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction176;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction176(val_t self, char *from) {
-}
-val_t NEW_ReduceAction176_parser___ReduceAction176___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction176();
-  parser___ReduceAction176___init(self, init_table);
-  CHECKNEW_ReduceAction176(self, "parser::ReduceAction176::init for ReduceAction176");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_ASlashMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ASlashMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ASlashMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASlashMethid____n_slash(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_slash", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction177[48] = {
-  {(bigint) 2835 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction177 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction177 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2835 /* 3: ReduceAction177 < ReduceAction177: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ASlashMethid_parser_prod___ASlashMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2219;
+  fra.me.meth = LOCATE_NEW_ASlashMethid_parser_prod___ASlashMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2219 */
+  fra.me.REG[0] = NEW_ASlashMethid();
+  INIT_ATTRIBUTES__ASlashMethid(fra.me.REG[0]);
+  parser_prod___ASlashMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASlashMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASlashMethid_parser_prod___ASlashMethid___init_aslashmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2221;
+  fra.me.meth = LOCATE_NEW_ASlashMethid_parser_prod___ASlashMethid___init_aslashmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2221 */
+  fra.me.REG[1] = NEW_ASlashMethid();
+  INIT_ATTRIBUTES__ASlashMethid(fra.me.REG[1]);
+  parser_prod___ASlashMethid___init_aslashmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASlashMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ASlashMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ASlashMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ASlashMethid();
+  INIT_ATTRIBUTES__ASlashMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASlashMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_APercentMethid[74] = {
+  {(bigint) 3083 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: APercentMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: APercentMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: APercentMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: APercentMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3083 /* 6: APercentMethid < APercentMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60131,14 +46878,9 @@ const classtable_elt_t VFT_ReduceAction177[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction177 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: APercentMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60146,7 +46888,6 @@ const classtable_elt_t VFT_ReduceAction177[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60154,43 +46895,162 @@ const classtable_elt_t VFT_ReduceAction177[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction177 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction177___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction177 < ReduceAction177: superclass init_table position */},
-  {(bigint) parser___ReduceAction177___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___APercentMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___APercentMethid___visit_all},
+  {(bigint) 1 /* 58: APercentMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: APercentMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: APercentMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___APercentMethid___empty_init},
+  {(bigint) parser_prod___APercentMethid___init_apercentmethid},
+  {(bigint) 4 /* 72: APercentMethid < APercentMethid: superclass init_table position */},
+  {(bigint) parser_nodes___APercentMethid___n_percent},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction177(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute APercentMethid::_parent */
+/* 3: Attribute APercentMethid::_location */
+/* 4: Attribute APercentMethid::_first_location */
+/* 5: Attribute APercentMethid::_last_location */
+/* 6: Attribute APercentMethid::_name */
+/* 7: Attribute APercentMethid::_n_percent */
+void INIT_ATTRIBUTES__APercentMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__APercentMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_APercentMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction177;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction177(val_t self, char *from) {
-}
-val_t NEW_ReduceAction177_parser___ReduceAction177___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction177();
-  parser___ReduceAction177___init(self, init_table);
-  CHECKNEW_ReduceAction177(self, "parser::ReduceAction177::init for ReduceAction177");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_APercentMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_APercentMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_APercentMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APercentMethid____n_percent(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_percent", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction178[48] = {
-  {(bigint) 2831 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction178 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction178 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2831 /* 3: ReduceAction178 < ReduceAction178: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_APercentMethid_parser_prod___APercentMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2250;
+  fra.me.meth = LOCATE_NEW_APercentMethid_parser_prod___APercentMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2250 */
+  fra.me.REG[0] = NEW_APercentMethid();
+  INIT_ATTRIBUTES__APercentMethid(fra.me.REG[0]);
+  parser_prod___APercentMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_APercentMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APercentMethid_parser_prod___APercentMethid___init_apercentmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2252;
+  fra.me.meth = LOCATE_NEW_APercentMethid_parser_prod___APercentMethid___init_apercentmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2252 */
+  fra.me.REG[1] = NEW_APercentMethid();
+  INIT_ATTRIBUTES__APercentMethid(fra.me.REG[1]);
+  parser_prod___APercentMethid___init_apercentmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APercentMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_APercentMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_APercentMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_APercentMethid();
+  INIT_ATTRIBUTES__APercentMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APercentMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AEqMethid[74] = {
+  {(bigint) 3175 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AEqMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AEqMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AEqMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: AEqMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3175 /* 6: AEqMethid < AEqMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60201,14 +47061,9 @@ const classtable_elt_t VFT_ReduceAction178[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction178 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AEqMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60216,7 +47071,6 @@ const classtable_elt_t VFT_ReduceAction178[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60224,43 +47078,162 @@ const classtable_elt_t VFT_ReduceAction178[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction178 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction178___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction178 < ReduceAction178: superclass init_table position */},
-  {(bigint) parser___ReduceAction178___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AEqMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AEqMethid___visit_all},
+  {(bigint) 1 /* 58: AEqMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AEqMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: AEqMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___AEqMethid___empty_init},
+  {(bigint) parser_prod___AEqMethid___init_aeqmethid},
+  {(bigint) 4 /* 72: AEqMethid < AEqMethid: superclass init_table position */},
+  {(bigint) parser_nodes___AEqMethid___n_eq},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction178(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AEqMethid::_parent */
+/* 3: Attribute AEqMethid::_location */
+/* 4: Attribute AEqMethid::_first_location */
+/* 5: Attribute AEqMethid::_last_location */
+/* 6: Attribute AEqMethid::_name */
+/* 7: Attribute AEqMethid::_n_eq */
+void INIT_ATTRIBUTES__AEqMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AEqMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AEqMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction178;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction178(val_t self, char *from) {
-}
-val_t NEW_ReduceAction178_parser___ReduceAction178___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction178();
-  parser___ReduceAction178___init(self, init_table);
-  CHECKNEW_ReduceAction178(self, "parser::ReduceAction178::init for ReduceAction178");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AEqMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AEqMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AEqMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEqMethid____n_eq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_eq", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction179[48] = {
-  {(bigint) 2827 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction179 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction179 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2827 /* 3: ReduceAction179 < ReduceAction179: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AEqMethid_parser_prod___AEqMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2281;
+  fra.me.meth = LOCATE_NEW_AEqMethid_parser_prod___AEqMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2281 */
+  fra.me.REG[0] = NEW_AEqMethid();
+  INIT_ATTRIBUTES__AEqMethid(fra.me.REG[0]);
+  parser_prod___AEqMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AEqMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AEqMethid_parser_prod___AEqMethid___init_aeqmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2283;
+  fra.me.meth = LOCATE_NEW_AEqMethid_parser_prod___AEqMethid___init_aeqmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2283 */
+  fra.me.REG[1] = NEW_AEqMethid();
+  INIT_ATTRIBUTES__AEqMethid(fra.me.REG[1]);
+  parser_prod___AEqMethid___init_aeqmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AEqMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AEqMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AEqMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AEqMethid();
+  INIT_ATTRIBUTES__AEqMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AEqMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ANeMethid[74] = {
+  {(bigint) 3095 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ANeMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ANeMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ANeMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: ANeMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3095 /* 6: ANeMethid < ANeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60271,14 +47244,9 @@ const classtable_elt_t VFT_ReduceAction179[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction179 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ANeMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60286,7 +47254,6 @@ const classtable_elt_t VFT_ReduceAction179[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60294,43 +47261,162 @@ const classtable_elt_t VFT_ReduceAction179[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction179 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction179___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction179 < ReduceAction179: superclass init_table position */},
-  {(bigint) parser___ReduceAction179___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANeMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANeMethid___visit_all},
+  {(bigint) 1 /* 58: ANeMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ANeMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: ANeMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___ANeMethid___empty_init},
+  {(bigint) parser_prod___ANeMethid___init_anemethid},
+  {(bigint) 4 /* 72: ANeMethid < ANeMethid: superclass init_table position */},
+  {(bigint) parser_nodes___ANeMethid___n_ne},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction179(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ANeMethid::_parent */
+/* 3: Attribute ANeMethid::_location */
+/* 4: Attribute ANeMethid::_first_location */
+/* 5: Attribute ANeMethid::_last_location */
+/* 6: Attribute ANeMethid::_name */
+/* 7: Attribute ANeMethid::_n_ne */
+void INIT_ATTRIBUTES__ANeMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ANeMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ANeMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction179;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction179(val_t self, char *from) {
-}
-val_t NEW_ReduceAction179_parser___ReduceAction179___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction179();
-  parser___ReduceAction179___init(self, init_table);
-  CHECKNEW_ReduceAction179(self, "parser::ReduceAction179::init for ReduceAction179");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_ANeMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ANeMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ANeMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANeMethid____n_ne(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ne", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction180[48] = {
-  {(bigint) 2819 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction180 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction180 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2819 /* 3: ReduceAction180 < ReduceAction180: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ANeMethid_parser_prod___ANeMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2312;
+  fra.me.meth = LOCATE_NEW_ANeMethid_parser_prod___ANeMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2312 */
+  fra.me.REG[0] = NEW_ANeMethid();
+  INIT_ATTRIBUTES__ANeMethid(fra.me.REG[0]);
+  parser_prod___ANeMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ANeMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ANeMethid_parser_prod___ANeMethid___init_anemethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2314;
+  fra.me.meth = LOCATE_NEW_ANeMethid_parser_prod___ANeMethid___init_anemethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2314 */
+  fra.me.REG[1] = NEW_ANeMethid();
+  INIT_ATTRIBUTES__ANeMethid(fra.me.REG[1]);
+  parser_prod___ANeMethid___init_anemethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ANeMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ANeMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ANeMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ANeMethid();
+  INIT_ATTRIBUTES__ANeMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ANeMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ALeMethid[74] = {
+  {(bigint) 3123 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ALeMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ALeMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ALeMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: ALeMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3123 /* 6: ALeMethid < ALeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60341,14 +47427,9 @@ const classtable_elt_t VFT_ReduceAction180[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction180 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ALeMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60356,7 +47437,6 @@ const classtable_elt_t VFT_ReduceAction180[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60364,43 +47444,162 @@ const classtable_elt_t VFT_ReduceAction180[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction180 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction180___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction180 < ReduceAction180: superclass init_table position */},
-  {(bigint) parser___ReduceAction180___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ALeMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ALeMethid___visit_all},
+  {(bigint) 1 /* 58: ALeMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ALeMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: ALeMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___ALeMethid___empty_init},
+  {(bigint) parser_prod___ALeMethid___init_alemethid},
+  {(bigint) 4 /* 72: ALeMethid < ALeMethid: superclass init_table position */},
+  {(bigint) parser_nodes___ALeMethid___n_le},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction180(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ALeMethid::_parent */
+/* 3: Attribute ALeMethid::_location */
+/* 4: Attribute ALeMethid::_first_location */
+/* 5: Attribute ALeMethid::_last_location */
+/* 6: Attribute ALeMethid::_name */
+/* 7: Attribute ALeMethid::_n_le */
+void INIT_ATTRIBUTES__ALeMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ALeMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALeMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction180;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction180(val_t self, char *from) {
-}
-val_t NEW_ReduceAction180_parser___ReduceAction180___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction180();
-  parser___ReduceAction180___init(self, init_table);
-  CHECKNEW_ReduceAction180(self, "parser::ReduceAction180::init for ReduceAction180");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_ALeMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ALeMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ALeMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALeMethid____n_le(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_le", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction181[48] = {
-  {(bigint) 2815 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction181 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction181 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2815 /* 3: ReduceAction181 < ReduceAction181: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ALeMethid_parser_prod___ALeMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2343;
+  fra.me.meth = LOCATE_NEW_ALeMethid_parser_prod___ALeMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2343 */
+  fra.me.REG[0] = NEW_ALeMethid();
+  INIT_ATTRIBUTES__ALeMethid(fra.me.REG[0]);
+  parser_prod___ALeMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALeMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALeMethid_parser_prod___ALeMethid___init_alemethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2345;
+  fra.me.meth = LOCATE_NEW_ALeMethid_parser_prod___ALeMethid___init_alemethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2345 */
+  fra.me.REG[1] = NEW_ALeMethid();
+  INIT_ATTRIBUTES__ALeMethid(fra.me.REG[1]);
+  parser_prod___ALeMethid___init_alemethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALeMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ALeMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ALeMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ALeMethid();
+  INIT_ATTRIBUTES__ALeMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALeMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AGeMethid[74] = {
+  {(bigint) 3159 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AGeMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AGeMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AGeMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: AGeMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3159 /* 6: AGeMethid < AGeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60411,14 +47610,9 @@ const classtable_elt_t VFT_ReduceAction181[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction181 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AGeMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60426,7 +47620,6 @@ const classtable_elt_t VFT_ReduceAction181[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60434,43 +47627,162 @@ const classtable_elt_t VFT_ReduceAction181[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction181 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction181___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction181 < ReduceAction181: superclass init_table position */},
-  {(bigint) parser___ReduceAction181___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AGeMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AGeMethid___visit_all},
+  {(bigint) 1 /* 58: AGeMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AGeMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: AGeMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___AGeMethid___empty_init},
+  {(bigint) parser_prod___AGeMethid___init_agemethid},
+  {(bigint) 4 /* 72: AGeMethid < AGeMethid: superclass init_table position */},
+  {(bigint) parser_nodes___AGeMethid___n_ge},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction181(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AGeMethid::_parent */
+/* 3: Attribute AGeMethid::_location */
+/* 4: Attribute AGeMethid::_first_location */
+/* 5: Attribute AGeMethid::_last_location */
+/* 6: Attribute AGeMethid::_name */
+/* 7: Attribute AGeMethid::_n_ge */
+void INIT_ATTRIBUTES__AGeMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AGeMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AGeMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction181;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction181(val_t self, char *from) {
-}
-val_t NEW_ReduceAction181_parser___ReduceAction181___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction181();
-  parser___ReduceAction181___init(self, init_table);
-  CHECKNEW_ReduceAction181(self, "parser::ReduceAction181::init for ReduceAction181");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AGeMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AGeMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AGeMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AGeMethid____n_ge(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ge", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction182[48] = {
-  {(bigint) 2811 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction182 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction182 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2811 /* 3: ReduceAction182 < ReduceAction182: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AGeMethid_parser_prod___AGeMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2374;
+  fra.me.meth = LOCATE_NEW_AGeMethid_parser_prod___AGeMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2374 */
+  fra.me.REG[0] = NEW_AGeMethid();
+  INIT_ATTRIBUTES__AGeMethid(fra.me.REG[0]);
+  parser_prod___AGeMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGeMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGeMethid_parser_prod___AGeMethid___init_agemethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2376;
+  fra.me.meth = LOCATE_NEW_AGeMethid_parser_prod___AGeMethid___init_agemethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2376 */
+  fra.me.REG[1] = NEW_AGeMethid();
+  INIT_ATTRIBUTES__AGeMethid(fra.me.REG[1]);
+  parser_prod___AGeMethid___init_agemethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGeMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AGeMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AGeMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AGeMethid();
+  INIT_ATTRIBUTES__AGeMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGeMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ALtMethid[74] = {
+  {(bigint) 3115 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ALtMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ALtMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ALtMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: ALtMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3115 /* 6: ALtMethid < ALtMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60481,14 +47793,9 @@ const classtable_elt_t VFT_ReduceAction182[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction182 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ALtMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60496,7 +47803,6 @@ const classtable_elt_t VFT_ReduceAction182[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60504,43 +47810,162 @@ const classtable_elt_t VFT_ReduceAction182[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction182 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction182___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction182 < ReduceAction182: superclass init_table position */},
-  {(bigint) parser___ReduceAction182___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ALtMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ALtMethid___visit_all},
+  {(bigint) 1 /* 58: ALtMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ALtMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: ALtMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___ALtMethid___empty_init},
+  {(bigint) parser_prod___ALtMethid___init_altmethid},
+  {(bigint) 4 /* 72: ALtMethid < ALtMethid: superclass init_table position */},
+  {(bigint) parser_nodes___ALtMethid___n_lt},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction182(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ALtMethid::_parent */
+/* 3: Attribute ALtMethid::_location */
+/* 4: Attribute ALtMethid::_first_location */
+/* 5: Attribute ALtMethid::_last_location */
+/* 6: Attribute ALtMethid::_name */
+/* 7: Attribute ALtMethid::_n_lt */
+void INIT_ATTRIBUTES__ALtMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ALtMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALtMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction182;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction182(val_t self, char *from) {
-}
-val_t NEW_ReduceAction182_parser___ReduceAction182___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction182();
-  parser___ReduceAction182___init(self, init_table);
-  CHECKNEW_ReduceAction182(self, "parser::ReduceAction182::init for ReduceAction182");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_ALtMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ALtMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ALtMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALtMethid____n_lt(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_lt", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction183[48] = {
-  {(bigint) 2807 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction183 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction183 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2807 /* 3: ReduceAction183 < ReduceAction183: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ALtMethid_parser_prod___ALtMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2405;
+  fra.me.meth = LOCATE_NEW_ALtMethid_parser_prod___ALtMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2405 */
+  fra.me.REG[0] = NEW_ALtMethid();
+  INIT_ATTRIBUTES__ALtMethid(fra.me.REG[0]);
+  parser_prod___ALtMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALtMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALtMethid_parser_prod___ALtMethid___init_altmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2407;
+  fra.me.meth = LOCATE_NEW_ALtMethid_parser_prod___ALtMethid___init_altmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2407 */
+  fra.me.REG[1] = NEW_ALtMethid();
+  INIT_ATTRIBUTES__ALtMethid(fra.me.REG[1]);
+  parser_prod___ALtMethid___init_altmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALtMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ALtMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ALtMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ALtMethid();
+  INIT_ATTRIBUTES__ALtMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALtMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AGtMethid[74] = {
+  {(bigint) 3151 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AGtMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AGtMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AGtMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: AGtMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3151 /* 6: AGtMethid < AGtMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60551,14 +47976,9 @@ const classtable_elt_t VFT_ReduceAction183[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction183 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AGtMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60566,7 +47986,6 @@ const classtable_elt_t VFT_ReduceAction183[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60574,43 +47993,162 @@ const classtable_elt_t VFT_ReduceAction183[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction183 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction183___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction183 < ReduceAction183: superclass init_table position */},
-  {(bigint) parser___ReduceAction183___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AGtMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AGtMethid___visit_all},
+  {(bigint) 1 /* 58: AGtMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AGtMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: AGtMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___AGtMethid___empty_init},
+  {(bigint) parser_prod___AGtMethid___init_agtmethid},
+  {(bigint) 4 /* 72: AGtMethid < AGtMethid: superclass init_table position */},
+  {(bigint) parser_nodes___AGtMethid___n_gt},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction183(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AGtMethid::_parent */
+/* 3: Attribute AGtMethid::_location */
+/* 4: Attribute AGtMethid::_first_location */
+/* 5: Attribute AGtMethid::_last_location */
+/* 6: Attribute AGtMethid::_name */
+/* 7: Attribute AGtMethid::_n_gt */
+void INIT_ATTRIBUTES__AGtMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AGtMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AGtMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction183;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction183(val_t self, char *from) {
-}
-val_t NEW_ReduceAction183_parser___ReduceAction183___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction183();
-  parser___ReduceAction183___init(self, init_table);
-  CHECKNEW_ReduceAction183(self, "parser::ReduceAction183::init for ReduceAction183");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AGtMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AGtMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AGtMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AGtMethid____n_gt(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_gt", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction184[48] = {
-  {(bigint) 2803 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction184 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction184 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2803 /* 3: ReduceAction184 < ReduceAction184: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AGtMethid_parser_prod___AGtMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2436;
+  fra.me.meth = LOCATE_NEW_AGtMethid_parser_prod___AGtMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2436 */
+  fra.me.REG[0] = NEW_AGtMethid();
+  INIT_ATTRIBUTES__AGtMethid(fra.me.REG[0]);
+  parser_prod___AGtMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGtMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGtMethid_parser_prod___AGtMethid___init_agtmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2438;
+  fra.me.meth = LOCATE_NEW_AGtMethid_parser_prod___AGtMethid___init_agtmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2438 */
+  fra.me.REG[1] = NEW_AGtMethid();
+  INIT_ATTRIBUTES__AGtMethid(fra.me.REG[1]);
+  parser_prod___AGtMethid___init_agtmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGtMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AGtMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AGtMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AGtMethid();
+  INIT_ATTRIBUTES__AGtMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGtMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ALlMethid[75] = {
+  {(bigint) 3119 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ALlMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ALlMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ALlMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: ALlMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3119 /* 6: ALlMethid < ALlMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60621,14 +48159,9 @@ const classtable_elt_t VFT_ReduceAction184[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction184 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ALlMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60636,7 +48169,6 @@ const classtable_elt_t VFT_ReduceAction184[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60644,43 +48176,163 @@ const classtable_elt_t VFT_ReduceAction184[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction184 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction184___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction184 < ReduceAction184: superclass init_table position */},
-  {(bigint) parser___ReduceAction184___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction184(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ALlMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ALlMethid___visit_all},
+  {(bigint) 1 /* 58: ALlMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ALlMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: ALlMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___ALlMethid___empty_init},
+  {(bigint) parser_prod___ALlMethid___init_allmethid},
+  {(bigint) 4 /* 72: ALlMethid < ALlMethid: superclass init_table position */},
+  {(bigint) parser_nodes___ALlMethid___n_ll},
+  {(bigint) parser_nodes___ALlMethid___n_ll__eq},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ALlMethid::_parent */
+/* 3: Attribute ALlMethid::_location */
+/* 4: Attribute ALlMethid::_first_location */
+/* 5: Attribute ALlMethid::_last_location */
+/* 6: Attribute ALlMethid::_name */
+/* 7: Attribute ALlMethid::_n_ll */
+void INIT_ATTRIBUTES__ALlMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ALlMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALlMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction184;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction184(val_t self, char *from) {
-}
-val_t NEW_ReduceAction184_parser___ReduceAction184___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction184();
-  parser___ReduceAction184___init(self, init_table);
-  CHECKNEW_ReduceAction184(self, "parser::ReduceAction184::init for ReduceAction184");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_ALlMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ALlMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ALlMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALlMethid____n_ll(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ll", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction185[48] = {
-  {(bigint) 2799 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction185 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction185 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2799 /* 3: ReduceAction185 < ReduceAction185: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ALlMethid_parser_prod___ALlMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2467;
+  fra.me.meth = LOCATE_NEW_ALlMethid_parser_prod___ALlMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2467 */
+  fra.me.REG[0] = NEW_ALlMethid();
+  INIT_ATTRIBUTES__ALlMethid(fra.me.REG[0]);
+  parser_prod___ALlMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALlMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALlMethid_parser_prod___ALlMethid___init_allmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2469;
+  fra.me.meth = LOCATE_NEW_ALlMethid_parser_prod___ALlMethid___init_allmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2469 */
+  fra.me.REG[1] = NEW_ALlMethid();
+  INIT_ATTRIBUTES__ALlMethid(fra.me.REG[1]);
+  parser_prod___ALlMethid___init_allmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALlMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ALlMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ALlMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ALlMethid();
+  INIT_ATTRIBUTES__ALlMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALlMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AGgMethid[75] = {
+  {(bigint) 3155 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AGgMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AGgMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AGgMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: AGgMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3155 /* 6: AGgMethid < AGgMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60691,14 +48343,9 @@ const classtable_elt_t VFT_ReduceAction185[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction185 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AGgMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60706,7 +48353,6 @@ const classtable_elt_t VFT_ReduceAction185[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60714,43 +48360,163 @@ const classtable_elt_t VFT_ReduceAction185[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction185 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction185___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction185 < ReduceAction185: superclass init_table position */},
-  {(bigint) parser___ReduceAction185___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction185(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AGgMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AGgMethid___visit_all},
+  {(bigint) 1 /* 58: AGgMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AGgMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: AGgMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___AGgMethid___empty_init},
+  {(bigint) parser_prod___AGgMethid___init_aggmethid},
+  {(bigint) 4 /* 72: AGgMethid < AGgMethid: superclass init_table position */},
+  {(bigint) parser_nodes___AGgMethid___n_gg},
+  {(bigint) parser_nodes___AGgMethid___n_gg__eq},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AGgMethid::_parent */
+/* 3: Attribute AGgMethid::_location */
+/* 4: Attribute AGgMethid::_first_location */
+/* 5: Attribute AGgMethid::_last_location */
+/* 6: Attribute AGgMethid::_name */
+/* 7: Attribute AGgMethid::_n_gg */
+void INIT_ATTRIBUTES__AGgMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AGgMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AGgMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction185;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction185(val_t self, char *from) {
-}
-val_t NEW_ReduceAction185_parser___ReduceAction185___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction185();
-  parser___ReduceAction185___init(self, init_table);
-  CHECKNEW_ReduceAction185(self, "parser::ReduceAction185::init for ReduceAction185");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AGgMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AGgMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AGgMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AGgMethid____n_gg(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_gg", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction186[48] = {
-  {(bigint) 2795 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction186 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction186 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2795 /* 3: ReduceAction186 < ReduceAction186: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AGgMethid_parser_prod___AGgMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2498;
+  fra.me.meth = LOCATE_NEW_AGgMethid_parser_prod___AGgMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2498 */
+  fra.me.REG[0] = NEW_AGgMethid();
+  INIT_ATTRIBUTES__AGgMethid(fra.me.REG[0]);
+  parser_prod___AGgMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGgMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGgMethid_parser_prod___AGgMethid___init_aggmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2500;
+  fra.me.meth = LOCATE_NEW_AGgMethid_parser_prod___AGgMethid___init_aggmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2500 */
+  fra.me.REG[1] = NEW_AGgMethid();
+  INIT_ATTRIBUTES__AGgMethid(fra.me.REG[1]);
+  parser_prod___AGgMethid___init_aggmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGgMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AGgMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AGgMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AGgMethid();
+  INIT_ATTRIBUTES__AGgMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGgMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ABraMethid[75] = {
+  {(bigint) 3203 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ABraMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ABraMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ABraMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: ABraMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3203 /* 6: ABraMethid < ABraMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60761,14 +48527,9 @@ const classtable_elt_t VFT_ReduceAction186[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction186 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ABraMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60776,7 +48537,6 @@ const classtable_elt_t VFT_ReduceAction186[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60784,43 +48544,171 @@ const classtable_elt_t VFT_ReduceAction186[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction186 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction186___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction186 < ReduceAction186: superclass init_table position */},
-  {(bigint) parser___ReduceAction186___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ABraMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ABraMethid___visit_all},
+  {(bigint) 1 /* 58: ABraMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ABraMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: ABraMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___ABraMethid___empty_init},
+  {(bigint) parser_prod___ABraMethid___init_abramethid},
+  {(bigint) 4 /* 72: ABraMethid < ABraMethid: superclass init_table position */},
+  {(bigint) parser_nodes___ABraMethid___n_obra},
+  {(bigint) parser_nodes___ABraMethid___n_cbra},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction186(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ABraMethid::_parent */
+/* 3: Attribute ABraMethid::_location */
+/* 4: Attribute ABraMethid::_first_location */
+/* 5: Attribute ABraMethid::_last_location */
+/* 6: Attribute ABraMethid::_name */
+/* 7: Attribute ABraMethid::_n_obra */
+/* 8: Attribute ABraMethid::_n_cbra */
+void INIT_ATTRIBUTES__ABraMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ABraMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABraMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction186;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction186(val_t self, char *from) {
-}
-val_t NEW_ReduceAction186_parser___ReduceAction186___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction186();
-  parser___ReduceAction186___init(self, init_table);
-  CHECKNEW_ReduceAction186(self, "parser::ReduceAction186::init for ReduceAction186");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_ABraMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ABraMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ABraMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction187[48] = {
-  {(bigint) 2791 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction187 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction187 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2791 /* 3: ReduceAction187 < ReduceAction187: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ABraMethid_parser_prod___ABraMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2529;
+  fra.me.meth = LOCATE_NEW_ABraMethid_parser_prod___ABraMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2529 */
+  fra.me.REG[0] = NEW_ABraMethid();
+  INIT_ATTRIBUTES__ABraMethid(fra.me.REG[0]);
+  parser_prod___ABraMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABraMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABraMethid_parser_prod___ABraMethid___init_abramethid(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2531;
+  fra.me.meth = LOCATE_NEW_ABraMethid_parser_prod___ABraMethid___init_abramethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2531 */
+  fra.me.REG[2] = NEW_ABraMethid();
+  INIT_ATTRIBUTES__ABraMethid(fra.me.REG[2]);
+  parser_prod___ABraMethid___init_abramethid(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ABraMethid(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ABraMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ABraMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ABraMethid();
+  INIT_ATTRIBUTES__ABraMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABraMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AStarshipMethid[74] = {
+  {(bigint) 3023 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AStarshipMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AStarshipMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AStarshipMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: AStarshipMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3023 /* 6: AStarshipMethid < AStarshipMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60831,14 +48719,9 @@ const classtable_elt_t VFT_ReduceAction187[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction187 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AStarshipMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60846,7 +48729,6 @@ const classtable_elt_t VFT_ReduceAction187[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60854,43 +48736,162 @@ const classtable_elt_t VFT_ReduceAction187[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction187 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction187___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction187 < ReduceAction187: superclass init_table position */},
-  {(bigint) parser___ReduceAction187___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AStarshipMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AStarshipMethid___visit_all},
+  {(bigint) 1 /* 58: AStarshipMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AStarshipMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: AStarshipMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___AStarshipMethid___empty_init},
+  {(bigint) parser_prod___AStarshipMethid___init_astarshipmethid},
+  {(bigint) 4 /* 72: AStarshipMethid < AStarshipMethid: superclass init_table position */},
+  {(bigint) parser_nodes___AStarshipMethid___n_starship},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction187(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AStarshipMethid::_parent */
+/* 3: Attribute AStarshipMethid::_location */
+/* 4: Attribute AStarshipMethid::_first_location */
+/* 5: Attribute AStarshipMethid::_last_location */
+/* 6: Attribute AStarshipMethid::_name */
+/* 7: Attribute AStarshipMethid::_n_starship */
+void INIT_ATTRIBUTES__AStarshipMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AStarshipMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AStarshipMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction187;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction187(val_t self, char *from) {
-}
-val_t NEW_ReduceAction187_parser___ReduceAction187___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction187();
-  parser___ReduceAction187___init(self, init_table);
-  CHECKNEW_ReduceAction187(self, "parser::ReduceAction187::init for ReduceAction187");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AStarshipMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AStarshipMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AStarshipMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_starship", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction188[48] = {
-  {(bigint) 2787 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction188 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction188 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2787 /* 3: ReduceAction188 < ReduceAction188: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AStarshipMethid_parser_prod___AStarshipMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2574;
+  fra.me.meth = LOCATE_NEW_AStarshipMethid_parser_prod___AStarshipMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2574 */
+  fra.me.REG[0] = NEW_AStarshipMethid();
+  INIT_ATTRIBUTES__AStarshipMethid(fra.me.REG[0]);
+  parser_prod___AStarshipMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStarshipMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStarshipMethid_parser_prod___AStarshipMethid___init_astarshipmethid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2576;
+  fra.me.meth = LOCATE_NEW_AStarshipMethid_parser_prod___AStarshipMethid___init_astarshipmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:2576 */
+  fra.me.REG[1] = NEW_AStarshipMethid();
+  INIT_ATTRIBUTES__AStarshipMethid(fra.me.REG[1]);
+  parser_prod___AStarshipMethid___init_astarshipmethid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStarshipMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AStarshipMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AStarshipMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AStarshipMethid();
+  INIT_ATTRIBUTES__AStarshipMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStarshipMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAssignMethid[75] = {
+  {(bigint) 3223 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAssignMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAssignMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAssignMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: AAssignMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3223 /* 6: AAssignMethid < AAssignMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60901,14 +48902,9 @@ const classtable_elt_t VFT_ReduceAction188[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction188 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAssignMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60916,7 +48912,6 @@ const classtable_elt_t VFT_ReduceAction188[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60924,43 +48919,171 @@ const classtable_elt_t VFT_ReduceAction188[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction188 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction188___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction188 < ReduceAction188: superclass init_table position */},
-  {(bigint) parser___ReduceAction188___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AAssignMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AAssignMethid___visit_all},
+  {(bigint) 1 /* 58: AAssignMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAssignMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: AAssignMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___AAssignMethid___empty_init},
+  {(bigint) parser_prod___AAssignMethid___init_aassignmethid},
+  {(bigint) 4 /* 72: AAssignMethid < AAssignMethid: superclass init_table position */},
+  {(bigint) parser_nodes___AAssignMethid___n_id},
+  {(bigint) parser_nodes___AAssignMethid___n_assign},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction188(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AAssignMethid::_parent */
+/* 3: Attribute AAssignMethid::_location */
+/* 4: Attribute AAssignMethid::_first_location */
+/* 5: Attribute AAssignMethid::_last_location */
+/* 6: Attribute AAssignMethid::_name */
+/* 7: Attribute AAssignMethid::_n_id */
+/* 8: Attribute AAssignMethid::_n_assign */
+void INIT_ATTRIBUTES__AAssignMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAssignMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAssignMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction188;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction188(val_t self, char *from) {
-}
-val_t NEW_ReduceAction188_parser___ReduceAction188___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction188();
-  parser___ReduceAction188___init(self, init_table);
-  CHECKNEW_ReduceAction188(self, "parser::ReduceAction188::init for ReduceAction188");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_AAssignMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAssignMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAssignMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignMethid____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction189[48] = {
-  {(bigint) 2783 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction189 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction189 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2783 /* 3: ReduceAction189 < ReduceAction189: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAssignMethid_parser_prod___AAssignMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2605;
+  fra.me.meth = LOCATE_NEW_AAssignMethid_parser_prod___AAssignMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2605 */
+  fra.me.REG[0] = NEW_AAssignMethid();
+  INIT_ATTRIBUTES__AAssignMethid(fra.me.REG[0]);
+  parser_prod___AAssignMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AAssignMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AAssignMethid_parser_prod___AAssignMethid___init_aassignmethid(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2607;
+  fra.me.meth = LOCATE_NEW_AAssignMethid_parser_prod___AAssignMethid___init_aassignmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2607 */
+  fra.me.REG[2] = NEW_AAssignMethid();
+  INIT_ATTRIBUTES__AAssignMethid(fra.me.REG[2]);
+  parser_prod___AAssignMethid___init_aassignmethid(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AAssignMethid(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AAssignMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAssignMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAssignMethid();
+  INIT_ATTRIBUTES__AAssignMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAssignMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ABraassignMethid[76] = {
+  {(bigint) 3199 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ABraassignMethid < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ABraassignMethid < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ABraassignMethid < Prod: superclass typecheck marker */},
+  {(bigint) 2827 /* 5: ABraassignMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3199 /* 6: ABraassignMethid < ABraassignMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60971,14 +49094,9 @@ const classtable_elt_t VFT_ReduceAction189[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction189 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ABraassignMethid < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -60986,7 +49104,6 @@ const classtable_elt_t VFT_ReduceAction189[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -60994,42 +49111,179 @@ const classtable_elt_t VFT_ReduceAction189[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction189 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction189___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction189 < ReduceAction189: superclass init_table position */},
-  {(bigint) parser___ReduceAction189___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AMethid___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ABraassignMethid___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ABraassignMethid___visit_all},
+  {(bigint) 1 /* 58: ABraassignMethid < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ABraassignMethid < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AMethid___name},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) 3 /* 69: ABraassignMethid < AMethid: superclass init_table position */},
+  {(bigint) parser_prod___ABraassignMethid___empty_init},
+  {(bigint) parser_prod___ABraassignMethid___init_abraassignmethid},
+  {(bigint) 4 /* 72: ABraassignMethid < ABraassignMethid: superclass init_table position */},
+  {(bigint) parser_nodes___ABraassignMethid___n_obra},
+  {(bigint) parser_nodes___ABraassignMethid___n_cbra},
+  {(bigint) parser_nodes___ABraassignMethid___n_assign},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction189(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ABraassignMethid::_parent */
+/* 3: Attribute ABraassignMethid::_location */
+/* 4: Attribute ABraassignMethid::_first_location */
+/* 5: Attribute ABraassignMethid::_last_location */
+/* 6: Attribute ABraassignMethid::_name */
+/* 7: Attribute ABraassignMethid::_n_obra */
+/* 8: Attribute ABraassignMethid::_n_cbra */
+/* 9: Attribute ABraassignMethid::_n_assign */
+void INIT_ATTRIBUTES__ABraassignMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ABraassignMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABraassignMethid(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction189;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction189(val_t self, char *from) {
-}
-val_t NEW_ReduceAction189_parser___ReduceAction189___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction189();
-  parser___ReduceAction189___init(self, init_table);
-  CHECKNEW_ReduceAction189(self, "parser::ReduceAction189::init for ReduceAction189");
-  return self;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_ABraassignMethid;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ABraassignMethid(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ABraassignMethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_obra", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_cbra", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction190[48] = {
-  {(bigint) 2775 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction190 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction190 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2775 /* 3: ReduceAction190 < ReduceAction190: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ABraassignMethid_parser_prod___ABraassignMethid___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2650;
+  fra.me.meth = LOCATE_NEW_ABraassignMethid_parser_prod___ABraassignMethid___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2650 */
+  fra.me.REG[0] = NEW_ABraassignMethid();
+  INIT_ATTRIBUTES__ABraassignMethid(fra.me.REG[0]);
+  parser_prod___ABraassignMethid___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABraassignMethid(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABraassignMethid_parser_prod___ABraassignMethid___init_abraassignmethid(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2652;
+  fra.me.meth = LOCATE_NEW_ABraassignMethid_parser_prod___ABraassignMethid___init_abraassignmethid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2652 */
+  fra.me.REG[3] = NEW_ABraassignMethid();
+  INIT_ATTRIBUTES__ABraassignMethid(fra.me.REG[3]);
+  parser_prod___ABraassignMethid___init_abraassignmethid(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_ABraassignMethid(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_ABraassignMethid_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ABraassignMethid_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ABraassignMethid();
+  INIT_ATTRIBUTES__ABraassignMethid(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABraassignMethid(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ASignature[76] = {
+  {(bigint) 2803 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ASignature < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ASignature < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ASignature < Prod: superclass typecheck marker */},
+  {(bigint) 2803 /* 5: ASignature < ASignature: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61041,14 +49295,9 @@ const classtable_elt_t VFT_ReduceAction190[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction190 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ASignature < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61056,7 +49305,6 @@ const classtable_elt_t VFT_ReduceAction190[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61064,42 +49312,185 @@ const classtable_elt_t VFT_ReduceAction190[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction190 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction190___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction190 < ReduceAction190: superclass init_table position */},
-  {(bigint) parser___ReduceAction190___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction190(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ASignature___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASignature___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASignature___visit_all},
+  {(bigint) 1 /* 58: ASignature < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ASignature < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) mmbuilder___ASignature___check_visibility},
+  {(bigint) parser_prod___ASignature___empty_init},
+  {(bigint) parser_prod___ASignature___init_asignature},
+  {(bigint) 3 /* 71: ASignature < ASignature: superclass init_table position */},
+  {(bigint) parser_nodes___ASignature___n_params},
+  {(bigint) parser_nodes___ASignature___n_type},
+  {(bigint) parser_nodes___ASignature___n_closure_decls},
+  {(bigint) icode_generation___ASignature___fill_iroutine_parameters},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ASignature::_parent */
+/* 3: Attribute ASignature::_location */
+/* 4: Attribute ASignature::_first_location */
+/* 5: Attribute ASignature::_last_location */
+/* 6: Attribute ASignature::_n_params */
+/* 7: Attribute ASignature::_n_type */
+/* 8: Attribute ASignature::_n_closure_decls */
+void INIT_ATTRIBUTES__ASignature(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ASignature;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:554 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:555 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ASignature____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:556 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASignature(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction190;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction190(val_t self, char *from) {
-}
-val_t NEW_ReduceAction190_parser___ReduceAction190___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction190();
-  parser___ReduceAction190___init(self, init_table);
-  CHECKNEW_ReduceAction190(self, "parser::ReduceAction190::init for ReduceAction190");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_ASignature;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ASignature(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ASignature;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction191[48] = {
-  {(bigint) 2771 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction191 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction191 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2771 /* 3: ReduceAction191 < ReduceAction191: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ASignature_parser_prod___ASignature___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2709;
+  fra.me.meth = LOCATE_NEW_ASignature_parser_prod___ASignature___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2709 */
+  fra.me.REG[0] = NEW_ASignature();
+  INIT_ATTRIBUTES__ASignature(fra.me.REG[0]);
+  parser_prod___ASignature___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASignature(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASignature_parser_prod___ASignature___init_asignature(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2711;
+  fra.me.meth = LOCATE_NEW_ASignature_parser_prod___ASignature___init_asignature;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2711 */
+  fra.me.REG[3] = NEW_ASignature();
+  INIT_ATTRIBUTES__ASignature(fra.me.REG[3]);
+  parser_prod___ASignature___init_asignature(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_ASignature(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_ASignature_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ASignature_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ASignature();
+  INIT_ATTRIBUTES__ASignature(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASignature(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AParam[79] = {
+  {(bigint) 2815 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AParam < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AParam < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AParam < Prod: superclass typecheck marker */},
+  {(bigint) 2815 /* 5: AParam < AParam: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61111,14 +49502,9 @@ const classtable_elt_t VFT_ReduceAction191[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction191 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AParam < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61126,7 +49512,6 @@ const classtable_elt_t VFT_ReduceAction191[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61134,42 +49519,192 @@ const classtable_elt_t VFT_ReduceAction191[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction191 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction191___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction191 < ReduceAction191: superclass init_table position */},
-  {(bigint) parser___ReduceAction191___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___AParam___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AParam___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AParam___visit_all},
+  {(bigint) 1 /* 58: AParam < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AParam___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AParam < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AParam___stype},
+  {(bigint) mmbuilder___AParam___stype__eq},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) mmbuilder___AParam___is_vararg},
+  {(bigint) mmbuilder___AParam___position},
+  {(bigint) mmbuilder___AParam___variable},
+  {(bigint) parser_prod___AParam___empty_init},
+  {(bigint) parser_prod___AParam___init_aparam},
+  {(bigint) 3 /* 75: AParam < AParam: superclass init_table position */},
+  {(bigint) parser_nodes___AParam___n_id},
+  {(bigint) parser_nodes___AParam___n_type},
+  {(bigint) parser_nodes___AParam___n_dotdotdot},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction191(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AParam::_parent */
+/* 3: Attribute AParam::_location */
+/* 4: Attribute AParam::_first_location */
+/* 5: Attribute AParam::_last_location */
+/* 6: Attribute AParam::_position */
+/* 7: Attribute AParam::_variable */
+/* 8: Attribute AParam::_stype */
+/* 9: Attribute AParam::_n_id */
+/* 10: Attribute AParam::_n_type */
+/* 11: Attribute AParam::_n_dotdotdot */
+void INIT_ATTRIBUTES__AParam(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AParam;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//mmbuilder.nit:1188 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmbuilder___AParam____position(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:561 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AParam____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:562 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AParam(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction191;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction191(val_t self, char *from) {
-}
-val_t NEW_ReduceAction191_parser___ReduceAction191___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction191();
-  parser___ReduceAction191___init(self, init_table);
-  CHECKNEW_ReduceAction191(self, "parser::ReduceAction191::init for ReduceAction191");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_AParam;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AParam(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AParam;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_mmbuilder___AParam____position(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_position", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AParam____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction192[48] = {
-  {(bigint) 2767 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction192 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction192 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2767 /* 3: ReduceAction192 < ReduceAction192: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AParam_parser_prod___AParam___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2786;
+  fra.me.meth = LOCATE_NEW_AParam_parser_prod___AParam___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2786 */
+  fra.me.REG[0] = NEW_AParam();
+  INIT_ATTRIBUTES__AParam(fra.me.REG[0]);
+  parser_prod___AParam___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AParam(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AParam_parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2788;
+  fra.me.meth = LOCATE_NEW_AParam_parser_prod___AParam___init_aparam;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2788 */
+  fra.me.REG[3] = NEW_AParam();
+  INIT_ATTRIBUTES__AParam(fra.me.REG[3]);
+  parser_prod___AParam___init_aparam(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AParam(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AParam_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AParam_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AParam();
+  INIT_ATTRIBUTES__AParam(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AParam(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AClosureDecl[80] = {
+  {(bigint) 2859 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AClosureDecl < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AClosureDecl < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AClosureDecl < Prod: superclass typecheck marker */},
+  {(bigint) 2859 /* 5: AClosureDecl < AClosureDecl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61181,14 +49716,9 @@ const classtable_elt_t VFT_ReduceAction192[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction192 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AClosureDecl < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61196,7 +49726,6 @@ const classtable_elt_t VFT_ReduceAction192[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61204,42 +49733,209 @@ const classtable_elt_t VFT_ReduceAction192[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction192 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction192___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction192 < ReduceAction192: superclass init_table position */},
-  {(bigint) parser___ReduceAction192___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction192(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___AClosureDecl___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AClosureDecl___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AClosureDecl___visit_all},
+  {(bigint) 1 /* 58: AClosureDecl < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AClosureDecl___accept_icode_generation},
+  {(bigint) typing___AClosureDecl___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AClosureDecl < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) mmbuilder___AClosureDecl___position},
+  {(bigint) mmbuilder___AClosureDecl___variable},
+  {(bigint) parser_prod___AClosureDecl___empty_init},
+  {(bigint) parser_prod___AClosureDecl___init_aclosuredecl},
+  {(bigint) 3 /* 72: AClosureDecl < AClosureDecl: superclass init_table position */},
+  {(bigint) parser_nodes___AClosureDecl___n_kwbreak},
+  {(bigint) parser_nodes___AClosureDecl___n_bang},
+  {(bigint) parser_nodes___AClosureDecl___n_id},
+  {(bigint) parser_nodes___AClosureDecl___n_signature},
+  {(bigint) parser_nodes___AClosureDecl___n_expr},
+  {(bigint) typing___AClosureDecl___escapable},
+  {(bigint) typing___ANode___accept_typing},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AClosureDecl::_parent */
+/* 3: Attribute AClosureDecl::_location */
+/* 4: Attribute AClosureDecl::_first_location */
+/* 5: Attribute AClosureDecl::_last_location */
+/* 6: Attribute AClosureDecl::_position */
+/* 7: Attribute AClosureDecl::_variable */
+/* 8: Attribute AClosureDecl::_n_kwbreak */
+/* 9: Attribute AClosureDecl::_n_bang */
+/* 10: Attribute AClosureDecl::_n_id */
+/* 11: Attribute AClosureDecl::_n_signature */
+/* 12: Attribute AClosureDecl::_n_expr */
+/* 13: Attribute AClosureDecl::_escapable */
+void INIT_ATTRIBUTES__AClosureDecl(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AClosureDecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//mmbuilder.nit:1229 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmbuilder___AClosureDecl____position(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:566 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:570 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AClosureDecl(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction192;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction192(val_t self, char *from) {
-}
-val_t NEW_ReduceAction192_parser___ReduceAction192___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction192();
-  parser___ReduceAction192___init(self, init_table);
-  CHECKNEW_ReduceAction192(self, "parser::ReduceAction192::init for ReduceAction192");
-  return self;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_AClosureDecl;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AClosureDecl(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AClosureDecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_mmbuilder___AClosureDecl____position(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_position", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_bang(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDecl____n_signature(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_signature", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction193[48] = {
-  {(bigint) 2763 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction193 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction193 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2763 /* 3: ReduceAction193 < ReduceAction193: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AClosureDecl_parser_prod___AClosureDecl___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2853;
+  fra.me.meth = LOCATE_NEW_AClosureDecl_parser_prod___AClosureDecl___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2853 */
+  fra.me.REG[0] = NEW_AClosureDecl();
+  INIT_ATTRIBUTES__AClosureDecl(fra.me.REG[0]);
+  parser_prod___AClosureDecl___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AClosureDecl(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2855;
+  fra.me.meth = LOCATE_NEW_AClosureDecl_parser_prod___AClosureDecl___init_aclosuredecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:2855 */
+  fra.me.REG[5] = NEW_AClosureDecl();
+  INIT_ATTRIBUTES__AClosureDecl(fra.me.REG[5]);
+  parser_prod___AClosureDecl___init_aclosuredecl(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_AClosureDecl(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+val_t NEW_AClosureDecl_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AClosureDecl_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AClosureDecl();
+  INIT_ATTRIBUTES__AClosureDecl(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AClosureDecl(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AType[80] = {
+  {(bigint) 2795 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AType < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AType < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AType < Prod: superclass typecheck marker */},
+  {(bigint) 2795 /* 5: AType < AType: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61251,14 +49947,9 @@ const classtable_elt_t VFT_ReduceAction193[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction193 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AType < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61266,7 +49957,6 @@ const classtable_elt_t VFT_ReduceAction193[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61274,42 +49964,201 @@ const classtable_elt_t VFT_ReduceAction193[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction193 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction193___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction193 < ReduceAction193: superclass init_table position */},
-  {(bigint) parser___ReduceAction193___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AType___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AType___visit_all},
+  {(bigint) 1 /* 58: AType < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AType___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AType < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) mmbuilder___AType___check_visibility},
+  {(bigint) typing___AType___is_typed},
+  {(bigint) typing___AType___stype},
+  {(bigint) syntax_base___AType___get_local_class},
+  {(bigint) syntax_base___AType___get_unchecked_stype},
+  {(bigint) syntax_base___AType___get_stype},
+  {(bigint) syntax_base___AType___check_conform},
+  {(bigint) parser_prod___AType___empty_init},
+  {(bigint) parser_prod___AType___init_atype},
+  {(bigint) 3 /* 76: AType < AType: superclass init_table position */},
+  {(bigint) parser_nodes___AType___n_kwnullable},
+  {(bigint) parser_nodes___AType___n_id},
+  {(bigint) parser_nodes___AType___n_types},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction193(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AType::_parent */
+/* 3: Attribute AType::_location */
+/* 4: Attribute AType::_first_location */
+/* 5: Attribute AType::_last_location */
+/* 6: Attribute AType::_stype_cache */
+/* 7: Attribute AType::_stype_cached */
+/* 8: Attribute AType::_n_kwnullable */
+/* 9: Attribute AType::_n_id */
+/* 10: Attribute AType::_n_types */
+/* 11: Attribute AType::_stype */
+void INIT_ATTRIBUTES__AType(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AType;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:590 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_syntax_base___AType____stype_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//syntax_base.nit:591 */
+  REGB0 = TAG_Bool(false);
+  ATTR_syntax_base___AType____stype_cached(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:574 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:576 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AType____n_types(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AType(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction193;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction193(val_t self, char *from) {
-}
-val_t NEW_ReduceAction193_parser___ReduceAction193___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction193();
-  parser___ReduceAction193___init(self, init_table);
-  CHECKNEW_ReduceAction193(self, "parser::ReduceAction193::init for ReduceAction193");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_AType;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AType(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AType;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___AType____stype_cached(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stype_cached", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AType____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction194[48] = {
-  {(bigint) 2759 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction194 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction194 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2759 /* 3: ReduceAction194 < ReduceAction194: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AType_parser_prod___AType___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2948;
+  fra.me.meth = LOCATE_NEW_AType_parser_prod___AType___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:2948 */
+  fra.me.REG[0] = NEW_AType();
+  INIT_ATTRIBUTES__AType(fra.me.REG[0]);
+  parser_prod___AType___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AType(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AType_parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2950;
+  fra.me.meth = LOCATE_NEW_AType_parser_prod___AType___init_atype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2950 */
+  fra.me.REG[3] = NEW_AType();
+  INIT_ATTRIBUTES__AType(fra.me.REG[3]);
+  parser_prod___AType___init_atype(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AType(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AType_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AType_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AType();
+  INIT_ATTRIBUTES__AType(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AType(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ALabel[72] = {
+  {(bigint) 2835 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ALabel < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ALabel < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ALabel < Prod: superclass typecheck marker */},
+  {(bigint) 2835 /* 5: ALabel < ALabel: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61321,14 +50170,9 @@ const classtable_elt_t VFT_ReduceAction194[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction194 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ALabel < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61336,7 +50180,6 @@ const classtable_elt_t VFT_ReduceAction194[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61344,43 +50187,167 @@ const classtable_elt_t VFT_ReduceAction194[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction194 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction194___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction194 < ReduceAction194: superclass init_table position */},
-  {(bigint) parser___ReduceAction194___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction194(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ALabel___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ALabel___visit_all},
+  {(bigint) 1 /* 58: ALabel < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ALabel < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) parser_prod___ALabel___empty_init},
+  {(bigint) parser_prod___ALabel___init_alabel},
+  {(bigint) 3 /* 69: ALabel < ALabel: superclass init_table position */},
+  {(bigint) parser_nodes___ALabel___n_kwlabel},
+  {(bigint) parser_nodes___ALabel___n_id},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ALabel::_parent */
+/* 3: Attribute ALabel::_location */
+/* 4: Attribute ALabel::_first_location */
+/* 5: Attribute ALabel::_last_location */
+/* 6: Attribute ALabel::_n_kwlabel */
+/* 7: Attribute ALabel::_n_id */
+void INIT_ATTRIBUTES__ALabel(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ALabel;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALabel(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction194;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction194(val_t self, char *from) {
-}
-val_t NEW_ReduceAction194_parser___ReduceAction194___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction194();
-  parser___ReduceAction194___init(self, init_table);
-  CHECKNEW_ReduceAction194(self, "parser::ReduceAction194::init for ReduceAction194");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_ALabel;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ALabel(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ALabel;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALabel____n_kwlabel(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwlabel", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALabel____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction195[48] = {
-  {(bigint) 2755 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction195 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction195 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2755 /* 3: ReduceAction195 < ReduceAction195: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ALabel_parser_prod___ALabel___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3018;
+  fra.me.meth = LOCATE_NEW_ALabel_parser_prod___ALabel___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3018 */
+  fra.me.REG[0] = NEW_ALabel();
+  INIT_ATTRIBUTES__ALabel(fra.me.REG[0]);
+  parser_prod___ALabel___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALabel(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALabel_parser_prod___ALabel___init_alabel(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3020;
+  fra.me.meth = LOCATE_NEW_ALabel_parser_prod___ALabel___init_alabel;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3020 */
+  fra.me.REG[2] = NEW_ALabel();
+  INIT_ATTRIBUTES__ALabel(fra.me.REG[2]);
+  parser_prod___ALabel___init_alabel(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ALabel(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ALabel_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ALabel_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ALabel();
+  INIT_ATTRIBUTES__ALabel(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALabel(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AExpr[79] = {
+  {(bigint) 2847 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61391,14 +50358,9 @@ const classtable_elt_t VFT_ReduceAction195[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction195 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61406,7 +50368,6 @@ const classtable_elt_t VFT_ReduceAction195[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61414,44 +50375,137 @@ const classtable_elt_t VFT_ReduceAction195[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction195 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction195___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction195 < ReduceAction195: superclass init_table position */},
-  {(bigint) parser___ReduceAction195___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction195(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AExpr::_parent */
+/* 3: Attribute AExpr::_location */
+/* 4: Attribute AExpr::_first_location */
+/* 5: Attribute AExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AExpr::_is_typed */
+/* 8: Attribute AExpr::_stype */
+/* 9: Attribute AExpr::_if_true_flow_ctx */
+/* 10: Attribute AExpr::_if_false_flow_ctx */
+void INIT_ATTRIBUTES__AExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction195;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction195(val_t self, char *from) {
-}
-val_t NEW_ReduceAction195_parser___ReduceAction195___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction195();
-  parser___ReduceAction195___init(self, init_table);
-  CHECKNEW_ReduceAction195(self, "parser::ReduceAction195::init for ReduceAction195");
-  return self;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_AExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction196[48] = {
-  {(bigint) 2751 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction196 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction196 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2751 /* 3: ReduceAction196 < ReduceAction196: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AExpr();
+  INIT_ATTRIBUTES__AExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ABlockExpr[83] = {
+  {(bigint) 3211 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ABlockExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ABlockExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ABlockExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: ABlockExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3211 /* 7: ABlockExpr < ABlockExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61461,14 +50515,9 @@ const classtable_elt_t VFT_ReduceAction196[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction196 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ABlockExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61476,7 +50525,6 @@ const classtable_elt_t VFT_ReduceAction196[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61484,44 +50532,191 @@ const classtable_elt_t VFT_ReduceAction196[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction196 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction196___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction196 < ReduceAction196: superclass init_table position */},
-  {(bigint) parser___ReduceAction196___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ABlockExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ABlockExpr___visit_all},
+  {(bigint) 1 /* 58: ABlockExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ABlockExpr___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ABlockExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ABlockExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ABlockExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___ABlockExpr___empty_init},
+  {(bigint) parser_prod___ABlockExpr___init_ablockexpr},
+  {(bigint) 4 /* 81: ABlockExpr < ABlockExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABlockExpr___n_expr},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction196(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ABlockExpr::_parent */
+/* 3: Attribute ABlockExpr::_location */
+/* 4: Attribute ABlockExpr::_first_location */
+/* 5: Attribute ABlockExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ABlockExpr::_is_typed */
+/* 8: Attribute ABlockExpr::_stype */
+/* 9: Attribute ABlockExpr::_if_true_flow_ctx */
+/* 10: Attribute ABlockExpr::_if_false_flow_ctx */
+/* 11: Attribute ABlockExpr::_n_expr */
+void INIT_ATTRIBUTES__ABlockExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ABlockExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:586 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABlockExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction196;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction196(val_t self, char *from) {
-}
-val_t NEW_ReduceAction196_parser___ReduceAction196___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction196();
-  parser___ReduceAction196___init(self, init_table);
-  CHECKNEW_ReduceAction196(self, "parser::ReduceAction196::init for ReduceAction196");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_ABlockExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ABlockExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ABlockExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABlockExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction197[48] = {
-  {(bigint) 2747 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction197 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction197 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2747 /* 3: ReduceAction197 < ReduceAction197: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ABlockExpr_parser_prod___ABlockExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3063;
+  fra.me.meth = LOCATE_NEW_ABlockExpr_parser_prod___ABlockExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3063 */
+  fra.me.REG[0] = NEW_ABlockExpr();
+  INIT_ATTRIBUTES__ABlockExpr(fra.me.REG[0]);
+  parser_prod___ABlockExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABlockExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3065;
+  fra.me.meth = LOCATE_NEW_ABlockExpr_parser_prod___ABlockExpr___init_ablockexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:3065 */
+  fra.me.REG[1] = NEW_ABlockExpr();
+  INIT_ATTRIBUTES__ABlockExpr(fra.me.REG[1]);
+  parser_prod___ABlockExpr___init_ablockexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABlockExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ABlockExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ABlockExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ABlockExpr();
+  INIT_ATTRIBUTES__ABlockExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABlockExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AVardeclExpr[88] = {
+  {(bigint) 2987 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AVardeclExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AVardeclExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AVardeclExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AVardeclExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 2987 /* 7: AVardeclExpr < AVardeclExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61531,14 +50726,9 @@ const classtable_elt_t VFT_ReduceAction197[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction197 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AVardeclExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61546,7 +50736,6 @@ const classtable_elt_t VFT_ReduceAction197[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61554,44 +50743,220 @@ const classtable_elt_t VFT_ReduceAction197[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction197 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction197___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction197 < ReduceAction197: superclass init_table position */},
-  {(bigint) parser___ReduceAction197___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AVardeclExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AVardeclExpr___visit_all},
+  {(bigint) 1 /* 58: AVardeclExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AVardeclExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AVardeclExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AVardeclExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AVardeclExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) typing___AVardeclExpr___variable},
+  {(bigint) parser_prod___AVardeclExpr___empty_init},
+  {(bigint) parser_prod___AVardeclExpr___init_avardeclexpr},
+  {(bigint) 4 /* 82: AVardeclExpr < AVardeclExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AVardeclExpr___n_kwvar},
+  {(bigint) parser_nodes___AVardeclExpr___n_id},
+  {(bigint) parser_nodes___AVardeclExpr___n_type},
+  {(bigint) parser_nodes___AVardeclExpr___n_assign},
+  {(bigint) parser_nodes___AVardeclExpr___n_expr},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction197(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AVardeclExpr::_parent */
+/* 3: Attribute AVardeclExpr::_location */
+/* 4: Attribute AVardeclExpr::_first_location */
+/* 5: Attribute AVardeclExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AVardeclExpr::_is_typed */
+/* 8: Attribute AVardeclExpr::_stype */
+/* 9: Attribute AVardeclExpr::_if_true_flow_ctx */
+/* 10: Attribute AVardeclExpr::_if_false_flow_ctx */
+/* 11: Attribute AVardeclExpr::_variable */
+/* 12: Attribute AVardeclExpr::_n_kwvar */
+/* 13: Attribute AVardeclExpr::_n_id */
+/* 14: Attribute AVardeclExpr::_n_type */
+/* 15: Attribute AVardeclExpr::_n_assign */
+/* 16: Attribute AVardeclExpr::_n_expr */
+void INIT_ATTRIBUTES__AVardeclExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AVardeclExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:592 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:593 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:594 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AVardeclExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction197;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction197(val_t self, char *from) {
-}
-val_t NEW_ReduceAction197_parser___ReduceAction197___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction197();
-  parser___ReduceAction197___init(self, init_table);
-  CHECKNEW_ReduceAction197(self, "parser::ReduceAction197::init for ReduceAction197");
-  return self;
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_AVardeclExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AVardeclExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AVardeclExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwvar", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVardeclExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction198[48] = {
-  {(bigint) 2743 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction198 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction198 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2743 /* 3: ReduceAction198 < ReduceAction198: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AVardeclExpr_parser_prod___AVardeclExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3101;
+  fra.me.meth = LOCATE_NEW_AVardeclExpr_parser_prod___AVardeclExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3101 */
+  fra.me.REG[0] = NEW_AVardeclExpr();
+  INIT_ATTRIBUTES__AVardeclExpr(fra.me.REG[0]);
+  parser_prod___AVardeclExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AVardeclExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3103;
+  fra.me.meth = LOCATE_NEW_AVardeclExpr_parser_prod___AVardeclExpr___init_avardeclexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:3103 */
+  fra.me.REG[5] = NEW_AVardeclExpr();
+  INIT_ATTRIBUTES__AVardeclExpr(fra.me.REG[5]);
+  parser_prod___AVardeclExpr___init_avardeclexpr(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_AVardeclExpr(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+val_t NEW_AVardeclExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AVardeclExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AVardeclExpr();
+  INIT_ATTRIBUTES__AVardeclExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AVardeclExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AReturnExpr[84] = {
+  {(bigint) 3043 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AReturnExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AReturnExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AReturnExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AReturnExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3043 /* 7: AReturnExpr < AReturnExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61601,14 +50966,9 @@ const classtable_elt_t VFT_ReduceAction198[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction198 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AReturnExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61616,7 +50976,6 @@ const classtable_elt_t VFT_ReduceAction198[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61624,42 +50983,191 @@ const classtable_elt_t VFT_ReduceAction198[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction198 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction198___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction198 < ReduceAction198: superclass init_table position */},
-  {(bigint) parser___ReduceAction198___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AReturnExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AReturnExpr___visit_all},
+  {(bigint) 1 /* 58: AReturnExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AReturnExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AReturnExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AReturnExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AReturnExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___AReturnExpr___empty_init},
+  {(bigint) parser_prod___AReturnExpr___init_areturnexpr},
+  {(bigint) 4 /* 81: AReturnExpr < AReturnExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AReturnExpr___n_kwreturn},
+  {(bigint) parser_nodes___AReturnExpr___n_expr},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction198(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AReturnExpr::_parent */
+/* 3: Attribute AReturnExpr::_location */
+/* 4: Attribute AReturnExpr::_first_location */
+/* 5: Attribute AReturnExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AReturnExpr::_is_typed */
+/* 8: Attribute AReturnExpr::_stype */
+/* 9: Attribute AReturnExpr::_if_true_flow_ctx */
+/* 10: Attribute AReturnExpr::_if_false_flow_ctx */
+/* 11: Attribute AReturnExpr::_n_kwreturn */
+/* 12: Attribute AReturnExpr::_n_expr */
+void INIT_ATTRIBUTES__AReturnExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AReturnExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:598 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:599 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AReturnExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction198;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction198(val_t self, char *from) {
-}
-val_t NEW_ReduceAction198_parser___ReduceAction198___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction198();
-  parser___ReduceAction198___init(self, init_table);
-  CHECKNEW_ReduceAction198(self, "parser::ReduceAction198::init for ReduceAction198");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AReturnExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AReturnExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AReturnExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction199[48] = {
-  {(bigint) 2739 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction199 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction199 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2739 /* 3: ReduceAction199 < ReduceAction199: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AReturnExpr_parser_prod___AReturnExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3200;
+  fra.me.meth = LOCATE_NEW_AReturnExpr_parser_prod___AReturnExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3200 */
+  fra.me.REG[0] = NEW_AReturnExpr();
+  INIT_ATTRIBUTES__AReturnExpr(fra.me.REG[0]);
+  parser_prod___AReturnExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AReturnExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3202;
+  fra.me.meth = LOCATE_NEW_AReturnExpr_parser_prod___AReturnExpr___init_areturnexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3202 */
+  fra.me.REG[2] = NEW_AReturnExpr();
+  INIT_ATTRIBUTES__AReturnExpr(fra.me.REG[2]);
+  parser_prod___AReturnExpr___init_areturnexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AReturnExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AReturnExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AReturnExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AReturnExpr();
+  INIT_ATTRIBUTES__AReturnExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AReturnExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ALabelable[69] = {
+  {(bigint) 2831 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ALabelable < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ALabelable < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ALabelable < Prod: superclass typecheck marker */},
+  {(bigint) 2831 /* 5: ALabelable < ALabelable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61671,14 +51179,9 @@ const classtable_elt_t VFT_ReduceAction199[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction199 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ALabelable < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61686,7 +51189,6 @@ const classtable_elt_t VFT_ReduceAction199[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61694,45 +51196,116 @@ const classtable_elt_t VFT_ReduceAction199[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction199 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction199___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction199 < ReduceAction199: superclass init_table position */},
-  {(bigint) parser___ReduceAction199___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction199(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: ALabelable < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ALabelable < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 3 /* 67: ALabelable < ALabelable: superclass init_table position */},
+  {(bigint) parser_nodes___ALabelable___n_label},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ALabelable::_parent */
+/* 3: Attribute ALabelable::_location */
+/* 4: Attribute ALabelable::_first_location */
+/* 5: Attribute ALabelable::_last_location */
+/* 6: Attribute ALabelable::_n_label */
+void INIT_ATTRIBUTES__ALabelable(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ALabelable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:603 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALabelable(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction199;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction199(val_t self, char *from) {
-}
-val_t NEW_ReduceAction199_parser___ReduceAction199___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction199();
-  parser___ReduceAction199___init(self, init_table);
-  CHECKNEW_ReduceAction199(self, "parser::ReduceAction199::init for ReduceAction199");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction200[48] = {
-  {(bigint) 2727 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction200 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction200 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2727 /* 3: ReduceAction200 < ReduceAction200: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_ALabelable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ALabelable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ALabelable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALabelable_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ALabelable_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ALabelable();
+  INIT_ATTRIBUTES__ALabelable(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALabelable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ABreakExpr[88] = {
+  {(bigint) 3419 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ABreakExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ABreakExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ABreakExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2831 /* 5: ABreakExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ABreakExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3167 /* 7: ABreakExpr < AEscapeExpr: superclass typecheck marker */},
+  {(bigint) 3419 /* 8: ABreakExpr < ABreakExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61741,14 +51314,9 @@ const classtable_elt_t VFT_ReduceAction200[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction200 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: ABreakExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61756,7 +51324,6 @@ const classtable_elt_t VFT_ReduceAction200[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61764,44 +51331,205 @@ const classtable_elt_t VFT_ReduceAction200[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction200 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction200___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction200 < ReduceAction200: superclass init_table position */},
-  {(bigint) parser___ReduceAction200___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ABreakExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ABreakExpr___visit_all},
+  {(bigint) 2 /* 58: ABreakExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ABreakExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 65: ABreakExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 4 /* 67: ABreakExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser_nodes___ALabelable___n_label},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 5 /* 72: ABreakExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ABreakExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 79: ABreakExpr < AEscapeExpr: superclass init_table position */},
+  {(bigint) scope___AEscapeExpr___escapable},
+  {(bigint) scope___ABreakExpr___kwname},
+  {(bigint) scope___AEscapeExpr___compute_escapable_block},
+  {(bigint) parser_prod___ABreakExpr___empty_init},
+  {(bigint) parser_prod___ABreakExpr___init_abreakexpr},
+  {(bigint) 6 /* 85: ABreakExpr < ABreakExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABreakExpr___n_kwbreak},
+  {(bigint) parser_nodes___ABreakExpr___n_expr},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction200(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ABreakExpr::_parent */
+/* 3: Attribute ABreakExpr::_location */
+/* 4: Attribute ABreakExpr::_first_location */
+/* 5: Attribute ABreakExpr::_last_location */
+/* 6: Attribute ABreakExpr::_n_label */
+/* 7: Attribute ABreakExpr::_is_typed */
+/* 8: Attribute ABreakExpr::_stype */
+/* 9: Attribute ABreakExpr::_if_true_flow_ctx */
+/* 10: Attribute ABreakExpr::_if_false_flow_ctx */
+/* 11: Attribute ABreakExpr::_escapable */
+/* 12: Attribute ABreakExpr::_n_kwbreak */
+/* 13: Attribute ABreakExpr::_n_expr */
+void INIT_ATTRIBUTES__ABreakExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ABreakExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:603 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:609 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABreakExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction200;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction200(val_t self, char *from) {
-}
-val_t NEW_ReduceAction200_parser___ReduceAction200___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction200();
-  parser___ReduceAction200___init(self, init_table);
-  CHECKNEW_ReduceAction200(self, "parser::ReduceAction200::init for ReduceAction200");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction201[48] = {
-  {(bigint) 2723 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction201 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction201 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2723 /* 3: ReduceAction201 < ReduceAction201: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_ABreakExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ABreakExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ABreakExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABreakExpr_parser_prod___ABreakExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3253;
+  fra.me.meth = LOCATE_NEW_ABreakExpr_parser_prod___ABreakExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3253 */
+  fra.me.REG[0] = NEW_ABreakExpr();
+  INIT_ATTRIBUTES__ABreakExpr(fra.me.REG[0]);
+  parser_prod___ABreakExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABreakExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3255;
+  fra.me.meth = LOCATE_NEW_ABreakExpr_parser_prod___ABreakExpr___init_abreakexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3255 */
+  fra.me.REG[3] = NEW_ABreakExpr();
+  INIT_ATTRIBUTES__ABreakExpr(fra.me.REG[3]);
+  parser_prod___ABreakExpr___init_abreakexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_ABreakExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_ABreakExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ABreakExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ABreakExpr();
+  INIT_ATTRIBUTES__ABreakExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABreakExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAbortExpr[83] = {
+  {(bigint) 3255 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAbortExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAbortExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAbortExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AAbortExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3255 /* 7: AAbortExpr < AAbortExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61811,14 +51539,9 @@ const classtable_elt_t VFT_ReduceAction201[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction201 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAbortExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61826,7 +51549,6 @@ const classtable_elt_t VFT_ReduceAction201[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61834,45 +51556,188 @@ const classtable_elt_t VFT_ReduceAction201[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction201 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction201___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction201 < ReduceAction201: superclass init_table position */},
-  {(bigint) parser___ReduceAction201___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AAbortExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AAbortExpr___visit_all},
+  {(bigint) 1 /* 58: AAbortExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AAbortExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAbortExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAbortExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AAbortExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___AAbortExpr___empty_init},
+  {(bigint) parser_prod___AAbortExpr___init_aabortexpr},
+  {(bigint) 4 /* 81: AAbortExpr < AAbortExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAbortExpr___n_kwabort},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction201(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AAbortExpr::_parent */
+/* 3: Attribute AAbortExpr::_location */
+/* 4: Attribute AAbortExpr::_first_location */
+/* 5: Attribute AAbortExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAbortExpr::_is_typed */
+/* 8: Attribute AAbortExpr::_stype */
+/* 9: Attribute AAbortExpr::_if_true_flow_ctx */
+/* 10: Attribute AAbortExpr::_if_false_flow_ctx */
+/* 11: Attribute AAbortExpr::_n_kwabort */
+void INIT_ATTRIBUTES__AAbortExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAbortExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAbortExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction201;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction201(val_t self, char *from) {
-}
-val_t NEW_ReduceAction201_parser___ReduceAction201___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction201();
-  parser___ReduceAction201___init(self, init_table);
-  CHECKNEW_ReduceAction201(self, "parser::ReduceAction201::init for ReduceAction201");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_AAbortExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAbortExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAbortExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwabort", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction202[48] = {
-  {(bigint) 2719 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction202 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction202 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2719 /* 3: ReduceAction202 < ReduceAction202: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAbortExpr_parser_prod___AAbortExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3320;
+  fra.me.meth = LOCATE_NEW_AAbortExpr_parser_prod___AAbortExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3320 */
+  fra.me.REG[0] = NEW_AAbortExpr();
+  INIT_ATTRIBUTES__AAbortExpr(fra.me.REG[0]);
+  parser_prod___AAbortExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AAbortExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3322;
+  fra.me.meth = LOCATE_NEW_AAbortExpr_parser_prod___AAbortExpr___init_aabortexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:3322 */
+  fra.me.REG[1] = NEW_AAbortExpr();
+  INIT_ATTRIBUTES__AAbortExpr(fra.me.REG[1]);
+  parser_prod___AAbortExpr___init_aabortexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAbortExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AAbortExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAbortExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAbortExpr();
+  INIT_ATTRIBUTES__AAbortExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAbortExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AContinueExpr[88] = {
+  {(bigint) 3407 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AContinueExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AContinueExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AContinueExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2831 /* 5: AContinueExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AContinueExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3167 /* 7: AContinueExpr < AEscapeExpr: superclass typecheck marker */},
+  {(bigint) 3407 /* 8: AContinueExpr < AContinueExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61881,14 +51746,9 @@ const classtable_elt_t VFT_ReduceAction202[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction202 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: AContinueExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61896,7 +51756,6 @@ const classtable_elt_t VFT_ReduceAction202[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61904,45 +51763,204 @@ const classtable_elt_t VFT_ReduceAction202[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction202 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction202___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction202 < ReduceAction202: superclass init_table position */},
-  {(bigint) parser___ReduceAction202___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AContinueExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AContinueExpr___visit_all},
+  {(bigint) 2 /* 58: AContinueExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AContinueExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 65: AContinueExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 4 /* 67: AContinueExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser_nodes___ALabelable___n_label},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 5 /* 72: AContinueExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AContinueExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 79: AContinueExpr < AEscapeExpr: superclass init_table position */},
+  {(bigint) scope___AEscapeExpr___escapable},
+  {(bigint) scope___AContinueExpr___kwname},
+  {(bigint) scope___AEscapeExpr___compute_escapable_block},
+  {(bigint) parser_prod___AContinueExpr___empty_init},
+  {(bigint) parser_prod___AContinueExpr___init_acontinueexpr},
+  {(bigint) 6 /* 85: AContinueExpr < AContinueExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AContinueExpr___n_kwcontinue},
+  {(bigint) parser_nodes___AContinueExpr___n_expr},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction202(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AContinueExpr::_parent */
+/* 3: Attribute AContinueExpr::_location */
+/* 4: Attribute AContinueExpr::_first_location */
+/* 5: Attribute AContinueExpr::_last_location */
+/* 6: Attribute AContinueExpr::_n_label */
+/* 7: Attribute AContinueExpr::_is_typed */
+/* 8: Attribute AContinueExpr::_stype */
+/* 9: Attribute AContinueExpr::_if_true_flow_ctx */
+/* 10: Attribute AContinueExpr::_if_false_flow_ctx */
+/* 11: Attribute AContinueExpr::_escapable */
+/* 12: Attribute AContinueExpr::_n_kwcontinue */
+/* 13: Attribute AContinueExpr::_n_expr */
+void INIT_ATTRIBUTES__AContinueExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AContinueExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:618 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:603 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:619 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AContinueExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction202;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction202(val_t self, char *from) {
-}
-val_t NEW_ReduceAction202_parser___ReduceAction202___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction202();
-  parser___ReduceAction202___init(self, init_table);
-  CHECKNEW_ReduceAction202(self, "parser::ReduceAction202::init for ReduceAction202");
-  return self;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_AContinueExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AContinueExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AContinueExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction203[48] = {
-  {(bigint) 2715 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction203 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction203 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2715 /* 3: ReduceAction203 < ReduceAction203: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AContinueExpr_parser_prod___AContinueExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3351;
+  fra.me.meth = LOCATE_NEW_AContinueExpr_parser_prod___AContinueExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3351 */
+  fra.me.REG[0] = NEW_AContinueExpr();
+  INIT_ATTRIBUTES__AContinueExpr(fra.me.REG[0]);
+  parser_prod___AContinueExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AContinueExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3353;
+  fra.me.meth = LOCATE_NEW_AContinueExpr_parser_prod___AContinueExpr___init_acontinueexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3353 */
+  fra.me.REG[3] = NEW_AContinueExpr();
+  INIT_ATTRIBUTES__AContinueExpr(fra.me.REG[3]);
+  parser_prod___AContinueExpr___init_acontinueexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AContinueExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AContinueExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AContinueExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AContinueExpr();
+  INIT_ATTRIBUTES__AContinueExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AContinueExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ADoExpr[88] = {
+  {(bigint) 3395 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ADoExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ADoExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ADoExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2831 /* 5: ADoExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ADoExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3247 /* 7: ADoExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 3395 /* 8: ADoExpr < ADoExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61951,14 +51969,9 @@ const classtable_elt_t VFT_ReduceAction203[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction203 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: ADoExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -61966,7 +51979,6 @@ const classtable_elt_t VFT_ReduceAction203[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -61974,44 +51986,205 @@ const classtable_elt_t VFT_ReduceAction203[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction203 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction203___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction203 < ReduceAction203: superclass init_table position */},
-  {(bigint) parser___ReduceAction203___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ADoExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ADoExpr___visit_all},
+  {(bigint) 2 /* 58: ADoExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ADoExpr___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 65: ADoExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 5 /* 67: ADoExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser_nodes___ALabelable___n_label},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 4 /* 72: ADoExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ADoExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 79: ADoExpr < AAbsControl: superclass init_table position */},
+  {(bigint) typing___AAbsControl___escapable},
+  {(bigint) typing___AAbsControl___process_control},
+  {(bigint) typing___ADoExpr___process_control_inside},
+  {(bigint) parser_prod___ADoExpr___empty_init},
+  {(bigint) parser_prod___ADoExpr___init_adoexpr},
+  {(bigint) 6 /* 85: ADoExpr < ADoExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ADoExpr___n_kwdo},
+  {(bigint) parser_nodes___ADoExpr___n_block},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction203(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ADoExpr::_parent */
+/* 3: Attribute ADoExpr::_location */
+/* 4: Attribute ADoExpr::_first_location */
+/* 5: Attribute ADoExpr::_last_location */
+/* 6: Attribute ADoExpr::_n_label */
+/* 7: Attribute ADoExpr::_is_typed */
+/* 8: Attribute ADoExpr::_stype */
+/* 9: Attribute ADoExpr::_if_true_flow_ctx */
+/* 10: Attribute ADoExpr::_if_false_flow_ctx */
+/* 11: Attribute ADoExpr::_escapable */
+/* 12: Attribute ADoExpr::_n_kwdo */
+/* 13: Attribute ADoExpr::_n_block */
+void INIT_ATTRIBUTES__ADoExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ADoExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:625 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:603 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ADoExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction203;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction203(val_t self, char *from) {
-}
-val_t NEW_ReduceAction203_parser___ReduceAction203___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction203();
-  parser___ReduceAction203___init(self, init_table);
-  CHECKNEW_ReduceAction203(self, "parser::ReduceAction203::init for ReduceAction203");
-  return self;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_ADoExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ADoExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ADoExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction204[48] = {
-  {(bigint) 2711 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction204 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction204 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2711 /* 3: ReduceAction204 < ReduceAction204: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ADoExpr_parser_prod___ADoExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3422;
+  fra.me.meth = LOCATE_NEW_ADoExpr_parser_prod___ADoExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3422 */
+  fra.me.REG[0] = NEW_ADoExpr();
+  INIT_ATTRIBUTES__ADoExpr(fra.me.REG[0]);
+  parser_prod___ADoExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ADoExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3424;
+  fra.me.meth = LOCATE_NEW_ADoExpr_parser_prod___ADoExpr___init_adoexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3424 */
+  fra.me.REG[3] = NEW_ADoExpr();
+  INIT_ATTRIBUTES__ADoExpr(fra.me.REG[3]);
+  parser_prod___ADoExpr___init_adoexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_ADoExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_ADoExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ADoExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ADoExpr();
+  INIT_ATTRIBUTES__ADoExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ADoExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AIfExpr[86] = {
+  {(bigint) 3143 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AIfExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AIfExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AIfExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AIfExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3143 /* 7: AIfExpr < AIfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -62021,14 +52194,9 @@ const classtable_elt_t VFT_ReduceAction204[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction204 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AIfExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62036,7 +52204,6 @@ const classtable_elt_t VFT_ReduceAction204[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62044,44 +52211,211 @@ const classtable_elt_t VFT_ReduceAction204[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction204 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction204___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction204 < ReduceAction204: superclass init_table position */},
-  {(bigint) parser___ReduceAction204___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AIfExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AIfExpr___visit_all},
+  {(bigint) 1 /* 58: AIfExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___AIfExpr___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AIfExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AIfExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AIfExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___AIfExpr___empty_init},
+  {(bigint) parser_prod___AIfExpr___init_aifexpr},
+  {(bigint) 4 /* 81: AIfExpr < AIfExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AIfExpr___n_kwif},
+  {(bigint) parser_nodes___AIfExpr___n_expr},
+  {(bigint) parser_nodes___AIfExpr___n_then},
+  {(bigint) parser_nodes___AIfExpr___n_else},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction204(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AIfExpr::_parent */
+/* 3: Attribute AIfExpr::_location */
+/* 4: Attribute AIfExpr::_first_location */
+/* 5: Attribute AIfExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AIfExpr::_is_typed */
+/* 8: Attribute AIfExpr::_stype */
+/* 9: Attribute AIfExpr::_if_true_flow_ctx */
+/* 10: Attribute AIfExpr::_if_false_flow_ctx */
+/* 11: Attribute AIfExpr::_n_kwif */
+/* 12: Attribute AIfExpr::_n_expr */
+/* 13: Attribute AIfExpr::_n_then */
+/* 14: Attribute AIfExpr::_n_else */
+void INIT_ATTRIBUTES__AIfExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AIfExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:631 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:632 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AIfExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction204;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction204(val_t self, char *from) {
-}
-val_t NEW_ReduceAction204_parser___ReduceAction204___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction204();
-  parser___ReduceAction204___init(self, init_table);
-  CHECKNEW_ReduceAction204(self, "parser::ReduceAction204::init for ReduceAction204");
-  return self;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_AIfExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AIfExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AIfExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction205[48] = {
-  {(bigint) 2707 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction205 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction205 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2707 /* 3: ReduceAction205 < ReduceAction205: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AIfExpr_parser_prod___AIfExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3489;
+  fra.me.meth = LOCATE_NEW_AIfExpr_parser_prod___AIfExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3489 */
+  fra.me.REG[0] = NEW_AIfExpr();
+  INIT_ATTRIBUTES__AIfExpr(fra.me.REG[0]);
+  parser_prod___AIfExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AIfExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3491;
+  fra.me.meth = LOCATE_NEW_AIfExpr_parser_prod___AIfExpr___init_aifexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:3491 */
+  fra.me.REG[4] = NEW_AIfExpr();
+  INIT_ATTRIBUTES__AIfExpr(fra.me.REG[4]);
+  parser_prod___AIfExpr___init_aifexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_AIfExpr(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+val_t NEW_AIfExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AIfExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AIfExpr();
+  INIT_ATTRIBUTES__AIfExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AIfExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AIfexprExpr[88] = {
+  {(bigint) 3139 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AIfexprExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AIfexprExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AIfexprExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AIfexprExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3139 /* 7: AIfexprExpr < AIfexprExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -62091,14 +52425,9 @@ const classtable_elt_t VFT_ReduceAction205[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction205 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AIfexprExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62106,7 +52435,6 @@ const classtable_elt_t VFT_ReduceAction205[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62114,45 +52442,233 @@ const classtable_elt_t VFT_ReduceAction205[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction205 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction205___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction205 < ReduceAction205: superclass init_table position */},
-  {(bigint) parser___ReduceAction205___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AIfexprExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AIfexprExpr___visit_all},
+  {(bigint) 1 /* 58: AIfexprExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___AIfexprExpr___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AIfexprExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AIfexprExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AIfexprExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___AIfexprExpr___empty_init},
+  {(bigint) parser_prod___AIfexprExpr___init_aifexprexpr},
+  {(bigint) 4 /* 81: AIfexprExpr < AIfexprExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AIfexprExpr___n_kwif},
+  {(bigint) parser_nodes___AIfexprExpr___n_expr},
+  {(bigint) parser_nodes___AIfexprExpr___n_kwthen},
+  {(bigint) parser_nodes___AIfexprExpr___n_then},
+  {(bigint) parser_nodes___AIfexprExpr___n_kwelse},
+  {(bigint) parser_nodes___AIfexprExpr___n_else},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction205(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AIfexprExpr::_parent */
+/* 3: Attribute AIfexprExpr::_location */
+/* 4: Attribute AIfexprExpr::_first_location */
+/* 5: Attribute AIfexprExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AIfexprExpr::_is_typed */
+/* 8: Attribute AIfexprExpr::_stype */
+/* 9: Attribute AIfexprExpr::_if_true_flow_ctx */
+/* 10: Attribute AIfexprExpr::_if_false_flow_ctx */
+/* 11: Attribute AIfexprExpr::_n_kwif */
+/* 12: Attribute AIfexprExpr::_n_expr */
+/* 13: Attribute AIfexprExpr::_n_kwthen */
+/* 14: Attribute AIfexprExpr::_n_then */
+/* 15: Attribute AIfexprExpr::_n_kwelse */
+/* 16: Attribute AIfexprExpr::_n_else */
+void INIT_ATTRIBUTES__AIfexprExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AIfexprExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AIfexprExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction205;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction205(val_t self, char *from) {
-}
-val_t NEW_ReduceAction205_parser___ReduceAction205___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction205();
-  parser___ReduceAction205___init(self, init_table);
-  CHECKNEW_ReduceAction205(self, "parser::ReduceAction205::init for ReduceAction205");
-  return self;
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_AIfexprExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AIfexprExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AIfexprExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwif", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwthen", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_then(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_then", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwelse", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIfexprExpr____n_else(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_else", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction206[48] = {
-  {(bigint) 2703 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction206 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction206 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2703 /* 3: ReduceAction206 < ReduceAction206: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AIfexprExpr_parser_prod___AIfexprExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3570;
+  fra.me.meth = LOCATE_NEW_AIfexprExpr_parser_prod___AIfexprExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3570 */
+  fra.me.REG[0] = NEW_AIfexprExpr();
+  INIT_ATTRIBUTES__AIfexprExpr(fra.me.REG[0]);
+  parser_prod___AIfexprExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AIfexprExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3572;
+  fra.me.meth = LOCATE_NEW_AIfexprExpr_parser_prod___AIfexprExpr___init_aifexprexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:3572 */
+  fra.me.REG[6] = NEW_AIfexprExpr();
+  INIT_ATTRIBUTES__AIfexprExpr(fra.me.REG[6]);
+  parser_prod___AIfexprExpr___init_aifexprexpr(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
+  CHECKNEW_AIfexprExpr(fra.me.REG[6]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[6];
+}
+val_t NEW_AIfexprExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AIfexprExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AIfexprExpr();
+  INIT_ATTRIBUTES__AIfexprExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AIfexprExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AWhileExpr[90] = {
+  {(bigint) 3299 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AWhileExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AWhileExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AWhileExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2831 /* 5: AWhileExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AWhileExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3247 /* 7: AWhileExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 3299 /* 8: AWhileExpr < AWhileExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -62161,14 +52677,9 @@ const classtable_elt_t VFT_ReduceAction206[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction206 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: AWhileExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62176,7 +52687,6 @@ const classtable_elt_t VFT_ReduceAction206[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62184,45 +52694,224 @@ const classtable_elt_t VFT_ReduceAction206[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction206 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction206___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction206 < ReduceAction206: superclass init_table position */},
-  {(bigint) parser___ReduceAction206___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AWhileExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AWhileExpr___visit_all},
+  {(bigint) 2 /* 58: AWhileExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___AWhileExpr___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 65: AWhileExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 5 /* 67: AWhileExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser_nodes___ALabelable___n_label},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 4 /* 72: AWhileExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AWhileExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 79: AWhileExpr < AAbsControl: superclass init_table position */},
+  {(bigint) typing___AAbsControl___escapable},
+  {(bigint) typing___AAbsControl___process_control},
+  {(bigint) typing___AWhileExpr___process_control_inside},
+  {(bigint) parser_prod___AWhileExpr___empty_init},
+  {(bigint) parser_prod___AWhileExpr___init_awhileexpr},
+  {(bigint) 6 /* 85: AWhileExpr < AWhileExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AWhileExpr___n_kwwhile},
+  {(bigint) parser_nodes___AWhileExpr___n_expr},
+  {(bigint) parser_nodes___AWhileExpr___n_kwdo},
+  {(bigint) parser_nodes___AWhileExpr___n_block},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction206(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AWhileExpr::_parent */
+/* 3: Attribute AWhileExpr::_location */
+/* 4: Attribute AWhileExpr::_first_location */
+/* 5: Attribute AWhileExpr::_last_location */
+/* 6: Attribute AWhileExpr::_n_label */
+/* 7: Attribute AWhileExpr::_is_typed */
+/* 8: Attribute AWhileExpr::_stype */
+/* 9: Attribute AWhileExpr::_if_true_flow_ctx */
+/* 10: Attribute AWhileExpr::_if_false_flow_ctx */
+/* 11: Attribute AWhileExpr::_escapable */
+/* 12: Attribute AWhileExpr::_n_kwwhile */
+/* 13: Attribute AWhileExpr::_n_expr */
+/* 14: Attribute AWhileExpr::_n_kwdo */
+/* 15: Attribute AWhileExpr::_n_block */
+void INIT_ATTRIBUTES__AWhileExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AWhileExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:649 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:603 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AWhileExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction206;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction206(val_t self, char *from) {
-}
-val_t NEW_ReduceAction206_parser___ReduceAction206___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction206();
-  parser___ReduceAction206___init(self, init_table);
-  CHECKNEW_ReduceAction206(self, "parser::ReduceAction206::init for ReduceAction206");
-  return self;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_AWhileExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AWhileExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AWhileExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwwhile", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction207[48] = {
-  {(bigint) 2699 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction207 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction207 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2699 /* 3: ReduceAction207 < ReduceAction207: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AWhileExpr_parser_prod___AWhileExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3671;
+  fra.me.meth = LOCATE_NEW_AWhileExpr_parser_prod___AWhileExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3671 */
+  fra.me.REG[0] = NEW_AWhileExpr();
+  INIT_ATTRIBUTES__AWhileExpr(fra.me.REG[0]);
+  parser_prod___AWhileExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AWhileExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3673;
+  fra.me.meth = LOCATE_NEW_AWhileExpr_parser_prod___AWhileExpr___init_awhileexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:3673 */
+  fra.me.REG[5] = NEW_AWhileExpr();
+  INIT_ATTRIBUTES__AWhileExpr(fra.me.REG[5]);
+  parser_prod___AWhileExpr___init_awhileexpr(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_AWhileExpr(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+val_t NEW_AWhileExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AWhileExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AWhileExpr();
+  INIT_ATTRIBUTES__AWhileExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AWhileExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ALoopExpr[88] = {
+  {(bigint) 3355 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ALoopExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ALoopExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ALoopExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2831 /* 5: ALoopExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ALoopExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3247 /* 7: ALoopExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 3355 /* 8: ALoopExpr < ALoopExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -62231,14 +52920,9 @@ const classtable_elt_t VFT_ReduceAction207[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction207 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: ALoopExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62246,7 +52930,6 @@ const classtable_elt_t VFT_ReduceAction207[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62254,45 +52937,206 @@ const classtable_elt_t VFT_ReduceAction207[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction207 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction207___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction207 < ReduceAction207: superclass init_table position */},
-  {(bigint) parser___ReduceAction207___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction207(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ALoopExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ALoopExpr___visit_all},
+  {(bigint) 2 /* 58: ALoopExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ALoopExpr___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 65: ALoopExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 5 /* 67: ALoopExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser_nodes___ALabelable___n_label},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 4 /* 72: ALoopExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ALoopExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 79: ALoopExpr < AAbsControl: superclass init_table position */},
+  {(bigint) typing___AAbsControl___escapable},
+  {(bigint) typing___AAbsControl___process_control},
+  {(bigint) typing___ALoopExpr___process_control_inside},
+  {(bigint) parser_prod___ALoopExpr___empty_init},
+  {(bigint) parser_prod___ALoopExpr___init_aloopexpr},
+  {(bigint) 6 /* 85: ALoopExpr < ALoopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ALoopExpr___n_kwloop},
+  {(bigint) parser_nodes___ALoopExpr___n_block},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ALoopExpr::_parent */
+/* 3: Attribute ALoopExpr::_location */
+/* 4: Attribute ALoopExpr::_first_location */
+/* 5: Attribute ALoopExpr::_last_location */
+/* 6: Attribute ALoopExpr::_n_label */
+/* 7: Attribute ALoopExpr::_is_typed */
+/* 8: Attribute ALoopExpr::_stype */
+/* 9: Attribute ALoopExpr::_if_true_flow_ctx */
+/* 10: Attribute ALoopExpr::_if_false_flow_ctx */
+/* 11: Attribute ALoopExpr::_escapable */
+/* 12: Attribute ALoopExpr::_n_kwloop */
+/* 13: Attribute ALoopExpr::_n_block */
+void INIT_ATTRIBUTES__ALoopExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ALoopExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:655 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:603 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALoopExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction207;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction207(val_t self, char *from) {
-}
-val_t NEW_ReduceAction207_parser___ReduceAction207___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction207();
-  parser___ReduceAction207___init(self, init_table);
-  CHECKNEW_ReduceAction207(self, "parser::ReduceAction207::init for ReduceAction207");
-  return self;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_ALoopExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ALoopExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ALoopExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwloop", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction208[48] = {
-  {(bigint) 2695 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction208 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction208 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2695 /* 3: ReduceAction208 < ReduceAction208: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ALoopExpr_parser_prod___ALoopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3766;
+  fra.me.meth = LOCATE_NEW_ALoopExpr_parser_prod___ALoopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3766 */
+  fra.me.REG[0] = NEW_ALoopExpr();
+  INIT_ATTRIBUTES__ALoopExpr(fra.me.REG[0]);
+  parser_prod___ALoopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALoopExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALoopExpr_parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3768;
+  fra.me.meth = LOCATE_NEW_ALoopExpr_parser_prod___ALoopExpr___init_aloopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3768 */
+  fra.me.REG[3] = NEW_ALoopExpr();
+  INIT_ATTRIBUTES__ALoopExpr(fra.me.REG[3]);
+  parser_prod___ALoopExpr___init_aloopexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_ALoopExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_ALoopExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ALoopExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ALoopExpr();
+  INIT_ATTRIBUTES__ALoopExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALoopExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AForExpr[92] = {
+  {(bigint) 3375 /* 0: Identity */},
+  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AForExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AForExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AForExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2831 /* 5: AForExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AForExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3247 /* 7: AForExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: AForExpr < AForExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -62301,14 +53145,9 @@ const classtable_elt_t VFT_ReduceAction208[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction208 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: AForExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62316,7 +53155,6 @@ const classtable_elt_t VFT_ReduceAction208[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62324,44 +53162,234 @@ const classtable_elt_t VFT_ReduceAction208[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction208 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction208___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction208 < ReduceAction208: superclass init_table position */},
-  {(bigint) parser___ReduceAction208___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AForExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AForExpr___visit_all},
+  {(bigint) 2 /* 58: AForExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___AForExpr___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 65: AForExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 5 /* 67: AForExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser_nodes___ALabelable___n_label},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 4 /* 72: AForExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AForExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 79: AForExpr < AAbsControl: superclass init_table position */},
+  {(bigint) typing___AAbsControl___escapable},
+  {(bigint) typing___AAbsControl___process_control},
+  {(bigint) typing___AForExpr___process_control_inside},
+  {(bigint) typing___AForExpr___variable},
+  {(bigint) parser_prod___AForExpr___empty_init},
+  {(bigint) parser_prod___AForExpr___init_aforexpr},
+  {(bigint) 6 /* 86: AForExpr < AForExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AForExpr___n_kwfor},
+  {(bigint) parser_nodes___AForExpr___n_id},
+  {(bigint) parser_nodes___AForExpr___n_expr},
+  {(bigint) parser_nodes___AForExpr___n_kwdo},
+  {(bigint) parser_nodes___AForExpr___n_block},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction208(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AForExpr::_parent */
+/* 3: Attribute AForExpr::_location */
+/* 4: Attribute AForExpr::_first_location */
+/* 5: Attribute AForExpr::_last_location */
+/* 6: Attribute AForExpr::_n_label */
+/* 7: Attribute AForExpr::_is_typed */
+/* 8: Attribute AForExpr::_stype */
+/* 9: Attribute AForExpr::_if_true_flow_ctx */
+/* 10: Attribute AForExpr::_if_false_flow_ctx */
+/* 11: Attribute AForExpr::_escapable */
+/* 12: Attribute AForExpr::_variable */
+/* 13: Attribute AForExpr::_n_kwfor */
+/* 14: Attribute AForExpr::_n_id */
+/* 15: Attribute AForExpr::_n_expr */
+/* 16: Attribute AForExpr::_n_kwdo */
+/* 17: Attribute AForExpr::_n_block */
+void INIT_ATTRIBUTES__AForExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AForExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:664 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AForExpr____n_block(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:603 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AForExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction208;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction208(val_t self, char *from) {
-}
-val_t NEW_ReduceAction208_parser___ReduceAction208___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction208();
-  parser___ReduceAction208___init(self, init_table);
-  CHECKNEW_ReduceAction208(self, "parser::ReduceAction208::init for ReduceAction208");
-  return self;
+  obj = alloc(sizeof(val_t) * 18);
+  obj->vft = (classtable_elt_t*)VFT_AForExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AForExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AForExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_kwfor(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwfor", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AForExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwdo", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction209[48] = {
-  {(bigint) 2691 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction209 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction209 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2691 /* 3: ReduceAction209 < ReduceAction209: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AForExpr_parser_prod___AForExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3833;
+  fra.me.meth = LOCATE_NEW_AForExpr_parser_prod___AForExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3833 */
+  fra.me.REG[0] = NEW_AForExpr();
+  INIT_ATTRIBUTES__AForExpr(fra.me.REG[0]);
+  parser_prod___AForExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AForExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AForExpr_parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3835;
+  fra.me.meth = LOCATE_NEW_AForExpr_parser_prod___AForExpr___init_aforexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:3835 */
+  fra.me.REG[6] = NEW_AForExpr();
+  INIT_ATTRIBUTES__AForExpr(fra.me.REG[6]);
+  parser_prod___AForExpr___init_aforexpr(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
+  CHECKNEW_AForExpr(fra.me.REG[6]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[6];
+}
+val_t NEW_AForExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AForExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AForExpr();
+  INIT_ATTRIBUTES__AForExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AForExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAssertExpr[86] = {
+  {(bigint) 3231 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAssertExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAssertExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAssertExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AAssertExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3231 /* 7: AAssertExpr < AAssertExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -62371,14 +53399,9 @@ const classtable_elt_t VFT_ReduceAction209[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction209 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAssertExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62386,7 +53409,6 @@ const classtable_elt_t VFT_ReduceAction209[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62394,44 +53416,211 @@ const classtable_elt_t VFT_ReduceAction209[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction209 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction209___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction209 < ReduceAction209: superclass init_table position */},
-  {(bigint) parser___ReduceAction209___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AAssertExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AAssertExpr___visit_all},
+  {(bigint) 1 /* 58: AAssertExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___AAssertExpr___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAssertExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAssertExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AAssertExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___AAssertExpr___empty_init},
+  {(bigint) parser_prod___AAssertExpr___init_aassertexpr},
+  {(bigint) 4 /* 81: AAssertExpr < AAssertExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAssertExpr___n_kwassert},
+  {(bigint) parser_nodes___AAssertExpr___n_id},
+  {(bigint) parser_nodes___AAssertExpr___n_expr},
+  {(bigint) parser_nodes___AAssertExpr___n_else},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction209(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AAssertExpr::_parent */
+/* 3: Attribute AAssertExpr::_location */
+/* 4: Attribute AAssertExpr::_first_location */
+/* 5: Attribute AAssertExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAssertExpr::_is_typed */
+/* 8: Attribute AAssertExpr::_stype */
+/* 9: Attribute AAssertExpr::_if_true_flow_ctx */
+/* 10: Attribute AAssertExpr::_if_false_flow_ctx */
+/* 11: Attribute AAssertExpr::_n_kwassert */
+/* 12: Attribute AAssertExpr::_n_id */
+/* 13: Attribute AAssertExpr::_n_expr */
+/* 14: Attribute AAssertExpr::_n_else */
+void INIT_ATTRIBUTES__AAssertExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAssertExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:669 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:671 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAssertExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction209;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction209(val_t self, char *from) {
-}
-val_t NEW_ReduceAction209_parser___ReduceAction209___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction209();
-  parser___ReduceAction209___init(self, init_table);
-  CHECKNEW_ReduceAction209(self, "parser::ReduceAction209::init for ReduceAction209");
-  return self;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_AAssertExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAssertExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAssertExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwassert", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssertExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction210[48] = {
-  {(bigint) 2683 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction210 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction210 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2683 /* 3: ReduceAction210 < ReduceAction210: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAssertExpr_parser_prod___AAssertExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3942;
+  fra.me.meth = LOCATE_NEW_AAssertExpr_parser_prod___AAssertExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:3942 */
+  fra.me.REG[0] = NEW_AAssertExpr();
+  INIT_ATTRIBUTES__AAssertExpr(fra.me.REG[0]);
+  parser_prod___AAssertExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AAssertExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3944;
+  fra.me.meth = LOCATE_NEW_AAssertExpr_parser_prod___AAssertExpr___init_aassertexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:3944 */
+  fra.me.REG[4] = NEW_AAssertExpr();
+  INIT_ATTRIBUTES__AAssertExpr(fra.me.REG[4]);
+  parser_prod___AAssertExpr___init_aassertexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_AAssertExpr(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+val_t NEW_AAssertExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAssertExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAssertExpr();
+  INIT_ATTRIBUTES__AAssertExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAssertExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAssignFormExpr[85] = {
+  {(bigint) 3227 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAssignFormExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAssignFormExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAssignFormExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AAssignFormExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3227 /* 7: AAssignFormExpr < AAssignFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -62441,14 +53630,9 @@ const classtable_elt_t VFT_ReduceAction210[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction210 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAssignFormExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62456,7 +53640,6 @@ const classtable_elt_t VFT_ReduceAction210[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62464,44 +53647,157 @@ const classtable_elt_t VFT_ReduceAction210[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction210 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction210___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction210 < ReduceAction210: superclass init_table position */},
-  {(bigint) parser___ReduceAction210___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AAssignFormExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAssignFormExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAssignFormExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 82: AAssignFormExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser_nodes___AAssignFormExpr___n_value},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction210(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AAssignFormExpr::_parent */
+/* 3: Attribute AAssignFormExpr::_location */
+/* 4: Attribute AAssignFormExpr::_first_location */
+/* 5: Attribute AAssignFormExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAssignFormExpr::_is_typed */
+/* 8: Attribute AAssignFormExpr::_stype */
+/* 9: Attribute AAssignFormExpr::_if_true_flow_ctx */
+/* 10: Attribute AAssignFormExpr::_if_false_flow_ctx */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 13: Attribute AAssignFormExpr::_n_assign */
+/* 14: Attribute AAssignFormExpr::_n_value */
+void INIT_ATTRIBUTES__AAssignFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAssignFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAssignFormExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction210;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction210(val_t self, char *from) {
-}
-val_t NEW_ReduceAction210_parser___ReduceAction210___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction210();
-  parser___ReduceAction210___init(self, init_table);
-  CHECKNEW_ReduceAction210(self, "parser::ReduceAction210::init for ReduceAction210");
-  return self;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_AAssignFormExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAssignFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAssignFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction211[48] = {
-  {(bigint) 2679 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction211 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction211 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2679 /* 3: ReduceAction211 < ReduceAction211: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAssignFormExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAssignFormExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAssignFormExpr();
+  INIT_ATTRIBUTES__AAssignFormExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAssignFormExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AReassignFormExpr[87] = {
+  {(bigint) 3047 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AReassignFormExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AReassignFormExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AReassignFormExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AReassignFormExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: AReassignFormExpr < AReassignFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -62511,14 +53807,9 @@ const classtable_elt_t VFT_ReduceAction211[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction211 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AReassignFormExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62526,7 +53817,6 @@ const classtable_elt_t VFT_ReduceAction211[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62534,61 +53824,172 @@ const classtable_elt_t VFT_ReduceAction211[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction211 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction211___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction211 < ReduceAction211: superclass init_table position */},
-  {(bigint) parser___ReduceAction211___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AReassignFormExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AReassignFormExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AReassignFormExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
+  {(bigint) typing___AReassignFormExpr___assign_method},
+  {(bigint) 4 /* 84: AReassignFormExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser_nodes___AReassignFormExpr___n_value},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction211(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AReassignFormExpr::_parent */
+/* 3: Attribute AReassignFormExpr::_location */
+/* 4: Attribute AReassignFormExpr::_first_location */
+/* 5: Attribute AReassignFormExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AReassignFormExpr::_is_typed */
+/* 8: Attribute AReassignFormExpr::_stype */
+/* 9: Attribute AReassignFormExpr::_if_true_flow_ctx */
+/* 10: Attribute AReassignFormExpr::_if_false_flow_ctx */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 13: Attribute AReassignFormExpr::_assign_method */
+/* 14: Attribute AReassignFormExpr::_n_assign_op */
+/* 15: Attribute AReassignFormExpr::_n_value */
+void INIT_ATTRIBUTES__AReassignFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AReassignFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AReassignFormExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction211;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction211(val_t self, char *from) {
-}
-val_t NEW_ReduceAction211_parser___ReduceAction211___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction211();
-  parser___ReduceAction211___init(self, init_table);
-  CHECKNEW_ReduceAction211(self, "parser::ReduceAction211::init for ReduceAction211");
-  return self;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_AReassignFormExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AReassignFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AReassignFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction212[48] = {
-  {(bigint) 2675 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction212 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction212 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2675 /* 3: ReduceAction212 < ReduceAction212: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AReassignFormExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AReassignFormExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AReassignFormExpr();
+  INIT_ATTRIBUTES__AReassignFormExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AReassignFormExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AOnceExpr[86] = {
+  {(bigint) 3343 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AOnceExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AOnceExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AOnceExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AOnceExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AOnceExpr < AProxyExpr: superclass typecheck marker */},
+  {(bigint) 3343 /* 8: AOnceExpr < AOnceExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction212 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: AOnceExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62596,7 +53997,6 @@ const classtable_elt_t VFT_ReduceAction212[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62604,61 +54004,210 @@ const classtable_elt_t VFT_ReduceAction212[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction212 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction212___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction212 < ReduceAction212: superclass init_table position */},
-  {(bigint) parser___ReduceAction212___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AOnceExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AOnceExpr___visit_all},
+  {(bigint) 2 /* 58: AOnceExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___AOnceExpr___accept_typing},
+  {(bigint) typing___AProxyExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 65: AOnceExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 4 /* 72: AOnceExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AOnceExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 79: AOnceExpr < AProxyExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AProxyExpr___n_expr},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) parser_prod___AOnceExpr___empty_init},
+  {(bigint) parser_prod___AOnceExpr___init_aonceexpr},
+  {(bigint) 5 /* 84: AOnceExpr < AOnceExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AOnceExpr___n_kwonce},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction212(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AOnceExpr::_parent */
+/* 3: Attribute AOnceExpr::_location */
+/* 4: Attribute AOnceExpr::_first_location */
+/* 5: Attribute AOnceExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AOnceExpr::_is_typed */
+/* 8: Attribute AOnceExpr::_stype */
+/* 9: Attribute AOnceExpr::_if_true_flow_ctx */
+/* 10: Attribute AOnceExpr::_if_false_flow_ctx */
+/* 11: Attribute AOnceExpr::_n_expr */
+/* 12: Attribute AOnceExpr::_n_kwonce */
+void INIT_ATTRIBUTES__AOnceExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AOnceExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AOnceExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction212;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction212(val_t self, char *from) {
-}
-val_t NEW_ReduceAction212_parser___ReduceAction212___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction212();
-  parser___ReduceAction212___init(self, init_table);
-  CHECKNEW_ReduceAction212(self, "parser::ReduceAction212::init for ReduceAction212");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AOnceExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AOnceExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AOnceExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwonce", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction213[48] = {
-  {(bigint) 2671 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction213 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction213 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2671 /* 3: ReduceAction213 < ReduceAction213: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AOnceExpr_parser_prod___AOnceExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4023;
+  fra.me.meth = LOCATE_NEW_AOnceExpr_parser_prod___AOnceExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4023 */
+  fra.me.REG[0] = NEW_AOnceExpr();
+  INIT_ATTRIBUTES__AOnceExpr(fra.me.REG[0]);
+  parser_prod___AOnceExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AOnceExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4025;
+  fra.me.meth = LOCATE_NEW_AOnceExpr_parser_prod___AOnceExpr___init_aonceexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4025 */
+  fra.me.REG[2] = NEW_AOnceExpr();
+  INIT_ATTRIBUTES__AOnceExpr(fra.me.REG[2]);
+  parser_prod___AOnceExpr___init_aonceexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AOnceExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AOnceExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AOnceExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AOnceExpr();
+  INIT_ATTRIBUTES__AOnceExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AOnceExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ASendExpr[108] = {
+  {(bigint) 3479 /* 0: Identity */},
+  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ASendExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ASendExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ASendExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ASendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ASendExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ASendExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ASendExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ASendExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction213 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ASendExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62666,7 +54215,6 @@ const classtable_elt_t VFT_ReduceAction213[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62674,61 +54222,244 @@ const classtable_elt_t VFT_ReduceAction213[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction213 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction213___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction213 < ReduceAction213: superclass init_table position */},
-  {(bigint) parser___ReduceAction213___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction213(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction213;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction213(val_t self, char *from) {
-}
-val_t NEW_ReduceAction213_parser___ReduceAction213___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction213();
-  parser___ReduceAction213___init(self, init_table);
-  CHECKNEW_ReduceAction213(self, "parser::ReduceAction213::init for ReduceAction213");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction214[48] = {
-  {(bigint) 2667 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction214 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction214 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2667 /* 3: ReduceAction214 < ReduceAction214: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASendExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASendExpr___visit_all},
+  {(bigint) 4 /* 58: ASendExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ASendExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ASendExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ASendExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___AAbsAbsSendExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ASendExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ASendExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ASendExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ASendExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ASendExpr::_parent */
+/* 3: Attribute ASendExpr::_location */
+/* 4: Attribute ASendExpr::_first_location */
+/* 5: Attribute ASendExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ASendExpr::_is_typed */
+/* 8: Attribute ASendExpr::_stype */
+/* 9: Attribute ASendExpr::_if_true_flow_ctx */
+/* 10: Attribute ASendExpr::_if_false_flow_ctx */
+/* 11: Attribute ASendExpr::_prop_signature */
+/* 12: Attribute ASendExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ASendExpr::_prop */
+/* 17: Attribute ASendExpr::_return_type */
+/* 18: Attribute ASendExpr::_n_expr */
+/* 19: Attribute ASendExpr::_n_closure_defs */
+void INIT_ATTRIBUTES__ASendExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ASendExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASendExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 20);
+  obj->vft = (classtable_elt_t*)VFT_ASendExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ASendExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ASendExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASendExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ASendExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ASendExpr();
+  INIT_ATTRIBUTES__ASendExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASendExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASendExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ASendExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ASendExpr();
+  INIT_ATTRIBUTES__ASendExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASendExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ASendExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ASendExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ASendExpr();
+  INIT_ATTRIBUTES__ASendExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASendExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ABinopExpr[112] = {
+  {(bigint) 3503 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ABinopExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ABinopExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ABinopExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ABinopExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ABinopExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ABinopExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ABinopExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ABinopExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: ABinopExpr < ABinopExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction214 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ABinopExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62736,7 +54467,6 @@ const classtable_elt_t VFT_ReduceAction214[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62744,44 +54474,284 @@ const classtable_elt_t VFT_ReduceAction214[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction214 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction214___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction214 < ReduceAction214: superclass init_table position */},
-  {(bigint) parser___ReduceAction214___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ABinopExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ABinopExpr___visit_all},
+  {(bigint) 4 /* 58: ABinopExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ABinopExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ABinopExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ABinopExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ABinopExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ABinopExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ASendExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ABinopExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: ABinopExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction214(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction214;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction214(val_t self, char *from) {
-}
-val_t NEW_ReduceAction214_parser___ReduceAction214___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction214();
-  parser___ReduceAction214___init(self, init_table);
-  CHECKNEW_ReduceAction214(self, "parser::ReduceAction214::init for ReduceAction214");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ABinopExpr::_parent */
+/* 3: Attribute ABinopExpr::_location */
+/* 4: Attribute ABinopExpr::_first_location */
+/* 5: Attribute ABinopExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ABinopExpr::_is_typed */
+/* 8: Attribute ABinopExpr::_stype */
+/* 9: Attribute ABinopExpr::_if_true_flow_ctx */
+/* 10: Attribute ABinopExpr::_if_false_flow_ctx */
+/* 11: Attribute ABinopExpr::_prop_signature */
+/* 12: Attribute ABinopExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ABinopExpr::_prop */
+/* 17: Attribute ABinopExpr::_return_type */
+/* 18: Attribute ABinopExpr::_n_expr */
+/* 19: Attribute ABinopExpr::_n_closure_defs */
+/* 20: Attribute ABinopExpr::_n_expr2 */
+void INIT_ATTRIBUTES__ABinopExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ABinopExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABinopExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_ABinopExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ABinopExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ABinopExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction215[48] = {
-  {(bigint) 2663 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction215 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction215 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2663 /* 3: ReduceAction215 < ReduceAction215: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ABinopExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ABinopExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ABinopExpr();
+  INIT_ATTRIBUTES__ABinopExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABinopExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABinopExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_ABinopExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_ABinopExpr();
+  INIT_ATTRIBUTES__ABinopExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABinopExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABinopExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_ABinopExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_ABinopExpr();
+  INIT_ATTRIBUTES__ABinopExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ABinopExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ABinopExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ABinopExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ABinopExpr();
+  INIT_ATTRIBUTES__ABinopExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABinopExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ABinopExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ABinopExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ABinopExpr();
+  INIT_ATTRIBUTES__ABinopExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABinopExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ABoolExpr[80] = {
+  {(bigint) 3207 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ABoolExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ABoolExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ABoolExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: ABoolExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3207 /* 7: ABoolExpr < ABoolExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -62791,14 +54761,9 @@ const classtable_elt_t VFT_ReduceAction215[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction215 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ABoolExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62806,7 +54771,6 @@ const classtable_elt_t VFT_ReduceAction215[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62814,45 +54778,139 @@ const classtable_elt_t VFT_ReduceAction215[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction215 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction215___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction215 < ReduceAction215: superclass init_table position */},
-  {(bigint) parser___ReduceAction215___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction215(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: ABoolExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ABoolExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ABoolExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ABoolExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 4 /* 79: ABoolExpr < ABoolExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ABoolExpr::_parent */
+/* 3: Attribute ABoolExpr::_location */
+/* 4: Attribute ABoolExpr::_first_location */
+/* 5: Attribute ABoolExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ABoolExpr::_is_typed */
+/* 8: Attribute ABoolExpr::_stype */
+/* 9: Attribute ABoolExpr::_if_true_flow_ctx */
+/* 10: Attribute ABoolExpr::_if_false_flow_ctx */
+void INIT_ATTRIBUTES__ABoolExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ABoolExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABoolExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction215;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction215(val_t self, char *from) {
-}
-val_t NEW_ReduceAction215_parser___ReduceAction215___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction215();
-  parser___ReduceAction215___init(self, init_table);
-  CHECKNEW_ReduceAction215(self, "parser::ReduceAction215::init for ReduceAction215");
-  return self;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_ABoolExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ABoolExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ABoolExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction216[48] = {
-  {(bigint) 2659 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction216 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction216 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2659 /* 3: ReduceAction216 < ReduceAction216: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ABoolExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ABoolExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ABoolExpr();
+  INIT_ATTRIBUTES__ABoolExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABoolExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AOrExpr[85] = {
+  {(bigint) 3335 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AOrExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AOrExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AOrExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AOrExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3207 /* 7: AOrExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3335 /* 8: AOrExpr < AOrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -62861,14 +54919,9 @@ const classtable_elt_t VFT_ReduceAction216[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction216 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AOrExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62876,7 +54929,6 @@ const classtable_elt_t VFT_ReduceAction216[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62884,45 +54936,198 @@ const classtable_elt_t VFT_ReduceAction216[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction216 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction216___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction216 < ReduceAction216: superclass init_table position */},
-  {(bigint) parser___ReduceAction216___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AOrExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AOrExpr___visit_all},
+  {(bigint) 1 /* 58: AOrExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___AOrExpr___accept_typing},
+  {(bigint) typing___ABoolExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AOrExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AOrExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AOrExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 4 /* 79: AOrExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser_prod___AOrExpr___empty_init},
+  {(bigint) parser_prod___AOrExpr___init_aorexpr},
+  {(bigint) 5 /* 82: AOrExpr < AOrExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AOrExpr___n_expr},
+  {(bigint) parser_nodes___AOrExpr___n_expr2},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction216(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AOrExpr::_parent */
+/* 3: Attribute AOrExpr::_location */
+/* 4: Attribute AOrExpr::_first_location */
+/* 5: Attribute AOrExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AOrExpr::_is_typed */
+/* 8: Attribute AOrExpr::_stype */
+/* 9: Attribute AOrExpr::_if_true_flow_ctx */
+/* 10: Attribute AOrExpr::_if_false_flow_ctx */
+/* 11: Attribute AOrExpr::_n_expr */
+/* 12: Attribute AOrExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AOrExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AOrExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AOrExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction216;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction216(val_t self, char *from) {
-}
-val_t NEW_ReduceAction216_parser___ReduceAction216___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction216();
-  parser___ReduceAction216___init(self, init_table);
-  CHECKNEW_ReduceAction216(self, "parser::ReduceAction216::init for ReduceAction216");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AOrExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AOrExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AOrExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction217[48] = {
-  {(bigint) 2655 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction217 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction217 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2655 /* 3: ReduceAction217 < ReduceAction217: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AOrExpr_parser_prod___AOrExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4144;
+  fra.me.meth = LOCATE_NEW_AOrExpr_parser_prod___AOrExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4144 */
+  fra.me.REG[0] = NEW_AOrExpr();
+  INIT_ATTRIBUTES__AOrExpr(fra.me.REG[0]);
+  parser_prod___AOrExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AOrExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4146;
+  fra.me.meth = LOCATE_NEW_AOrExpr_parser_prod___AOrExpr___init_aorexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4146 */
+  fra.me.REG[2] = NEW_AOrExpr();
+  INIT_ATTRIBUTES__AOrExpr(fra.me.REG[2]);
+  parser_prod___AOrExpr___init_aorexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AOrExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AOrExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AOrExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AOrExpr();
+  INIT_ATTRIBUTES__AOrExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AOrExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAndExpr[85] = {
+  {(bigint) 3439 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAndExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAndExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAndExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AAndExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3207 /* 7: AAndExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3439 /* 8: AAndExpr < AAndExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -62931,14 +55136,9 @@ const classtable_elt_t VFT_ReduceAction217[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction217 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAndExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -62946,7 +55146,6 @@ const classtable_elt_t VFT_ReduceAction217[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -62954,45 +55153,198 @@ const classtable_elt_t VFT_ReduceAction217[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction217 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction217___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction217 < ReduceAction217: superclass init_table position */},
-  {(bigint) parser___ReduceAction217___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AAndExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AAndExpr___visit_all},
+  {(bigint) 1 /* 58: AAndExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___AAndExpr___accept_typing},
+  {(bigint) typing___ABoolExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAndExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAndExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AAndExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 4 /* 79: AAndExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser_prod___AAndExpr___empty_init},
+  {(bigint) parser_prod___AAndExpr___init_aandexpr},
+  {(bigint) 5 /* 82: AAndExpr < AAndExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAndExpr___n_expr},
+  {(bigint) parser_nodes___AAndExpr___n_expr2},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction217(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AAndExpr::_parent */
+/* 3: Attribute AAndExpr::_location */
+/* 4: Attribute AAndExpr::_first_location */
+/* 5: Attribute AAndExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAndExpr::_is_typed */
+/* 8: Attribute AAndExpr::_stype */
+/* 9: Attribute AAndExpr::_if_true_flow_ctx */
+/* 10: Attribute AAndExpr::_if_false_flow_ctx */
+/* 11: Attribute AAndExpr::_n_expr */
+/* 12: Attribute AAndExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AAndExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAndExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAndExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction217;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction217(val_t self, char *from) {
-}
-val_t NEW_ReduceAction217_parser___ReduceAction217___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction217();
-  parser___ReduceAction217___init(self, init_table);
-  CHECKNEW_ReduceAction217(self, "parser::ReduceAction217::init for ReduceAction217");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AAndExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAndExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAndExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAndExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAndExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction218[48] = {
-  {(bigint) 2651 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction218 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction218 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2651 /* 3: ReduceAction218 < ReduceAction218: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAndExpr_parser_prod___AAndExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4189;
+  fra.me.meth = LOCATE_NEW_AAndExpr_parser_prod___AAndExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4189 */
+  fra.me.REG[0] = NEW_AAndExpr();
+  INIT_ATTRIBUTES__AAndExpr(fra.me.REG[0]);
+  parser_prod___AAndExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AAndExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4191;
+  fra.me.meth = LOCATE_NEW_AAndExpr_parser_prod___AAndExpr___init_aandexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4191 */
+  fra.me.REG[2] = NEW_AAndExpr();
+  INIT_ATTRIBUTES__AAndExpr(fra.me.REG[2]);
+  parser_prod___AAndExpr___init_aandexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AAndExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AAndExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAndExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAndExpr();
+  INIT_ATTRIBUTES__AAndExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAndExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AOrElseExpr[85] = {
+  {(bigint) 3339 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AOrElseExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AOrElseExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AOrElseExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AOrElseExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3207 /* 7: AOrElseExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3339 /* 8: AOrElseExpr < AOrElseExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63001,14 +55353,9 @@ const classtable_elt_t VFT_ReduceAction218[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction218 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AOrElseExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63016,7 +55363,6 @@ const classtable_elt_t VFT_ReduceAction218[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63024,45 +55370,198 @@ const classtable_elt_t VFT_ReduceAction218[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction218 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction218___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction218 < ReduceAction218: superclass init_table position */},
-  {(bigint) parser___ReduceAction218___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction218(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AOrElseExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AOrElseExpr___visit_all},
+  {(bigint) 1 /* 58: AOrElseExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AOrElseExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AOrElseExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AOrElseExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AOrElseExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 4 /* 79: AOrElseExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser_prod___AOrElseExpr___empty_init},
+  {(bigint) parser_prod___AOrElseExpr___init_aorelseexpr},
+  {(bigint) 5 /* 82: AOrElseExpr < AOrElseExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AOrElseExpr___n_expr},
+  {(bigint) parser_nodes___AOrElseExpr___n_expr2},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AOrElseExpr::_parent */
+/* 3: Attribute AOrElseExpr::_location */
+/* 4: Attribute AOrElseExpr::_first_location */
+/* 5: Attribute AOrElseExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AOrElseExpr::_is_typed */
+/* 8: Attribute AOrElseExpr::_stype */
+/* 9: Attribute AOrElseExpr::_if_true_flow_ctx */
+/* 10: Attribute AOrElseExpr::_if_false_flow_ctx */
+/* 11: Attribute AOrElseExpr::_n_expr */
+/* 12: Attribute AOrElseExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AOrElseExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AOrElseExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AOrElseExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction218;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction218(val_t self, char *from) {
-}
-val_t NEW_ReduceAction218_parser___ReduceAction218___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction218();
-  parser___ReduceAction218___init(self, init_table);
-  CHECKNEW_ReduceAction218(self, "parser::ReduceAction218::init for ReduceAction218");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AOrElseExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AOrElseExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AOrElseExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction219[48] = {
-  {(bigint) 2647 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction219 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction219 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2647 /* 3: ReduceAction219 < ReduceAction219: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AOrElseExpr_parser_prod___AOrElseExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4234;
+  fra.me.meth = LOCATE_NEW_AOrElseExpr_parser_prod___AOrElseExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4234 */
+  fra.me.REG[0] = NEW_AOrElseExpr();
+  INIT_ATTRIBUTES__AOrElseExpr(fra.me.REG[0]);
+  parser_prod___AOrElseExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AOrElseExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AOrElseExpr_parser_prod___AOrElseExpr___init_aorelseexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4236;
+  fra.me.meth = LOCATE_NEW_AOrElseExpr_parser_prod___AOrElseExpr___init_aorelseexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4236 */
+  fra.me.REG[2] = NEW_AOrElseExpr();
+  INIT_ATTRIBUTES__AOrElseExpr(fra.me.REG[2]);
+  parser_prod___AOrElseExpr___init_aorelseexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AOrElseExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AOrElseExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AOrElseExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AOrElseExpr();
+  INIT_ATTRIBUTES__AOrElseExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AOrElseExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ANotExpr[85] = {
+  {(bigint) 3347 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ANotExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ANotExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ANotExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: ANotExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3207 /* 7: ANotExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3347 /* 8: ANotExpr < ANotExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63071,14 +55570,9 @@ const classtable_elt_t VFT_ReduceAction219[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction219 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ANotExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63086,7 +55580,6 @@ const classtable_elt_t VFT_ReduceAction219[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63094,61 +55587,209 @@ const classtable_elt_t VFT_ReduceAction219[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction219 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction219___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction219 < ReduceAction219: superclass init_table position */},
-  {(bigint) parser___ReduceAction219___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANotExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANotExpr___visit_all},
+  {(bigint) 1 /* 58: ANotExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANotExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ANotExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ANotExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ANotExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 4 /* 79: ANotExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser_prod___ANotExpr___empty_init},
+  {(bigint) parser_prod___ANotExpr___init_anotexpr},
+  {(bigint) 5 /* 82: ANotExpr < ANotExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ANotExpr___n_kwnot},
+  {(bigint) parser_nodes___ANotExpr___n_expr},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction219(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ANotExpr::_parent */
+/* 3: Attribute ANotExpr::_location */
+/* 4: Attribute ANotExpr::_first_location */
+/* 5: Attribute ANotExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ANotExpr::_is_typed */
+/* 8: Attribute ANotExpr::_stype */
+/* 9: Attribute ANotExpr::_if_true_flow_ctx */
+/* 10: Attribute ANotExpr::_if_false_flow_ctx */
+/* 11: Attribute ANotExpr::_n_kwnot */
+/* 12: Attribute ANotExpr::_n_expr */
+void INIT_ATTRIBUTES__ANotExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ANotExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ANotExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction219;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction219(val_t self, char *from) {
-}
-val_t NEW_ReduceAction219_parser___ReduceAction219___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction219();
-  parser___ReduceAction219___init(self, init_table);
-  CHECKNEW_ReduceAction219(self, "parser::ReduceAction219::init for ReduceAction219");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_ANotExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ANotExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ANotExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANotExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction220[48] = {
-  {(bigint) 2639 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction220 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction220 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2639 /* 3: ReduceAction220 < ReduceAction220: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ANotExpr_parser_prod___ANotExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4279;
+  fra.me.meth = LOCATE_NEW_ANotExpr_parser_prod___ANotExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4279 */
+  fra.me.REG[0] = NEW_ANotExpr();
+  INIT_ATTRIBUTES__ANotExpr(fra.me.REG[0]);
+  parser_prod___ANotExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ANotExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4281;
+  fra.me.meth = LOCATE_NEW_ANotExpr_parser_prod___ANotExpr___init_anotexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4281 */
+  fra.me.REG[2] = NEW_ANotExpr();
+  INIT_ATTRIBUTES__ANotExpr(fra.me.REG[2]);
+  parser_prod___ANotExpr___init_anotexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ANotExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ANotExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ANotExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ANotExpr();
+  INIT_ATTRIBUTES__ANotExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ANotExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AEqExpr[117] = {
+  {(bigint) 3559 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AEqExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AEqExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AEqExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AEqExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AEqExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: AEqExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: AEqExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: AEqExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: AEqExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3559 /* 12: AEqExpr < AEqExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction220 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: AEqExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63156,7 +55797,6 @@ const classtable_elt_t VFT_ReduceAction220[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63164,61 +55804,343 @@ const classtable_elt_t VFT_ReduceAction220[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction220 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction220___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction220 < ReduceAction220: superclass init_table position */},
-  {(bigint) parser___ReduceAction220___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction220(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction220;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction220(val_t self, char *from) {
-}
-val_t NEW_ReduceAction220_parser___ReduceAction220___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction220();
-  parser___ReduceAction220___init(self, init_table);
-  CHECKNEW_ReduceAction220(self, "parser::ReduceAction220::init for ReduceAction220");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction221[48] = {
-  {(bigint) 2635 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction221 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction221 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2635 /* 3: ReduceAction221 < ReduceAction221: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AEqExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AEqExpr___visit_all},
+  {(bigint) 4 /* 58: AEqExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AEqExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: AEqExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: AEqExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: AEqExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: AEqExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: AEqExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___AEqExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: AEqExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: AEqExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) typing___AEqExpr___try_to_isa},
+  {(bigint) parser_prod___AEqExpr___empty_init},
+  {(bigint) parser_prod___AEqExpr___init_aeqexpr},
+  {(bigint) 9 /* 116: AEqExpr < AEqExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AEqExpr::_parent */
+/* 3: Attribute AEqExpr::_location */
+/* 4: Attribute AEqExpr::_first_location */
+/* 5: Attribute AEqExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AEqExpr::_is_typed */
+/* 8: Attribute AEqExpr::_stype */
+/* 9: Attribute AEqExpr::_if_true_flow_ctx */
+/* 10: Attribute AEqExpr::_if_false_flow_ctx */
+/* 11: Attribute AEqExpr::_prop_signature */
+/* 12: Attribute AEqExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AEqExpr::_prop */
+/* 17: Attribute AEqExpr::_return_type */
+/* 18: Attribute AEqExpr::_n_expr */
+/* 19: Attribute AEqExpr::_n_closure_defs */
+/* 20: Attribute AEqExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AEqExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AEqExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AEqExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_AEqExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AEqExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AEqExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AEqExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_AEqExpr();
+  INIT_ATTRIBUTES__AEqExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AEqExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AEqExpr_parser_prod___AEqExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4324;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser_prod___AEqExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4324 */
+  fra.me.REG[0] = NEW_AEqExpr();
+  INIT_ATTRIBUTES__AEqExpr(fra.me.REG[0]);
+  parser_prod___AEqExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AEqExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4326;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser_prod___AEqExpr___init_aeqexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4326 */
+  fra.me.REG[2] = NEW_AEqExpr();
+  INIT_ATTRIBUTES__AEqExpr(fra.me.REG[2]);
+  parser_prod___AEqExpr___init_aeqexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AEqExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AEqExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AEqExpr();
+  INIT_ATTRIBUTES__AEqExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AEqExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AEqExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_AEqExpr();
+  INIT_ATTRIBUTES__AEqExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AEqExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AEqExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_AEqExpr();
+  INIT_ATTRIBUTES__AEqExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AEqExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AEqExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_AEqExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_AEqExpr();
+  INIT_ATTRIBUTES__AEqExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AEqExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AEeExpr[85] = {
+  {(bigint) 3391 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AEeExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AEeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AEeExpr < Prod: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AEeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3207 /* 7: AEeExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3391 /* 8: AEeExpr < AEeExpr: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction221 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AEeExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63226,7 +56148,6 @@ const classtable_elt_t VFT_ReduceAction221[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63234,61 +56155,209 @@ const classtable_elt_t VFT_ReduceAction221[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction221 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction221___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction221 < ReduceAction221: superclass init_table position */},
-  {(bigint) parser___ReduceAction221___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AEeExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AEeExpr___visit_all},
+  {(bigint) 1 /* 58: AEeExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ABoolExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AEeExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AEeExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AEeExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 4 /* 79: AEeExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser_prod___AEeExpr___empty_init},
+  {(bigint) parser_prod___AEeExpr___init_aeeexpr},
+  {(bigint) 5 /* 82: AEeExpr < AEeExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AEeExpr___n_expr},
+  {(bigint) parser_nodes___AEeExpr___n_expr2},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction221(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AEeExpr::_parent */
+/* 3: Attribute AEeExpr::_location */
+/* 4: Attribute AEeExpr::_first_location */
+/* 5: Attribute AEeExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AEeExpr::_is_typed */
+/* 8: Attribute AEeExpr::_stype */
+/* 9: Attribute AEeExpr::_if_true_flow_ctx */
+/* 10: Attribute AEeExpr::_if_false_flow_ctx */
+/* 11: Attribute AEeExpr::_n_expr */
+/* 12: Attribute AEeExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AEeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AEeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AEeExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction221;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction221(val_t self, char *from) {
-}
-val_t NEW_ReduceAction221_parser___ReduceAction221___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction221();
-  parser___ReduceAction221___init(self, init_table);
-  CHECKNEW_ReduceAction221(self, "parser::ReduceAction221::init for ReduceAction221");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AEeExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AEeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AEeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction222[48] = {
-  {(bigint) 2631 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction222 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction222 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2631 /* 3: ReduceAction222 < ReduceAction222: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AEeExpr_parser_prod___AEeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4369;
+  fra.me.meth = LOCATE_NEW_AEeExpr_parser_prod___AEeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4369 */
+  fra.me.REG[0] = NEW_AEeExpr();
+  INIT_ATTRIBUTES__AEeExpr(fra.me.REG[0]);
+  parser_prod___AEeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AEeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4371;
+  fra.me.meth = LOCATE_NEW_AEeExpr_parser_prod___AEeExpr___init_aeeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4371 */
+  fra.me.REG[2] = NEW_AEeExpr();
+  INIT_ATTRIBUTES__AEeExpr(fra.me.REG[2]);
+  parser_prod___AEeExpr___init_aeeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AEeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AEeExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AEeExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AEeExpr();
+  INIT_ATTRIBUTES__AEeExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AEeExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ANeExpr[117] = {
+  {(bigint) 3527 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ANeExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ANeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ANeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ANeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ANeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ANeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ANeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ANeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: ANeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3527 /* 12: ANeExpr < ANeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction222 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ANeExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63296,7 +56365,6 @@ const classtable_elt_t VFT_ReduceAction222[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63304,41 +56372,51 @@ const classtable_elt_t VFT_ReduceAction222[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction222 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction222___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction222 < ReduceAction222: superclass init_table position */},
-  {(bigint) parser___ReduceAction222___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction222(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction222;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction222(val_t self, char *from) {
-}
-val_t NEW_ReduceAction222_parser___ReduceAction222___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction222();
-  parser___ReduceAction222___init(self, init_table);
-  CHECKNEW_ReduceAction222(self, "parser::ReduceAction222::init for ReduceAction222");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction223[48] = {
-  {(bigint) 2627 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction223 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction223 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2627 /* 3: ReduceAction223 < ReduceAction223: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANeExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANeExpr___visit_all},
+  {(bigint) 4 /* 58: ANeExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANeExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ANeExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ANeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ANeExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63347,18 +56425,290 @@ const classtable_elt_t VFT_ReduceAction223[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ANeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ANeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ANeExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ANeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: ANeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) typing___ANeExpr___try_to_isa},
+  {(bigint) parser_prod___ANeExpr___empty_init},
+  {(bigint) parser_prod___ANeExpr___init_aneexpr},
+  {(bigint) 9 /* 116: ANeExpr < ANeExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ANeExpr::_parent */
+/* 3: Attribute ANeExpr::_location */
+/* 4: Attribute ANeExpr::_first_location */
+/* 5: Attribute ANeExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ANeExpr::_is_typed */
+/* 8: Attribute ANeExpr::_stype */
+/* 9: Attribute ANeExpr::_if_true_flow_ctx */
+/* 10: Attribute ANeExpr::_if_false_flow_ctx */
+/* 11: Attribute ANeExpr::_prop_signature */
+/* 12: Attribute ANeExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ANeExpr::_prop */
+/* 17: Attribute ANeExpr::_return_type */
+/* 18: Attribute ANeExpr::_n_expr */
+/* 19: Attribute ANeExpr::_n_closure_defs */
+/* 20: Attribute ANeExpr::_n_expr2 */
+void INIT_ATTRIBUTES__ANeExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ANeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ANeExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_ANeExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ANeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ANeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ANeExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_ANeExpr();
+  INIT_ATTRIBUTES__ANeExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ANeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ANeExpr_parser_prod___ANeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4414;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser_prod___ANeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4414 */
+  fra.me.REG[0] = NEW_ANeExpr();
+  INIT_ATTRIBUTES__ANeExpr(fra.me.REG[0]);
+  parser_prod___ANeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ANeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4416;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser_prod___ANeExpr___init_aneexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4416 */
+  fra.me.REG[2] = NEW_ANeExpr();
+  INIT_ATTRIBUTES__ANeExpr(fra.me.REG[2]);
+  parser_prod___ANeExpr___init_aneexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ANeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ANeExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ANeExpr();
+  INIT_ATTRIBUTES__ANeExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ANeExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ANeExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ANeExpr();
+  INIT_ATTRIBUTES__ANeExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ANeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ANeExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_ANeExpr();
+  INIT_ATTRIBUTES__ANeExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ANeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ANeExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ANeExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ANeExpr();
+  INIT_ATTRIBUTES__ANeExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ANeExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ALtExpr[115] = {
+  {(bigint) 3535 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ALtExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ALtExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ALtExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ALtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ALtExpr < AExpr: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ALtExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ALtExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ALtExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: ALtExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3535 /* 12: ALtExpr < ALtExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction223 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ALtExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63366,7 +56716,6 @@ const classtable_elt_t VFT_ReduceAction223[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63374,41 +56723,52 @@ const classtable_elt_t VFT_ReduceAction223[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction223 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction223___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction223 < ReduceAction223: superclass init_table position */},
-  {(bigint) parser___ReduceAction223___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction223(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction223;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction223(val_t self, char *from) {
-}
-val_t NEW_ReduceAction223_parser___ReduceAction223___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction223();
-  parser___ReduceAction223___init(self, init_table);
-  CHECKNEW_ReduceAction223(self, "parser::ReduceAction223::init for ReduceAction223");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction224[48] = {
-  {(bigint) 2623 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction224 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction224 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2623 /* 3: ReduceAction224 < ReduceAction224: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ALtExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ALtExpr___visit_all},
+  {(bigint) 4 /* 58: ALtExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ALtExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ALtExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ALtExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63416,19 +56776,288 @@ const classtable_elt_t VFT_ReduceAction224[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ALtExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ALtExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ALtExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ALtExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: ALtExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___ALtExpr___empty_init},
+  {(bigint) parser_prod___ALtExpr___init_altexpr},
+  {(bigint) 9 /* 114: ALtExpr < ALtExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ALtExpr::_parent */
+/* 3: Attribute ALtExpr::_location */
+/* 4: Attribute ALtExpr::_first_location */
+/* 5: Attribute ALtExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ALtExpr::_is_typed */
+/* 8: Attribute ALtExpr::_stype */
+/* 9: Attribute ALtExpr::_if_true_flow_ctx */
+/* 10: Attribute ALtExpr::_if_false_flow_ctx */
+/* 11: Attribute ALtExpr::_prop_signature */
+/* 12: Attribute ALtExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ALtExpr::_prop */
+/* 17: Attribute ALtExpr::_return_type */
+/* 18: Attribute ALtExpr::_n_expr */
+/* 19: Attribute ALtExpr::_n_closure_defs */
+/* 20: Attribute ALtExpr::_n_expr2 */
+void INIT_ATTRIBUTES__ALtExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ALtExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALtExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_ALtExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ALtExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ALtExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALtExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_ALtExpr();
+  INIT_ATTRIBUTES__ALtExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALtExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALtExpr_parser_prod___ALtExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4459;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser_prod___ALtExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4459 */
+  fra.me.REG[0] = NEW_ALtExpr();
+  INIT_ATTRIBUTES__ALtExpr(fra.me.REG[0]);
+  parser_prod___ALtExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALtExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4461;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser_prod___ALtExpr___init_altexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4461 */
+  fra.me.REG[2] = NEW_ALtExpr();
+  INIT_ATTRIBUTES__ALtExpr(fra.me.REG[2]);
+  parser_prod___ALtExpr___init_altexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ALtExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ALtExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ALtExpr();
+  INIT_ATTRIBUTES__ALtExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALtExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ALtExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ALtExpr();
+  INIT_ATTRIBUTES__ALtExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALtExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALtExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_ALtExpr();
+  INIT_ATTRIBUTES__ALtExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ALtExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ALtExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ALtExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ALtExpr();
+  INIT_ATTRIBUTES__ALtExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALtExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ALeExpr[115] = {
+  {(bigint) 3543 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ALeExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ALeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ALeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ALeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ALeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ALeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ALeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ALeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: ALeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3543 /* 12: ALeExpr < ALeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction224 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ALeExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63436,7 +57065,6 @@ const classtable_elt_t VFT_ReduceAction224[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63444,41 +57072,51 @@ const classtable_elt_t VFT_ReduceAction224[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction224 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction224___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction224 < ReduceAction224: superclass init_table position */},
-  {(bigint) parser___ReduceAction224___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction224(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction224;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction224(val_t self, char *from) {
-}
-val_t NEW_ReduceAction224_parser___ReduceAction224___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction224();
-  parser___ReduceAction224___init(self, init_table);
-  CHECKNEW_ReduceAction224(self, "parser::ReduceAction224::init for ReduceAction224");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction225[48] = {
-  {(bigint) 2619 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction225 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction225 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2619 /* 3: ReduceAction225 < ReduceAction225: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ALeExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ALeExpr___visit_all},
+  {(bigint) 4 /* 58: ALeExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ALeExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ALeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ALeExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63487,18 +57125,288 @@ const classtable_elt_t VFT_ReduceAction225[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ALeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ALeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ALeExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ALeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: ALeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___ALeExpr___empty_init},
+  {(bigint) parser_prod___ALeExpr___init_aleexpr},
+  {(bigint) 9 /* 114: ALeExpr < ALeExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ALeExpr::_parent */
+/* 3: Attribute ALeExpr::_location */
+/* 4: Attribute ALeExpr::_first_location */
+/* 5: Attribute ALeExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ALeExpr::_is_typed */
+/* 8: Attribute ALeExpr::_stype */
+/* 9: Attribute ALeExpr::_if_true_flow_ctx */
+/* 10: Attribute ALeExpr::_if_false_flow_ctx */
+/* 11: Attribute ALeExpr::_prop_signature */
+/* 12: Attribute ALeExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ALeExpr::_prop */
+/* 17: Attribute ALeExpr::_return_type */
+/* 18: Attribute ALeExpr::_n_expr */
+/* 19: Attribute ALeExpr::_n_closure_defs */
+/* 20: Attribute ALeExpr::_n_expr2 */
+void INIT_ATTRIBUTES__ALeExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ALeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALeExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_ALeExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ALeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ALeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALeExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_ALeExpr();
+  INIT_ATTRIBUTES__ALeExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALeExpr_parser_prod___ALeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4504;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser_prod___ALeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4504 */
+  fra.me.REG[0] = NEW_ALeExpr();
+  INIT_ATTRIBUTES__ALeExpr(fra.me.REG[0]);
+  parser_prod___ALeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4506;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser_prod___ALeExpr___init_aleexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4506 */
+  fra.me.REG[2] = NEW_ALeExpr();
+  INIT_ATTRIBUTES__ALeExpr(fra.me.REG[2]);
+  parser_prod___ALeExpr___init_aleexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ALeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ALeExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ALeExpr();
+  INIT_ATTRIBUTES__ALeExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALeExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ALeExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ALeExpr();
+  INIT_ATTRIBUTES__ALeExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALeExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_ALeExpr();
+  INIT_ATTRIBUTES__ALeExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ALeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ALeExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ALeExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ALeExpr();
+  INIT_ATTRIBUTES__ALeExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALeExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ALlExpr[115] = {
+  {(bigint) 3539 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ALlExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ALlExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ALlExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ALlExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ALlExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ALlExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ALlExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ALlExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: ALlExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3539 /* 12: ALlExpr < ALlExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction225 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ALlExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63506,7 +57414,6 @@ const classtable_elt_t VFT_ReduceAction225[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63514,41 +57421,51 @@ const classtable_elt_t VFT_ReduceAction225[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction225 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction225___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction225 < ReduceAction225: superclass init_table position */},
-  {(bigint) parser___ReduceAction225___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction225(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction225;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction225(val_t self, char *from) {
-}
-val_t NEW_ReduceAction225_parser___ReduceAction225___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction225();
-  parser___ReduceAction225___init(self, init_table);
-  CHECKNEW_ReduceAction225(self, "parser::ReduceAction225::init for ReduceAction225");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction226[48] = {
-  {(bigint) 2615 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction226 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction226 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2615 /* 3: ReduceAction226 < ReduceAction226: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ALlExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ALlExpr___visit_all},
+  {(bigint) 4 /* 58: ALlExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ALlExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ALlExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ALlExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63557,18 +57474,288 @@ const classtable_elt_t VFT_ReduceAction226[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ALlExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ALlExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ALlExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ALlExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: ALlExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___ALlExpr___empty_init},
+  {(bigint) parser_prod___ALlExpr___init_allexpr},
+  {(bigint) 9 /* 114: ALlExpr < ALlExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ALlExpr::_parent */
+/* 3: Attribute ALlExpr::_location */
+/* 4: Attribute ALlExpr::_first_location */
+/* 5: Attribute ALlExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ALlExpr::_is_typed */
+/* 8: Attribute ALlExpr::_stype */
+/* 9: Attribute ALlExpr::_if_true_flow_ctx */
+/* 10: Attribute ALlExpr::_if_false_flow_ctx */
+/* 11: Attribute ALlExpr::_prop_signature */
+/* 12: Attribute ALlExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ALlExpr::_prop */
+/* 17: Attribute ALlExpr::_return_type */
+/* 18: Attribute ALlExpr::_n_expr */
+/* 19: Attribute ALlExpr::_n_closure_defs */
+/* 20: Attribute ALlExpr::_n_expr2 */
+void INIT_ATTRIBUTES__ALlExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ALlExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALlExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_ALlExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ALlExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ALlExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ALlExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_ALlExpr();
+  INIT_ATTRIBUTES__ALlExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALlExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALlExpr_parser_prod___ALlExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4549;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser_prod___ALlExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4549 */
+  fra.me.REG[0] = NEW_ALlExpr();
+  INIT_ATTRIBUTES__ALlExpr(fra.me.REG[0]);
+  parser_prod___ALlExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALlExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALlExpr_parser_prod___ALlExpr___init_allexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4551;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser_prod___ALlExpr___init_allexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4551 */
+  fra.me.REG[2] = NEW_ALlExpr();
+  INIT_ATTRIBUTES__ALlExpr(fra.me.REG[2]);
+  parser_prod___ALlExpr___init_allexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ALlExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ALlExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ALlExpr();
+  INIT_ATTRIBUTES__ALlExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALlExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ALlExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ALlExpr();
+  INIT_ATTRIBUTES__ALlExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ALlExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ALlExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_ALlExpr();
+  INIT_ATTRIBUTES__ALlExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ALlExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ALlExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ALlExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ALlExpr();
+  INIT_ATTRIBUTES__ALlExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ALlExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AGtExpr[115] = {
+  {(bigint) 3547 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AGtExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AGtExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AGtExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AGtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AGtExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: AGtExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: AGtExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: AGtExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: AGtExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3547 /* 12: AGtExpr < AGtExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction226 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: AGtExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63576,7 +57763,6 @@ const classtable_elt_t VFT_ReduceAction226[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63584,41 +57770,52 @@ const classtable_elt_t VFT_ReduceAction226[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction226 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction226___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction226 < ReduceAction226: superclass init_table position */},
-  {(bigint) parser___ReduceAction226___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction226(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction226;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction226(val_t self, char *from) {
-}
-val_t NEW_ReduceAction226_parser___ReduceAction226___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction226();
-  parser___ReduceAction226___init(self, init_table);
-  CHECKNEW_ReduceAction226(self, "parser::ReduceAction226::init for ReduceAction226");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction227[48] = {
-  {(bigint) 2611 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction227 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction227 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2611 /* 3: ReduceAction227 < ReduceAction227: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AGtExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AGtExpr___visit_all},
+  {(bigint) 4 /* 58: AGtExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: AGtExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: AGtExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: AGtExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63626,19 +57823,288 @@ const classtable_elt_t VFT_ReduceAction227[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: AGtExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: AGtExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___AGtExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: AGtExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: AGtExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___AGtExpr___empty_init},
+  {(bigint) parser_prod___AGtExpr___init_agtexpr},
+  {(bigint) 9 /* 114: AGtExpr < AGtExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AGtExpr::_parent */
+/* 3: Attribute AGtExpr::_location */
+/* 4: Attribute AGtExpr::_first_location */
+/* 5: Attribute AGtExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AGtExpr::_is_typed */
+/* 8: Attribute AGtExpr::_stype */
+/* 9: Attribute AGtExpr::_if_true_flow_ctx */
+/* 10: Attribute AGtExpr::_if_false_flow_ctx */
+/* 11: Attribute AGtExpr::_prop_signature */
+/* 12: Attribute AGtExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AGtExpr::_prop */
+/* 17: Attribute AGtExpr::_return_type */
+/* 18: Attribute AGtExpr::_n_expr */
+/* 19: Attribute AGtExpr::_n_closure_defs */
+/* 20: Attribute AGtExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AGtExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AGtExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AGtExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_AGtExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AGtExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AGtExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AGtExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_AGtExpr();
+  INIT_ATTRIBUTES__AGtExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGtExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGtExpr_parser_prod___AGtExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4594;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser_prod___AGtExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4594 */
+  fra.me.REG[0] = NEW_AGtExpr();
+  INIT_ATTRIBUTES__AGtExpr(fra.me.REG[0]);
+  parser_prod___AGtExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGtExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4596;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser_prod___AGtExpr___init_agtexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4596 */
+  fra.me.REG[2] = NEW_AGtExpr();
+  INIT_ATTRIBUTES__AGtExpr(fra.me.REG[2]);
+  parser_prod___AGtExpr___init_agtexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AGtExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AGtExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AGtExpr();
+  INIT_ATTRIBUTES__AGtExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGtExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AGtExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_AGtExpr();
+  INIT_ATTRIBUTES__AGtExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGtExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGtExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_AGtExpr();
+  INIT_ATTRIBUTES__AGtExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AGtExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AGtExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_AGtExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_AGtExpr();
+  INIT_ATTRIBUTES__AGtExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGtExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AGeExpr[115] = {
+  {(bigint) 3555 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AGeExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AGeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AGeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AGeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AGeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: AGeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: AGeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: AGeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: AGeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3555 /* 12: AGeExpr < AGeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction227 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: AGeExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63646,7 +58112,6 @@ const classtable_elt_t VFT_ReduceAction227[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63654,41 +58119,52 @@ const classtable_elt_t VFT_ReduceAction227[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction227 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction227___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction227 < ReduceAction227: superclass init_table position */},
-  {(bigint) parser___ReduceAction227___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction227(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction227;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction227(val_t self, char *from) {
-}
-val_t NEW_ReduceAction227_parser___ReduceAction227___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction227();
-  parser___ReduceAction227___init(self, init_table);
-  CHECKNEW_ReduceAction227(self, "parser::ReduceAction227::init for ReduceAction227");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction228[48] = {
-  {(bigint) 2607 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction228 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction228 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2607 /* 3: ReduceAction228 < ReduceAction228: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AGeExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AGeExpr___visit_all},
+  {(bigint) 4 /* 58: AGeExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: AGeExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: AGeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: AGeExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63696,19 +58172,288 @@ const classtable_elt_t VFT_ReduceAction228[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: AGeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: AGeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___AGeExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: AGeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: AGeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___AGeExpr___empty_init},
+  {(bigint) parser_prod___AGeExpr___init_ageexpr},
+  {(bigint) 9 /* 114: AGeExpr < AGeExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AGeExpr::_parent */
+/* 3: Attribute AGeExpr::_location */
+/* 4: Attribute AGeExpr::_first_location */
+/* 5: Attribute AGeExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AGeExpr::_is_typed */
+/* 8: Attribute AGeExpr::_stype */
+/* 9: Attribute AGeExpr::_if_true_flow_ctx */
+/* 10: Attribute AGeExpr::_if_false_flow_ctx */
+/* 11: Attribute AGeExpr::_prop_signature */
+/* 12: Attribute AGeExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AGeExpr::_prop */
+/* 17: Attribute AGeExpr::_return_type */
+/* 18: Attribute AGeExpr::_n_expr */
+/* 19: Attribute AGeExpr::_n_closure_defs */
+/* 20: Attribute AGeExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AGeExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AGeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AGeExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_AGeExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AGeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AGeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AGeExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_AGeExpr();
+  INIT_ATTRIBUTES__AGeExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGeExpr_parser_prod___AGeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4639;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser_prod___AGeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4639 */
+  fra.me.REG[0] = NEW_AGeExpr();
+  INIT_ATTRIBUTES__AGeExpr(fra.me.REG[0]);
+  parser_prod___AGeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4641;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser_prod___AGeExpr___init_ageexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4641 */
+  fra.me.REG[2] = NEW_AGeExpr();
+  INIT_ATTRIBUTES__AGeExpr(fra.me.REG[2]);
+  parser_prod___AGeExpr___init_ageexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AGeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AGeExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AGeExpr();
+  INIT_ATTRIBUTES__AGeExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGeExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AGeExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_AGeExpr();
+  INIT_ATTRIBUTES__AGeExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGeExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_AGeExpr();
+  INIT_ATTRIBUTES__AGeExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AGeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AGeExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_AGeExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_AGeExpr();
+  INIT_ATTRIBUTES__AGeExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGeExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AGgExpr[115] = {
+  {(bigint) 3551 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AGgExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AGgExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AGgExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AGgExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AGgExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: AGgExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: AGgExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: AGgExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: AGgExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3551 /* 12: AGgExpr < AGgExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction228 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: AGgExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63716,7 +58461,6 @@ const classtable_elt_t VFT_ReduceAction228[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63724,45 +58468,330 @@ const classtable_elt_t VFT_ReduceAction228[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction228 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction228___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction228 < ReduceAction228: superclass init_table position */},
-  {(bigint) parser___ReduceAction228___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction228(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction228;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction228(val_t self, char *from) {
-}
-val_t NEW_ReduceAction228_parser___ReduceAction228___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction228();
-  parser___ReduceAction228___init(self, init_table);
-  CHECKNEW_ReduceAction228(self, "parser::ReduceAction228::init for ReduceAction228");
-  return self;
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AGgExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AGgExpr___visit_all},
+  {(bigint) 4 /* 58: AGgExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: AGgExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: AGgExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: AGgExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: AGgExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: AGgExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___AGgExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: AGgExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: AGgExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___AGgExpr___empty_init},
+  {(bigint) parser_prod___AGgExpr___init_aggexpr},
+  {(bigint) 9 /* 114: AGgExpr < AGgExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AGgExpr::_parent */
+/* 3: Attribute AGgExpr::_location */
+/* 4: Attribute AGgExpr::_first_location */
+/* 5: Attribute AGgExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AGgExpr::_is_typed */
+/* 8: Attribute AGgExpr::_stype */
+/* 9: Attribute AGgExpr::_if_true_flow_ctx */
+/* 10: Attribute AGgExpr::_if_false_flow_ctx */
+/* 11: Attribute AGgExpr::_prop_signature */
+/* 12: Attribute AGgExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AGgExpr::_prop */
+/* 17: Attribute AGgExpr::_return_type */
+/* 18: Attribute AGgExpr::_n_expr */
+/* 19: Attribute AGgExpr::_n_closure_defs */
+/* 20: Attribute AGgExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AGgExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AGgExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AGgExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_AGgExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AGgExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AGgExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction229[48] = {
-  {(bigint) 2603 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction229 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction229 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2603 /* 3: ReduceAction229 < ReduceAction229: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AGgExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_AGgExpr();
+  INIT_ATTRIBUTES__AGgExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGgExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGgExpr_parser_prod___AGgExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4684;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser_prod___AGgExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4684 */
+  fra.me.REG[0] = NEW_AGgExpr();
+  INIT_ATTRIBUTES__AGgExpr(fra.me.REG[0]);
+  parser_prod___AGgExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGgExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGgExpr_parser_prod___AGgExpr___init_aggexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4686;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser_prod___AGgExpr___init_aggexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4686 */
+  fra.me.REG[2] = NEW_AGgExpr();
+  INIT_ATTRIBUTES__AGgExpr(fra.me.REG[2]);
+  parser_prod___AGgExpr___init_aggexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AGgExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AGgExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AGgExpr();
+  INIT_ATTRIBUTES__AGgExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGgExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AGgExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_AGgExpr();
+  INIT_ATTRIBUTES__AGgExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AGgExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AGgExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_AGgExpr();
+  INIT_ATTRIBUTES__AGgExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AGgExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AGgExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_AGgExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_AGgExpr();
+  INIT_ATTRIBUTES__AGgExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AGgExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AIsaExpr[85] = {
+  {(bigint) 3363 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AIsaExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AIsaExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AIsaExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2999 /* 5: AIsaExpr < ATypeCheckExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AIsaExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3207 /* 7: AIsaExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3363 /* 8: AIsaExpr < AIsaExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63771,14 +58800,9 @@ const classtable_elt_t VFT_ReduceAction229[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction229 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: AIsaExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63786,7 +58810,6 @@ const classtable_elt_t VFT_ReduceAction229[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63794,61 +58817,209 @@ const classtable_elt_t VFT_ReduceAction229[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction229 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction229___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction229 < ReduceAction229: superclass init_table position */},
-  {(bigint) parser___ReduceAction229___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AIsaExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AIsaExpr___visit_all},
+  {(bigint) 2 /* 58: AIsaExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AIsaExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 65: AIsaExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 0 /* 67: AIsaExpr < ATypeCheckExpr: superclass init_table position */},
+  {(bigint) typing___ATypeCheckExpr___check_expr_cast},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 4 /* 72: AIsaExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AIsaExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 5 /* 79: AIsaExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser_prod___AIsaExpr___empty_init},
+  {(bigint) parser_prod___AIsaExpr___init_aisaexpr},
+  {(bigint) 6 /* 82: AIsaExpr < AIsaExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AIsaExpr___n_expr},
+  {(bigint) parser_nodes___AIsaExpr___n_type},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction229(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AIsaExpr::_parent */
+/* 3: Attribute AIsaExpr::_location */
+/* 4: Attribute AIsaExpr::_first_location */
+/* 5: Attribute AIsaExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AIsaExpr::_is_typed */
+/* 8: Attribute AIsaExpr::_stype */
+/* 9: Attribute AIsaExpr::_if_true_flow_ctx */
+/* 10: Attribute AIsaExpr::_if_false_flow_ctx */
+/* 11: Attribute AIsaExpr::_n_expr */
+/* 12: Attribute AIsaExpr::_n_type */
+void INIT_ATTRIBUTES__AIsaExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AIsaExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AIsaExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction229;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction229(val_t self, char *from) {
-}
-val_t NEW_ReduceAction229_parser___ReduceAction229___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction229();
-  parser___ReduceAction229___init(self, init_table);
-  CHECKNEW_ReduceAction229(self, "parser::ReduceAction229::init for ReduceAction229");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AIsaExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AIsaExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AIsaExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIsaExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIsaExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction230[48] = {
-  {(bigint) 2595 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction230 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction230 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2595 /* 3: ReduceAction230 < ReduceAction230: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AIsaExpr_parser_prod___AIsaExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4729;
+  fra.me.meth = LOCATE_NEW_AIsaExpr_parser_prod___AIsaExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4729 */
+  fra.me.REG[0] = NEW_AIsaExpr();
+  INIT_ATTRIBUTES__AIsaExpr(fra.me.REG[0]);
+  parser_prod___AIsaExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AIsaExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4731;
+  fra.me.meth = LOCATE_NEW_AIsaExpr_parser_prod___AIsaExpr___init_aisaexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4731 */
+  fra.me.REG[2] = NEW_AIsaExpr();
+  INIT_ATTRIBUTES__AIsaExpr(fra.me.REG[2]);
+  parser_prod___AIsaExpr___init_aisaexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AIsaExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AIsaExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AIsaExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AIsaExpr();
+  INIT_ATTRIBUTES__AIsaExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AIsaExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_APlusExpr[115] = {
+  {(bigint) 3519 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: APlusExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: APlusExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: APlusExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: APlusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: APlusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: APlusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: APlusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: APlusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: APlusExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3519 /* 12: APlusExpr < APlusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction230 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: APlusExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63856,7 +59027,6 @@ const classtable_elt_t VFT_ReduceAction230[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63864,41 +59034,52 @@ const classtable_elt_t VFT_ReduceAction230[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction230 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction230___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction230 < ReduceAction230: superclass init_table position */},
-  {(bigint) parser___ReduceAction230___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction230(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction230;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction230(val_t self, char *from) {
-}
-val_t NEW_ReduceAction230_parser___ReduceAction230___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction230();
-  parser___ReduceAction230___init(self, init_table);
-  CHECKNEW_ReduceAction230(self, "parser::ReduceAction230::init for ReduceAction230");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction231[48] = {
-  {(bigint) 2591 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction231 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction231 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2591 /* 3: ReduceAction231 < ReduceAction231: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___APlusExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___APlusExpr___visit_all},
+  {(bigint) 4 /* 58: APlusExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: APlusExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: APlusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: APlusExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63906,19 +59087,288 @@ const classtable_elt_t VFT_ReduceAction231[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: APlusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: APlusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___APlusExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: APlusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: APlusExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___APlusExpr___empty_init},
+  {(bigint) parser_prod___APlusExpr___init_aplusexpr},
+  {(bigint) 9 /* 114: APlusExpr < APlusExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute APlusExpr::_parent */
+/* 3: Attribute APlusExpr::_location */
+/* 4: Attribute APlusExpr::_first_location */
+/* 5: Attribute APlusExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute APlusExpr::_is_typed */
+/* 8: Attribute APlusExpr::_stype */
+/* 9: Attribute APlusExpr::_if_true_flow_ctx */
+/* 10: Attribute APlusExpr::_if_false_flow_ctx */
+/* 11: Attribute APlusExpr::_prop_signature */
+/* 12: Attribute APlusExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute APlusExpr::_prop */
+/* 17: Attribute APlusExpr::_return_type */
+/* 18: Attribute APlusExpr::_n_expr */
+/* 19: Attribute APlusExpr::_n_closure_defs */
+/* 20: Attribute APlusExpr::_n_expr2 */
+void INIT_ATTRIBUTES__APlusExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__APlusExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_APlusExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_APlusExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_APlusExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_APlusExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_APlusExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_APlusExpr();
+  INIT_ATTRIBUTES__APlusExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_APlusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APlusExpr_parser_prod___APlusExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4774;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser_prod___APlusExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4774 */
+  fra.me.REG[0] = NEW_APlusExpr();
+  INIT_ATTRIBUTES__APlusExpr(fra.me.REG[0]);
+  parser_prod___APlusExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_APlusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4776;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser_prod___APlusExpr___init_aplusexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4776 */
+  fra.me.REG[2] = NEW_APlusExpr();
+  INIT_ATTRIBUTES__APlusExpr(fra.me.REG[2]);
+  parser_prod___APlusExpr___init_aplusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_APlusExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_APlusExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_APlusExpr();
+  INIT_ATTRIBUTES__APlusExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APlusExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_APlusExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_APlusExpr();
+  INIT_ATTRIBUTES__APlusExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_APlusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APlusExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_APlusExpr();
+  INIT_ATTRIBUTES__APlusExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_APlusExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_APlusExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_APlusExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_APlusExpr();
+  INIT_ATTRIBUTES__APlusExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APlusExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AMinusExpr[115] = {
+  {(bigint) 3531 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AMinusExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AMinusExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AMinusExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AMinusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AMinusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: AMinusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: AMinusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: AMinusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: AMinusExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3531 /* 12: AMinusExpr < AMinusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction231 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: AMinusExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63926,7 +59376,6 @@ const classtable_elt_t VFT_ReduceAction231[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -63934,41 +59383,52 @@ const classtable_elt_t VFT_ReduceAction231[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction231 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction231___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction231 < ReduceAction231: superclass init_table position */},
-  {(bigint) parser___ReduceAction231___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction231(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction231;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction231(val_t self, char *from) {
-}
-val_t NEW_ReduceAction231_parser___ReduceAction231___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction231();
-  parser___ReduceAction231___init(self, init_table);
-  CHECKNEW_ReduceAction231(self, "parser::ReduceAction231::init for ReduceAction231");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction232[48] = {
-  {(bigint) 2587 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction232 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction232 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2587 /* 3: ReduceAction232 < ReduceAction232: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AMinusExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AMinusExpr___visit_all},
+  {(bigint) 4 /* 58: AMinusExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: AMinusExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: AMinusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: AMinusExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -63976,19 +59436,288 @@ const classtable_elt_t VFT_ReduceAction232[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: AMinusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: AMinusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___AMinusExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: AMinusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: AMinusExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___AMinusExpr___empty_init},
+  {(bigint) parser_prod___AMinusExpr___init_aminusexpr},
+  {(bigint) 9 /* 114: AMinusExpr < AMinusExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AMinusExpr::_parent */
+/* 3: Attribute AMinusExpr::_location */
+/* 4: Attribute AMinusExpr::_first_location */
+/* 5: Attribute AMinusExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AMinusExpr::_is_typed */
+/* 8: Attribute AMinusExpr::_stype */
+/* 9: Attribute AMinusExpr::_if_true_flow_ctx */
+/* 10: Attribute AMinusExpr::_if_false_flow_ctx */
+/* 11: Attribute AMinusExpr::_prop_signature */
+/* 12: Attribute AMinusExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AMinusExpr::_prop */
+/* 17: Attribute AMinusExpr::_return_type */
+/* 18: Attribute AMinusExpr::_n_expr */
+/* 19: Attribute AMinusExpr::_n_closure_defs */
+/* 20: Attribute AMinusExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AMinusExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AMinusExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMinusExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_AMinusExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AMinusExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AMinusExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMinusExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_AMinusExpr();
+  INIT_ATTRIBUTES__AMinusExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AMinusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AMinusExpr_parser_prod___AMinusExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4819;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser_prod___AMinusExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4819 */
+  fra.me.REG[0] = NEW_AMinusExpr();
+  INIT_ATTRIBUTES__AMinusExpr(fra.me.REG[0]);
+  parser_prod___AMinusExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AMinusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4821;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser_prod___AMinusExpr___init_aminusexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4821 */
+  fra.me.REG[2] = NEW_AMinusExpr();
+  INIT_ATTRIBUTES__AMinusExpr(fra.me.REG[2]);
+  parser_prod___AMinusExpr___init_aminusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AMinusExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AMinusExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AMinusExpr();
+  INIT_ATTRIBUTES__AMinusExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMinusExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AMinusExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_AMinusExpr();
+  INIT_ATTRIBUTES__AMinusExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AMinusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AMinusExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_AMinusExpr();
+  INIT_ATTRIBUTES__AMinusExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AMinusExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AMinusExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_AMinusExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_AMinusExpr();
+  INIT_ATTRIBUTES__AMinusExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMinusExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AStarshipExpr[115] = {
+  {(bigint) 3507 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AStarshipExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AStarshipExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AStarshipExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AStarshipExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AStarshipExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: AStarshipExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: AStarshipExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: AStarshipExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: AStarshipExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3507 /* 12: AStarshipExpr < AStarshipExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction232 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: AStarshipExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -63996,7 +59725,6 @@ const classtable_elt_t VFT_ReduceAction232[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64004,41 +59732,51 @@ const classtable_elt_t VFT_ReduceAction232[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction232 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction232___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction232 < ReduceAction232: superclass init_table position */},
-  {(bigint) parser___ReduceAction232___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction232(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction232;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction232(val_t self, char *from) {
-}
-val_t NEW_ReduceAction232_parser___ReduceAction232___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction232();
-  parser___ReduceAction232___init(self, init_table);
-  CHECKNEW_ReduceAction232(self, "parser::ReduceAction232::init for ReduceAction232");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction233[48] = {
-  {(bigint) 2583 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction233 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction233 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2583 /* 3: ReduceAction233 < ReduceAction233: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AStarshipExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AStarshipExpr___visit_all},
+  {(bigint) 4 /* 58: AStarshipExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: AStarshipExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: AStarshipExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: AStarshipExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64047,18 +59785,288 @@ const classtable_elt_t VFT_ReduceAction233[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: AStarshipExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: AStarshipExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___AStarshipExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: AStarshipExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: AStarshipExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___AStarshipExpr___empty_init},
+  {(bigint) parser_prod___AStarshipExpr___init_astarshipexpr},
+  {(bigint) 9 /* 114: AStarshipExpr < AStarshipExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AStarshipExpr::_parent */
+/* 3: Attribute AStarshipExpr::_location */
+/* 4: Attribute AStarshipExpr::_first_location */
+/* 5: Attribute AStarshipExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AStarshipExpr::_is_typed */
+/* 8: Attribute AStarshipExpr::_stype */
+/* 9: Attribute AStarshipExpr::_if_true_flow_ctx */
+/* 10: Attribute AStarshipExpr::_if_false_flow_ctx */
+/* 11: Attribute AStarshipExpr::_prop_signature */
+/* 12: Attribute AStarshipExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AStarshipExpr::_prop */
+/* 17: Attribute AStarshipExpr::_return_type */
+/* 18: Attribute AStarshipExpr::_n_expr */
+/* 19: Attribute AStarshipExpr::_n_closure_defs */
+/* 20: Attribute AStarshipExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AStarshipExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AStarshipExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AStarshipExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_AStarshipExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AStarshipExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AStarshipExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AStarshipExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_AStarshipExpr();
+  INIT_ATTRIBUTES__AStarshipExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStarshipExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStarshipExpr_parser_prod___AStarshipExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4864;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser_prod___AStarshipExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4864 */
+  fra.me.REG[0] = NEW_AStarshipExpr();
+  INIT_ATTRIBUTES__AStarshipExpr(fra.me.REG[0]);
+  parser_prod___AStarshipExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStarshipExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4866;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser_prod___AStarshipExpr___init_astarshipexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4866 */
+  fra.me.REG[2] = NEW_AStarshipExpr();
+  INIT_ATTRIBUTES__AStarshipExpr(fra.me.REG[2]);
+  parser_prod___AStarshipExpr___init_astarshipexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AStarshipExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AStarshipExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AStarshipExpr();
+  INIT_ATTRIBUTES__AStarshipExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStarshipExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AStarshipExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_AStarshipExpr();
+  INIT_ATTRIBUTES__AStarshipExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStarshipExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStarshipExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_AStarshipExpr();
+  INIT_ATTRIBUTES__AStarshipExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AStarshipExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AStarshipExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_AStarshipExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_AStarshipExpr();
+  INIT_ATTRIBUTES__AStarshipExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStarshipExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AStarExpr[115] = {
+  {(bigint) 3511 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AStarExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AStarExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AStarExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AStarExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AStarExpr < AExpr: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: AStarExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: AStarExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: AStarExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: AStarExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3511 /* 12: AStarExpr < AStarExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction233 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: AStarExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64066,7 +60074,6 @@ const classtable_elt_t VFT_ReduceAction233[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64074,41 +60081,52 @@ const classtable_elt_t VFT_ReduceAction233[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction233 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction233___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction233 < ReduceAction233: superclass init_table position */},
-  {(bigint) parser___ReduceAction233___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction233(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction233;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction233(val_t self, char *from) {
-}
-val_t NEW_ReduceAction233_parser___ReduceAction233___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction233();
-  parser___ReduceAction233___init(self, init_table);
-  CHECKNEW_ReduceAction233(self, "parser::ReduceAction233::init for ReduceAction233");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction234[48] = {
-  {(bigint) 2579 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction234 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction234 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2579 /* 3: ReduceAction234 < ReduceAction234: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AStarExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AStarExpr___visit_all},
+  {(bigint) 4 /* 58: AStarExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: AStarExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: AStarExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: AStarExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64116,19 +60134,288 @@ const classtable_elt_t VFT_ReduceAction234[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: AStarExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: AStarExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___AStarExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: AStarExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: AStarExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___AStarExpr___empty_init},
+  {(bigint) parser_prod___AStarExpr___init_astarexpr},
+  {(bigint) 9 /* 114: AStarExpr < AStarExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AStarExpr::_parent */
+/* 3: Attribute AStarExpr::_location */
+/* 4: Attribute AStarExpr::_first_location */
+/* 5: Attribute AStarExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AStarExpr::_is_typed */
+/* 8: Attribute AStarExpr::_stype */
+/* 9: Attribute AStarExpr::_if_true_flow_ctx */
+/* 10: Attribute AStarExpr::_if_false_flow_ctx */
+/* 11: Attribute AStarExpr::_prop_signature */
+/* 12: Attribute AStarExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AStarExpr::_prop */
+/* 17: Attribute AStarExpr::_return_type */
+/* 18: Attribute AStarExpr::_n_expr */
+/* 19: Attribute AStarExpr::_n_closure_defs */
+/* 20: Attribute AStarExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AStarExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AStarExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AStarExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_AStarExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AStarExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AStarExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AStarExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_AStarExpr();
+  INIT_ATTRIBUTES__AStarExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStarExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStarExpr_parser_prod___AStarExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4909;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser_prod___AStarExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4909 */
+  fra.me.REG[0] = NEW_AStarExpr();
+  INIT_ATTRIBUTES__AStarExpr(fra.me.REG[0]);
+  parser_prod___AStarExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStarExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4911;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser_prod___AStarExpr___init_astarexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4911 */
+  fra.me.REG[2] = NEW_AStarExpr();
+  INIT_ATTRIBUTES__AStarExpr(fra.me.REG[2]);
+  parser_prod___AStarExpr___init_astarexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AStarExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AStarExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AStarExpr();
+  INIT_ATTRIBUTES__AStarExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStarExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AStarExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_AStarExpr();
+  INIT_ATTRIBUTES__AStarExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStarExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStarExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_AStarExpr();
+  INIT_ATTRIBUTES__AStarExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AStarExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AStarExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_AStarExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_AStarExpr();
+  INIT_ATTRIBUTES__AStarExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStarExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ASlashExpr[115] = {
+  {(bigint) 3515 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ASlashExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ASlashExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ASlashExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ASlashExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ASlashExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ASlashExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ASlashExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ASlashExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: ASlashExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3515 /* 12: ASlashExpr < ASlashExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction234 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ASlashExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64136,7 +60423,6 @@ const classtable_elt_t VFT_ReduceAction234[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64144,41 +60430,51 @@ const classtable_elt_t VFT_ReduceAction234[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction234 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction234___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction234 < ReduceAction234: superclass init_table position */},
-  {(bigint) parser___ReduceAction234___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction234(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction234;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction234(val_t self, char *from) {
-}
-val_t NEW_ReduceAction234_parser___ReduceAction234___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction234();
-  parser___ReduceAction234___init(self, init_table);
-  CHECKNEW_ReduceAction234(self, "parser::ReduceAction234::init for ReduceAction234");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction235[48] = {
-  {(bigint) 2575 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction235 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction235 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2575 /* 3: ReduceAction235 < ReduceAction235: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASlashExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASlashExpr___visit_all},
+  {(bigint) 4 /* 58: ASlashExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ASlashExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ASlashExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ASlashExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64187,18 +60483,288 @@ const classtable_elt_t VFT_ReduceAction235[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ASlashExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ASlashExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ASlashExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ASlashExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: ASlashExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___ASlashExpr___empty_init},
+  {(bigint) parser_prod___ASlashExpr___init_aslashexpr},
+  {(bigint) 9 /* 114: ASlashExpr < ASlashExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ASlashExpr::_parent */
+/* 3: Attribute ASlashExpr::_location */
+/* 4: Attribute ASlashExpr::_first_location */
+/* 5: Attribute ASlashExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ASlashExpr::_is_typed */
+/* 8: Attribute ASlashExpr::_stype */
+/* 9: Attribute ASlashExpr::_if_true_flow_ctx */
+/* 10: Attribute ASlashExpr::_if_false_flow_ctx */
+/* 11: Attribute ASlashExpr::_prop_signature */
+/* 12: Attribute ASlashExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ASlashExpr::_prop */
+/* 17: Attribute ASlashExpr::_return_type */
+/* 18: Attribute ASlashExpr::_n_expr */
+/* 19: Attribute ASlashExpr::_n_closure_defs */
+/* 20: Attribute ASlashExpr::_n_expr2 */
+void INIT_ATTRIBUTES__ASlashExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ASlashExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASlashExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_ASlashExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ASlashExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ASlashExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASlashExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_ASlashExpr();
+  INIT_ATTRIBUTES__ASlashExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASlashExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASlashExpr_parser_prod___ASlashExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4954;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser_prod___ASlashExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4954 */
+  fra.me.REG[0] = NEW_ASlashExpr();
+  INIT_ATTRIBUTES__ASlashExpr(fra.me.REG[0]);
+  parser_prod___ASlashExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASlashExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4956;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser_prod___ASlashExpr___init_aslashexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4956 */
+  fra.me.REG[2] = NEW_ASlashExpr();
+  INIT_ATTRIBUTES__ASlashExpr(fra.me.REG[2]);
+  parser_prod___ASlashExpr___init_aslashexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ASlashExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ASlashExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ASlashExpr();
+  INIT_ATTRIBUTES__ASlashExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASlashExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ASlashExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ASlashExpr();
+  INIT_ATTRIBUTES__ASlashExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASlashExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASlashExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_ASlashExpr();
+  INIT_ATTRIBUTES__ASlashExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ASlashExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ASlashExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ASlashExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ASlashExpr();
+  INIT_ATTRIBUTES__ASlashExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASlashExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_APercentExpr[115] = {
+  {(bigint) 3523 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: APercentExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: APercentExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: APercentExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: APercentExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: APercentExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: APercentExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: APercentExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: APercentExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 11: APercentExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3523 /* 12: APercentExpr < APercentExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction235 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: APercentExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64206,7 +60772,6 @@ const classtable_elt_t VFT_ReduceAction235[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64214,61 +60779,341 @@ const classtable_elt_t VFT_ReduceAction235[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction235 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction235___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction235 < ReduceAction235: superclass init_table position */},
-  {(bigint) parser___ReduceAction235___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___APercentExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___APercentExpr___visit_all},
+  {(bigint) 4 /* 58: APercentExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: APercentExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: APercentExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: APercentExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABinopExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: APercentExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: APercentExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___APercentExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: APercentExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___ABinopExpr___empty_init},
+  {(bigint) parser_prod___ABinopExpr___init_abinopexpr},
+  {(bigint) 8 /* 110: APercentExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABinopExpr___n_expr2},
+  {(bigint) parser_prod___APercentExpr___empty_init},
+  {(bigint) parser_prod___APercentExpr___init_apercentexpr},
+  {(bigint) 9 /* 114: APercentExpr < APercentExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction235(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction235;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction235(val_t self, char *from) {
-}
-val_t NEW_ReduceAction235_parser___ReduceAction235___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction235();
-  parser___ReduceAction235___init(self, init_table);
-  CHECKNEW_ReduceAction235(self, "parser::ReduceAction235::init for ReduceAction235");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute APercentExpr::_parent */
+/* 3: Attribute APercentExpr::_location */
+/* 4: Attribute APercentExpr::_first_location */
+/* 5: Attribute APercentExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute APercentExpr::_is_typed */
+/* 8: Attribute APercentExpr::_stype */
+/* 9: Attribute APercentExpr::_if_true_flow_ctx */
+/* 10: Attribute APercentExpr::_if_false_flow_ctx */
+/* 11: Attribute APercentExpr::_prop_signature */
+/* 12: Attribute APercentExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute APercentExpr::_prop */
+/* 17: Attribute APercentExpr::_return_type */
+/* 18: Attribute APercentExpr::_n_expr */
+/* 19: Attribute APercentExpr::_n_closure_defs */
+/* 20: Attribute APercentExpr::_n_expr2 */
+void INIT_ATTRIBUTES__APercentExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__APercentExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_APercentExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_APercentExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_APercentExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_APercentExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction236[48] = {
-  {(bigint) 2571 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction236 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction236 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2571 /* 3: ReduceAction236 < ReduceAction236: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_APercentExpr_parser_prod___ABinopExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4099;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser_prod___ABinopExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4099 */
+  fra.me.REG[0] = NEW_APercentExpr();
+  INIT_ATTRIBUTES__APercentExpr(fra.me.REG[0]);
+  parser_prod___ABinopExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_APercentExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APercentExpr_parser_prod___APercentExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4999;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser_prod___APercentExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4999 */
+  fra.me.REG[0] = NEW_APercentExpr();
+  INIT_ATTRIBUTES__APercentExpr(fra.me.REG[0]);
+  parser_prod___APercentExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_APercentExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5001;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser_prod___APercentExpr___init_apercentexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5001 */
+  fra.me.REG[2] = NEW_APercentExpr();
+  INIT_ATTRIBUTES__APercentExpr(fra.me.REG[2]);
+  parser_prod___APercentExpr___init_apercentexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_APercentExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_APercentExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_APercentExpr();
+  INIT_ATTRIBUTES__APercentExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APercentExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_APercentExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_APercentExpr();
+  INIT_ATTRIBUTES__APercentExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_APercentExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APercentExpr_parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4101;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser_prod___ABinopExpr___init_abinopexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4101 */
+  fra.me.REG[2] = NEW_APercentExpr();
+  INIT_ATTRIBUTES__APercentExpr(fra.me.REG[2]);
+  parser_prod___ABinopExpr___init_abinopexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_APercentExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_APercentExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_APercentExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_APercentExpr();
+  INIT_ATTRIBUTES__APercentExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APercentExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AUminusExpr[112] = {
+  {(bigint) 3483 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AUminusExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AUminusExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AUminusExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AUminusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AUminusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: AUminusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: AUminusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: AUminusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3483 /* 11: AUminusExpr < AUminusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction236 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: AUminusExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64276,7 +61121,6 @@ const classtable_elt_t VFT_ReduceAction236[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64284,46 +61128,286 @@ const classtable_elt_t VFT_ReduceAction236[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction236 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction236___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction236 < ReduceAction236: superclass init_table position */},
-  {(bigint) parser___ReduceAction236___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction236(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction236;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction236(val_t self, char *from) {
-}
-val_t NEW_ReduceAction236_parser___ReduceAction236___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction236();
-  parser___ReduceAction236___init(self, init_table);
-  CHECKNEW_ReduceAction236(self, "parser::ReduceAction236::init for ReduceAction236");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction237[48] = {
-  {(bigint) 2567 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction237 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction237 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2567 /* 3: ReduceAction237 < ReduceAction237: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AUminusExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AUminusExpr___visit_all},
+  {(bigint) 4 /* 58: AUminusExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: AUminusExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: AUminusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: AUminusExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___AUminusExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: AUminusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: AUminusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___AUminusExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: AUminusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___AUminusExpr___empty_init},
+  {(bigint) parser_prod___AUminusExpr___init_auminusexpr},
+  {(bigint) 8 /* 110: AUminusExpr < AUminusExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AUminusExpr___n_minus},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AUminusExpr::_parent */
+/* 3: Attribute AUminusExpr::_location */
+/* 4: Attribute AUminusExpr::_first_location */
+/* 5: Attribute AUminusExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AUminusExpr::_is_typed */
+/* 8: Attribute AUminusExpr::_stype */
+/* 9: Attribute AUminusExpr::_if_true_flow_ctx */
+/* 10: Attribute AUminusExpr::_if_false_flow_ctx */
+/* 11: Attribute AUminusExpr::_prop_signature */
+/* 12: Attribute AUminusExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AUminusExpr::_prop */
+/* 17: Attribute AUminusExpr::_return_type */
+/* 18: Attribute AUminusExpr::_n_expr */
+/* 19: Attribute AUminusExpr::_n_closure_defs */
+/* 20: Attribute AUminusExpr::_n_minus */
+void INIT_ATTRIBUTES__AUminusExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AUminusExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AUminusExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_AUminusExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AUminusExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AUminusExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AUminusExpr____n_minus(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_minus", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AUminusExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_AUminusExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_AUminusExpr();
+  INIT_ATTRIBUTES__AUminusExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AUminusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AUminusExpr_parser_prod___AUminusExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5044;
+  fra.me.meth = LOCATE_NEW_AUminusExpr_parser_prod___AUminusExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5044 */
+  fra.me.REG[0] = NEW_AUminusExpr();
+  INIT_ATTRIBUTES__AUminusExpr(fra.me.REG[0]);
+  parser_prod___AUminusExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AUminusExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5046;
+  fra.me.meth = LOCATE_NEW_AUminusExpr_parser_prod___AUminusExpr___init_auminusexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5046 */
+  fra.me.REG[2] = NEW_AUminusExpr();
+  INIT_ATTRIBUTES__AUminusExpr(fra.me.REG[2]);
+  parser_prod___AUminusExpr___init_auminusexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AUminusExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AUminusExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AUminusExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AUminusExpr();
+  INIT_ATTRIBUTES__AUminusExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AUminusExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AUminusExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_AUminusExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_AUminusExpr();
+  INIT_ATTRIBUTES__AUminusExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AUminusExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ANewExpr[107] = {
+  {(bigint) 3463 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ANewExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ANewExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ANewExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ANewExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ANewExpr < AExpr: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ANewExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3463 /* 9: ANewExpr < ANewExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64331,14 +61415,9 @@ const classtable_elt_t VFT_ReduceAction237[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction237 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 4 /* 19: ANewExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64346,7 +61425,6 @@ const classtable_elt_t VFT_ReduceAction237[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64354,45 +61432,51 @@ const classtable_elt_t VFT_ReduceAction237[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction237 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction237___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction237 < ReduceAction237: superclass init_table position */},
-  {(bigint) parser___ReduceAction237___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction237(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction237;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction237(val_t self, char *from) {
-}
-val_t NEW_ReduceAction237_parser___ReduceAction237___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction237();
-  parser___ReduceAction237___init(self, init_table);
-  CHECKNEW_ReduceAction237(self, "parser::ReduceAction237::init for ReduceAction237");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction238[48] = {
-  {(bigint) 2563 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction238 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction238 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2563 /* 3: ReduceAction238 < ReduceAction238: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANewExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANewExpr___visit_all},
+  {(bigint) 3 /* 58: ANewExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANewExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 2 /* 65: ANewExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 5 /* 72: ANewExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ANewExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64401,66 +61485,193 @@ const classtable_elt_t VFT_ReduceAction238[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction238 < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction238 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction238___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction238 < ReduceAction238: superclass init_table position */},
-  {(bigint) parser___ReduceAction238___init},
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ANewExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 1 /* 91: ANewExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 0 /* 97: ANewExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) parser_prod___ANewExpr___empty_init},
+  {(bigint) parser_prod___ANewExpr___init_anewexpr},
+  {(bigint) 6 /* 102: ANewExpr < ANewExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ANewExpr___n_kwnew},
+  {(bigint) parser_nodes___ANewExpr___n_type},
+  {(bigint) parser_nodes___ANewExpr___n_id},
+  {(bigint) parser_nodes___ANewExpr___n_args},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction238(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction238;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction238(val_t self, char *from) {
-}
-val_t NEW_ReduceAction238_parser___ReduceAction238___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction238();
-  parser___ReduceAction238___init(self, init_table);
-  CHECKNEW_ReduceAction238(self, "parser::ReduceAction238::init for ReduceAction238");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ANewExpr::_parent */
+/* 3: Attribute ANewExpr::_location */
+/* 4: Attribute ANewExpr::_first_location */
+/* 5: Attribute ANewExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ANewExpr::_is_typed */
+/* 8: Attribute ANewExpr::_stype */
+/* 9: Attribute ANewExpr::_if_true_flow_ctx */
+/* 10: Attribute ANewExpr::_if_false_flow_ctx */
+/* 11: Attribute ANewExpr::_prop_signature */
+/* 12: Attribute ANewExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ANewExpr::_prop */
+/* 17: Attribute ANewExpr::_return_type */
+/* 18: Attribute ANewExpr::_n_kwnew */
+/* 19: Attribute ANewExpr::_n_type */
+/* 20: Attribute ANewExpr::_n_id */
+/* 21: Attribute ANewExpr::_n_args */
+void INIT_ATTRIBUTES__ANewExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ANewExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:779 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:780 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ANewExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_ANewExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ANewExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ANewExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnew", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANewExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction239[48] = {
-  {(bigint) 2559 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction239 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction239 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2559 /* 3: ReduceAction239 < ReduceAction239: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ANewExpr_parser_prod___ANewExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5089;
+  fra.me.meth = LOCATE_NEW_ANewExpr_parser_prod___ANewExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5089 */
+  fra.me.REG[0] = NEW_ANewExpr();
+  INIT_ATTRIBUTES__ANewExpr(fra.me.REG[0]);
+  parser_prod___ANewExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ANewExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5091;
+  fra.me.meth = LOCATE_NEW_ANewExpr_parser_prod___ANewExpr___init_anewexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5091 */
+  fra.me.REG[4] = NEW_ANewExpr();
+  INIT_ATTRIBUTES__ANewExpr(fra.me.REG[4]);
+  parser_prod___ANewExpr___init_anewexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_ANewExpr(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+val_t NEW_ANewExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ANewExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ANewExpr();
+  INIT_ATTRIBUTES__ANewExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ANewExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAttrFormExpr[93] = {
+  {(bigint) 3219 /* 0: Identity */},
+  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAttrFormExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAttrFormExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAttrFormExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3219 /* 5: AAttrFormExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AAttrFormExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64471,14 +61682,9 @@ const classtable_elt_t VFT_ReduceAction239[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction239 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAttrFormExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64486,7 +61692,6 @@ const classtable_elt_t VFT_ReduceAction239[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64494,44 +61699,170 @@ const classtable_elt_t VFT_ReduceAction239[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction239 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction239___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction239 < ReduceAction239: superclass init_table position */},
-  {(bigint) parser___ReduceAction239___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AAttrFormExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAttrFormExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAttrFormExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AAttrFormExpr___do_typing},
+  {(bigint) typing___AAttrFormExpr___prop},
+  {(bigint) typing___AAttrFormExpr___attr_type},
+  {(bigint) 4 /* 90: AAttrFormExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser_nodes___AAttrFormExpr___n_id},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction239(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AAttrFormExpr::_parent */
+/* 3: Attribute AAttrFormExpr::_location */
+/* 4: Attribute AAttrFormExpr::_first_location */
+/* 5: Attribute AAttrFormExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAttrFormExpr::_is_typed */
+/* 8: Attribute AAttrFormExpr::_stype */
+/* 9: Attribute AAttrFormExpr::_if_true_flow_ctx */
+/* 10: Attribute AAttrFormExpr::_if_false_flow_ctx */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AAttrFormExpr::_prop */
+/* 17: Attribute AAttrFormExpr::_attr_type */
+/* 18: Attribute AAttrFormExpr::_n_expr */
+/* 19: Attribute AAttrFormExpr::_n_id */
+void INIT_ATTRIBUTES__AAttrFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAttrFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAttrFormExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction239;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction239(val_t self, char *from) {
-}
-val_t NEW_ReduceAction239_parser___ReduceAction239___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction239();
-  parser___ReduceAction239___init(self, init_table);
-  CHECKNEW_ReduceAction239(self, "parser::ReduceAction239::init for ReduceAction239");
-  return self;
+  obj = alloc(sizeof(val_t) * 20);
+  obj->vft = (classtable_elt_t*)VFT_AAttrFormExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAttrFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAttrFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction240[48] = {
-  {(bigint) 2551 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction240 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction240 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2551 /* 3: ReduceAction240 < ReduceAction240: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAttrFormExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAttrFormExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAttrFormExpr();
+  INIT_ATTRIBUTES__AAttrFormExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAttrFormExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAttrExpr[96] = {
+  {(bigint) 3427 /* 0: Identity */},
+  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAttrExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAttrExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAttrExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3219 /* 5: AAttrExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AAttrExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3427 /* 7: AAttrExpr < AAttrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64541,14 +61872,9 @@ const classtable_elt_t VFT_ReduceAction240[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction240 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAttrExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64556,7 +61882,6 @@ const classtable_elt_t VFT_ReduceAction240[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64564,41 +61889,51 @@ const classtable_elt_t VFT_ReduceAction240[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction240 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction240___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction240 < ReduceAction240: superclass init_table position */},
-  {(bigint) parser___ReduceAction240___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction240(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction240;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction240(val_t self, char *from) {
-}
-val_t NEW_ReduceAction240_parser___ReduceAction240___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction240();
-  parser___ReduceAction240___init(self, init_table);
-  CHECKNEW_ReduceAction240(self, "parser::ReduceAction240::init for ReduceAction240");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction241[48] = {
-  {(bigint) 2547 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction241 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction241 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2547 /* 3: ReduceAction241 < ReduceAction241: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AAttrExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AAttrExpr___visit_all},
+  {(bigint) 1 /* 58: AAttrExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AAttrExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAttrExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAttrExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AAttrExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64607,18 +61942,174 @@ const classtable_elt_t VFT_ReduceAction241[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) typing___AAttrFormExpr___do_typing},
+  {(bigint) typing___AAttrFormExpr___prop},
+  {(bigint) typing___AAttrFormExpr___attr_type},
+  {(bigint) 4 /* 90: AAttrExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser_nodes___AAttrFormExpr___n_id},
+  {(bigint) parser_prod___AAttrExpr___empty_init},
+  {(bigint) parser_prod___AAttrExpr___init_aattrexpr},
+  {(bigint) 5 /* 95: AAttrExpr < AAttrExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AAttrExpr::_parent */
+/* 3: Attribute AAttrExpr::_location */
+/* 4: Attribute AAttrExpr::_first_location */
+/* 5: Attribute AAttrExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAttrExpr::_is_typed */
+/* 8: Attribute AAttrExpr::_stype */
+/* 9: Attribute AAttrExpr::_if_true_flow_ctx */
+/* 10: Attribute AAttrExpr::_if_false_flow_ctx */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AAttrExpr::_prop */
+/* 17: Attribute AAttrExpr::_attr_type */
+/* 18: Attribute AAttrExpr::_n_expr */
+/* 19: Attribute AAttrExpr::_n_id */
+void INIT_ATTRIBUTES__AAttrExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAttrExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAttrExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 20);
+  obj->vft = (classtable_elt_t*)VFT_AAttrExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAttrExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAttrExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAttrExpr_parser_prod___AAttrExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5173;
+  fra.me.meth = LOCATE_NEW_AAttrExpr_parser_prod___AAttrExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5173 */
+  fra.me.REG[0] = NEW_AAttrExpr();
+  INIT_ATTRIBUTES__AAttrExpr(fra.me.REG[0]);
+  parser_prod___AAttrExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AAttrExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5175;
+  fra.me.meth = LOCATE_NEW_AAttrExpr_parser_prod___AAttrExpr___init_aattrexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5175 */
+  fra.me.REG[2] = NEW_AAttrExpr();
+  INIT_ATTRIBUTES__AAttrExpr(fra.me.REG[2]);
+  parser_prod___AAttrExpr___init_aattrexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AAttrExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AAttrExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAttrExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAttrExpr();
+  INIT_ATTRIBUTES__AAttrExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAttrExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAttrAssignExpr[93] = {
+  {(bigint) 3431 /* 0: Identity */},
+  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAttrAssignExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAttrAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAttrAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3219 /* 5: AAttrAssignExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AAttrAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3227 /* 7: AAttrAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 3431 /* 8: AAttrAssignExpr < AAttrAssignExpr: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction241 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAttrAssignExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64626,7 +62117,6 @@ const classtable_elt_t VFT_ReduceAction241[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64634,61 +62124,238 @@ const classtable_elt_t VFT_ReduceAction241[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction241 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction241___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction241 < ReduceAction241: superclass init_table position */},
-  {(bigint) parser___ReduceAction241___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AAttrAssignExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AAttrAssignExpr___visit_all},
+  {(bigint) 1 /* 58: AAttrAssignExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AAttrAssignExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAttrAssignExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAttrAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AAttrAssignExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___AAttrAssignExpr___empty_init},
+  {(bigint) parser_prod___AAttrAssignExpr___init_aattrassignexpr},
+  {(bigint) 6 /* 81: AAttrAssignExpr < AAttrAssignExpr: superclass init_table position */},
+  {(bigint) 5 /* 82: AAttrAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser_nodes___AAssignFormExpr___n_value},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AAttrFormExpr___do_typing},
+  {(bigint) typing___AAttrFormExpr___prop},
+  {(bigint) typing___AAttrFormExpr___attr_type},
+  {(bigint) 4 /* 90: AAttrAssignExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser_nodes___AAttrFormExpr___n_id},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction241(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AAttrAssignExpr::_parent */
+/* 3: Attribute AAttrAssignExpr::_location */
+/* 4: Attribute AAttrAssignExpr::_first_location */
+/* 5: Attribute AAttrAssignExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAttrAssignExpr::_is_typed */
+/* 8: Attribute AAttrAssignExpr::_stype */
+/* 9: Attribute AAttrAssignExpr::_if_true_flow_ctx */
+/* 10: Attribute AAttrAssignExpr::_if_false_flow_ctx */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 13: Attribute AAttrAssignExpr::_n_assign */
+/* 14: Attribute AAttrAssignExpr::_n_value */
+/* Instance Hole :( */
+/* 16: Attribute AAttrAssignExpr::_prop */
+/* 17: Attribute AAttrAssignExpr::_attr_type */
+/* 18: Attribute AAttrAssignExpr::_n_expr */
+/* 19: Attribute AAttrAssignExpr::_n_id */
+void INIT_ATTRIBUTES__AAttrAssignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAttrAssignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAttrAssignExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction241;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction241(val_t self, char *from) {
-}
-val_t NEW_ReduceAction241_parser___ReduceAction241___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction241();
-  parser___ReduceAction241___init(self, init_table);
-  CHECKNEW_ReduceAction241(self, "parser::ReduceAction241::init for ReduceAction241");
-  return self;
+  obj = alloc(sizeof(val_t) * 20);
+  obj->vft = (classtable_elt_t*)VFT_AAttrAssignExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAttrAssignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAttrAssignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction242[48] = {
-  {(bigint) 2543 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction242 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction242 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2543 /* 3: ReduceAction242 < ReduceAction242: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5218;
+  fra.me.meth = LOCATE_NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5218 */
+  fra.me.REG[0] = NEW_AAttrAssignExpr();
+  INIT_ATTRIBUTES__AAttrAssignExpr(fra.me.REG[0]);
+  parser_prod___AAttrAssignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AAttrAssignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5220;
+  fra.me.meth = LOCATE_NEW_AAttrAssignExpr_parser_prod___AAttrAssignExpr___init_aattrassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5220 */
+  fra.me.REG[4] = NEW_AAttrAssignExpr();
+  INIT_ATTRIBUTES__AAttrAssignExpr(fra.me.REG[4]);
+  parser_prod___AAttrAssignExpr___init_aattrassignexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_AAttrAssignExpr(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+val_t NEW_AAttrAssignExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAttrAssignExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAttrAssignExpr();
+  INIT_ATTRIBUTES__AAttrAssignExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAttrAssignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ACallFormExpr[113] = {
+  {(bigint) 3495 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ACallFormExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ACallFormExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ACallFormExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ACallFormExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ACallFormExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ACallFormExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ACallFormExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ACallFormExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3495 /* 12: ACallFormExpr < ACallFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction242 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ACallFormExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64696,7 +62363,6 @@ const classtable_elt_t VFT_ReduceAction242[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64704,41 +62370,51 @@ const classtable_elt_t VFT_ReduceAction242[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction242 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction242___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction242 < ReduceAction242: superclass init_table position */},
-  {(bigint) parser___ReduceAction242___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction242(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction242;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction242(val_t self, char *from) {
-}
-val_t NEW_ReduceAction242_parser___ReduceAction242___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction242();
-  parser___ReduceAction242___init(self, init_table);
-  CHECKNEW_ReduceAction242(self, "parser::ReduceAction242::init for ReduceAction242");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction243[48] = {
-  {(bigint) 2539 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction243 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction243 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2539 /* 3: ReduceAction243 < ReduceAction243: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASendExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASendExpr___visit_all},
+  {(bigint) 4 /* 58: ACallFormExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ACallFormExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ACallFormExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ACallFormExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ACallFormExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64747,18 +62423,211 @@ const classtable_elt_t VFT_ReduceAction243[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___AAbsAbsSendExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ACallFormExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ACallFormExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ASendExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ACallFormExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ACallFormExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) typing___ACallFormExpr___variable_create},
+  {(bigint) 8 /* 110: ACallFormExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ACallFormExpr___n_id},
+  {(bigint) parser_nodes___ACallFormExpr___n_args},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ACallFormExpr::_parent */
+/* 3: Attribute ACallFormExpr::_location */
+/* 4: Attribute ACallFormExpr::_first_location */
+/* 5: Attribute ACallFormExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ACallFormExpr::_is_typed */
+/* 8: Attribute ACallFormExpr::_stype */
+/* 9: Attribute ACallFormExpr::_if_true_flow_ctx */
+/* 10: Attribute ACallFormExpr::_if_false_flow_ctx */
+/* 11: Attribute ACallFormExpr::_prop_signature */
+/* 12: Attribute ACallFormExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ACallFormExpr::_prop */
+/* 17: Attribute ACallFormExpr::_return_type */
+/* 18: Attribute ACallFormExpr::_n_expr */
+/* 19: Attribute ACallFormExpr::_n_closure_defs */
+/* 20: Attribute ACallFormExpr::_n_id */
+/* 21: Attribute ACallFormExpr::_n_args */
+void INIT_ATTRIBUTES__ACallFormExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ACallFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:797 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ACallFormExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_ACallFormExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ACallFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ACallFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ACallFormExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ACallFormExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ACallFormExpr();
+  INIT_ATTRIBUTES__ACallFormExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ACallFormExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ACallFormExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ACallFormExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ACallFormExpr();
+  INIT_ATTRIBUTES__ACallFormExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ACallFormExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ACallFormExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ACallFormExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ACallFormExpr();
+  INIT_ATTRIBUTES__ACallFormExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ACallFormExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAttrReassignExpr[93] = {
+  {(bigint) 3423 /* 0: Identity */},
+  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAttrReassignExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAttrReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAttrReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3219 /* 5: AAttrReassignExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AAttrReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: AAttrReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3423 /* 8: AAttrReassignExpr < AAttrReassignExpr: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction243 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAttrReassignExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64766,7 +62635,6 @@ const classtable_elt_t VFT_ReduceAction243[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64774,61 +62642,238 @@ const classtable_elt_t VFT_ReduceAction243[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction243 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction243___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction243 < ReduceAction243: superclass init_table position */},
-  {(bigint) parser___ReduceAction243___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AAttrReassignExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AAttrReassignExpr___visit_all},
+  {(bigint) 1 /* 58: AAttrReassignExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AAttrReassignExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAttrReassignExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAttrReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AAttrReassignExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___AAttrReassignExpr___empty_init},
+  {(bigint) parser_prod___AAttrReassignExpr___init_aattrreassignexpr},
+  {(bigint) 6 /* 81: AAttrReassignExpr < AAttrReassignExpr: superclass init_table position */},
+  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
+  {(bigint) typing___AReassignFormExpr___assign_method},
+  {(bigint) 5 /* 84: AAttrReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) typing___AAttrFormExpr___do_typing},
+  {(bigint) typing___AAttrFormExpr___prop},
+  {(bigint) typing___AAttrFormExpr___attr_type},
+  {(bigint) 4 /* 90: AAttrReassignExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser_nodes___AAttrFormExpr___n_id},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction243(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AAttrReassignExpr::_parent */
+/* 3: Attribute AAttrReassignExpr::_location */
+/* 4: Attribute AAttrReassignExpr::_first_location */
+/* 5: Attribute AAttrReassignExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAttrReassignExpr::_is_typed */
+/* 8: Attribute AAttrReassignExpr::_stype */
+/* 9: Attribute AAttrReassignExpr::_if_true_flow_ctx */
+/* 10: Attribute AAttrReassignExpr::_if_false_flow_ctx */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 13: Attribute AAttrReassignExpr::_assign_method */
+/* 14: Attribute AAttrReassignExpr::_n_assign_op */
+/* 15: Attribute AAttrReassignExpr::_n_value */
+/* 16: Attribute AAttrReassignExpr::_prop */
+/* 17: Attribute AAttrReassignExpr::_attr_type */
+/* 18: Attribute AAttrReassignExpr::_n_expr */
+/* 19: Attribute AAttrReassignExpr::_n_id */
+void INIT_ATTRIBUTES__AAttrReassignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAttrReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAttrReassignExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction243;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction243(val_t self, char *from) {
-}
-val_t NEW_ReduceAction243_parser___ReduceAction243___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction243();
-  parser___ReduceAction243___init(self, init_table);
-  CHECKNEW_ReduceAction243(self, "parser::ReduceAction243::init for ReduceAction243");
-  return self;
+  obj = alloc(sizeof(val_t) * 20);
+  obj->vft = (classtable_elt_t*)VFT_AAttrReassignExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAttrReassignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAttrReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction244[48] = {
-  {(bigint) 2535 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction244 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction244 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2535 /* 3: ReduceAction244 < ReduceAction244: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5291;
+  fra.me.meth = LOCATE_NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5291 */
+  fra.me.REG[0] = NEW_AAttrReassignExpr();
+  INIT_ATTRIBUTES__AAttrReassignExpr(fra.me.REG[0]);
+  parser_prod___AAttrReassignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AAttrReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5293;
+  fra.me.meth = LOCATE_NEW_AAttrReassignExpr_parser_prod___AAttrReassignExpr___init_aattrreassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5293 */
+  fra.me.REG[4] = NEW_AAttrReassignExpr();
+  INIT_ATTRIBUTES__AAttrReassignExpr(fra.me.REG[4]);
+  parser_prod___AAttrReassignExpr___init_aattrreassignexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_AAttrReassignExpr(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+val_t NEW_AAttrReassignExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAttrReassignExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAttrReassignExpr();
+  INIT_ATTRIBUTES__AAttrReassignExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAttrReassignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ACallExpr[116] = {
+  {(bigint) 3567 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ACallExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ACallExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ACallExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ACallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ACallExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ACallExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ACallExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ACallExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3495 /* 12: ACallExpr < ACallFormExpr: superclass typecheck marker */},
+  {(bigint) 3567 /* 13: ACallExpr < ACallExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction244 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ACallExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64836,7 +62881,6 @@ const classtable_elt_t VFT_ReduceAction244[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64844,41 +62888,51 @@ const classtable_elt_t VFT_ReduceAction244[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction244 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction244___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction244 < ReduceAction244: superclass init_table position */},
-  {(bigint) parser___ReduceAction244___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction244(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction244;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction244(val_t self, char *from) {
-}
-val_t NEW_ReduceAction244_parser___ReduceAction244___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction244();
-  parser___ReduceAction244___init(self, init_table);
-  CHECKNEW_ReduceAction244(self, "parser::ReduceAction244::init for ReduceAction244");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction245[48] = {
-  {(bigint) 2531 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction245 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction245 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2531 /* 3: ReduceAction245 < ReduceAction245: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ACallExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ACallExpr___visit_all},
+  {(bigint) 4 /* 58: ACallExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ACallFormExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ACallExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ACallExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ACallExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64887,18 +62941,260 @@ const classtable_elt_t VFT_ReduceAction245[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ACallExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ACallExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ACallExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ACallExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ACallFormExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ACallExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) typing___ACallExpr___variable_create},
+  {(bigint) 8 /* 110: ACallExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ACallFormExpr___n_id},
+  {(bigint) parser_nodes___ACallFormExpr___n_args},
+  {(bigint) parser_prod___ACallExpr___empty_init},
+  {(bigint) parser_prod___ACallExpr___init_acallexpr},
+  {(bigint) 9 /* 115: ACallExpr < ACallExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ACallExpr::_parent */
+/* 3: Attribute ACallExpr::_location */
+/* 4: Attribute ACallExpr::_first_location */
+/* 5: Attribute ACallExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ACallExpr::_is_typed */
+/* 8: Attribute ACallExpr::_stype */
+/* 9: Attribute ACallExpr::_if_true_flow_ctx */
+/* 10: Attribute ACallExpr::_if_false_flow_ctx */
+/* 11: Attribute ACallExpr::_prop_signature */
+/* 12: Attribute ACallExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ACallExpr::_prop */
+/* 17: Attribute ACallExpr::_return_type */
+/* 18: Attribute ACallExpr::_n_expr */
+/* 19: Attribute ACallExpr::_n_closure_defs */
+/* 20: Attribute ACallExpr::_n_id */
+/* 21: Attribute ACallExpr::_n_args */
+void INIT_ATTRIBUTES__ACallExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ACallExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:797 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ACallExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_ACallExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ACallExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ACallExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ACallExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ACallExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ACallExpr();
+  INIT_ATTRIBUTES__ACallExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ACallExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ACallExpr_parser_prod___ACallExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5364;
+  fra.me.meth = LOCATE_NEW_ACallExpr_parser_prod___ACallExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5364 */
+  fra.me.REG[0] = NEW_ACallExpr();
+  INIT_ATTRIBUTES__ACallExpr(fra.me.REG[0]);
+  parser_prod___ACallExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ACallExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5366;
+  fra.me.meth = LOCATE_NEW_ACallExpr_parser_prod___ACallExpr___init_acallexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5366 */
+  fra.me.REG[4] = NEW_ACallExpr();
+  INIT_ATTRIBUTES__ACallExpr(fra.me.REG[4]);
+  parser_prod___ACallExpr___init_acallexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_ACallExpr(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+val_t NEW_ACallExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ACallExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ACallExpr();
+  INIT_ATTRIBUTES__ACallExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ACallExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ACallExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ACallExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ACallExpr();
+  INIT_ATTRIBUTES__ACallExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ACallExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ACallAssignExpr[113] = {
+  {(bigint) 3571 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ACallAssignExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ACallAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ACallAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ACallAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ACallAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3227 /* 7: ACallAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 3443 /* 8: ACallAssignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ACallAssignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ACallAssignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3571 /* 11: ACallAssignExpr < ACallAssignExpr: superclass typecheck marker */},
+  {(bigint) 3495 /* 12: ACallAssignExpr < ACallFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction245 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ACallAssignExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64906,7 +63202,6 @@ const classtable_elt_t VFT_ReduceAction245[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64914,61 +63209,322 @@ const classtable_elt_t VFT_ReduceAction245[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction245 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction245___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction245 < ReduceAction245: superclass init_table position */},
-  {(bigint) parser___ReduceAction245___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ACallAssignExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ACallAssignExpr___visit_all},
+  {(bigint) 4 /* 58: ACallAssignExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ACallFormExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ACallAssignExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ACallAssignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ACallAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___ACallAssignExpr___empty_init},
+  {(bigint) parser_prod___ACallAssignExpr___init_acallassignexpr},
+  {(bigint) 10 /* 81: ACallAssignExpr < ACallAssignExpr: superclass init_table position */},
+  {(bigint) 9 /* 82: ACallAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser_nodes___AAssignFormExpr___n_value},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ACallAssignExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ACallAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ACallAssignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ACallAssignExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ACallFormExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ACallAssignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) typing___ACallAssignExpr___variable_create},
+  {(bigint) 8 /* 110: ACallAssignExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ACallFormExpr___n_id},
+  {(bigint) parser_nodes___ACallFormExpr___n_args},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction245(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction245;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction245(val_t self, char *from) {
-}
-val_t NEW_ReduceAction245_parser___ReduceAction245___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction245();
-  parser___ReduceAction245___init(self, init_table);
-  CHECKNEW_ReduceAction245(self, "parser::ReduceAction245::init for ReduceAction245");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ACallAssignExpr::_parent */
+/* 3: Attribute ACallAssignExpr::_location */
+/* 4: Attribute ACallAssignExpr::_first_location */
+/* 5: Attribute ACallAssignExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ACallAssignExpr::_is_typed */
+/* 8: Attribute ACallAssignExpr::_stype */
+/* 9: Attribute ACallAssignExpr::_if_true_flow_ctx */
+/* 10: Attribute ACallAssignExpr::_if_false_flow_ctx */
+/* 11: Attribute ACallAssignExpr::_prop_signature */
+/* 12: Attribute ACallAssignExpr::_raw_arguments_cache */
+/* 13: Attribute ACallAssignExpr::_n_assign */
+/* 14: Attribute ACallAssignExpr::_n_value */
+/* Instance Hole :( */
+/* 16: Attribute ACallAssignExpr::_prop */
+/* 17: Attribute ACallAssignExpr::_return_type */
+/* 18: Attribute ACallAssignExpr::_n_expr */
+/* 19: Attribute ACallAssignExpr::_n_closure_defs */
+/* 20: Attribute ACallAssignExpr::_n_id */
+/* 21: Attribute ACallAssignExpr::_n_args */
+void INIT_ATTRIBUTES__ACallAssignExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ACallAssignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:797 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ACallAssignExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_ACallAssignExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ACallAssignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ACallAssignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction246[48] = {
-  {(bigint) 2527 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction246 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction246 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2527 /* 3: ReduceAction246 < ReduceAction246: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ACallAssignExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ACallAssignExpr();
+  INIT_ATTRIBUTES__ACallAssignExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ACallAssignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5451;
+  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5451 */
+  fra.me.REG[0] = NEW_ACallAssignExpr();
+  INIT_ATTRIBUTES__ACallAssignExpr(fra.me.REG[0]);
+  parser_prod___ACallAssignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ACallAssignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5453;
+  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser_prod___ACallAssignExpr___init_acallassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5453 */
+  fra.me.REG[5] = NEW_ACallAssignExpr();
+  INIT_ATTRIBUTES__ACallAssignExpr(fra.me.REG[5]);
+  parser_prod___ACallAssignExpr___init_acallassignexpr(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_ACallAssignExpr(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+val_t NEW_ACallAssignExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ACallAssignExpr();
+  INIT_ATTRIBUTES__ACallAssignExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ACallAssignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ACallAssignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ACallAssignExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ACallAssignExpr();
+  INIT_ATTRIBUTES__ACallAssignExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ACallAssignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ACallReassignExpr[116] = {
+  {(bigint) 3563 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ACallReassignExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ACallReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ACallReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ACallReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ACallReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: ACallReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3443 /* 8: ACallReassignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ACallReassignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ACallReassignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3487 /* 11: ACallReassignExpr < ASendReassignExpr: superclass typecheck marker */},
+  {(bigint) 3495 /* 12: ACallReassignExpr < ACallFormExpr: superclass typecheck marker */},
+  {(bigint) 3563 /* 13: ACallReassignExpr < ACallReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction246 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 7 /* 19: ACallReassignExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -64976,7 +63532,6 @@ const classtable_elt_t VFT_ReduceAction246[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -64984,61 +63539,325 @@ const classtable_elt_t VFT_ReduceAction246[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction246 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction246___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction246 < ReduceAction246: superclass init_table position */},
-  {(bigint) parser___ReduceAction246___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction246(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction246;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction246(val_t self, char *from) {
-}
-val_t NEW_ReduceAction246_parser___ReduceAction246___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction246();
-  parser___ReduceAction246___init(self, init_table);
-  CHECKNEW_ReduceAction246(self, "parser::ReduceAction246::init for ReduceAction246");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction247[48] = {
-  {(bigint) 2523 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction247 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction247 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2523 /* 3: ReduceAction247 < ReduceAction247: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ACallReassignExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ACallReassignExpr___visit_all},
+  {(bigint) 6 /* 58: ACallReassignExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ACallFormExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 5 /* 65: ACallReassignExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 1 /* 68: ACallReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 8 /* 72: ACallReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendReassignExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 79: ACallReassignExpr < ASendReassignExpr: superclass init_table position */},
+  {(bigint) typing___ASendReassignExpr___read_prop},
   {0} /* Class Hole :( */,
+  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
+  {(bigint) typing___AReassignFormExpr___assign_method},
+  {(bigint) 9 /* 84: ACallReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ACallReassignExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 3 /* 91: ACallReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 2 /* 97: ACallReassignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ACallReassignExpr___name},
+  {(bigint) typing___ASendReassignExpr___do_all_typing},
+  {(bigint) typing___ACallFormExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 4 /* 105: ACallReassignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) typing___ACallReassignExpr___variable_create},
+  {(bigint) 10 /* 110: ACallReassignExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ACallFormExpr___n_id},
+  {(bigint) parser_nodes___ACallFormExpr___n_args},
+  {(bigint) parser_prod___ACallReassignExpr___empty_init},
+  {(bigint) parser_prod___ACallReassignExpr___init_acallreassignexpr},
+  {(bigint) 11 /* 115: ACallReassignExpr < ACallReassignExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ACallReassignExpr::_parent */
+/* 3: Attribute ACallReassignExpr::_location */
+/* 4: Attribute ACallReassignExpr::_first_location */
+/* 5: Attribute ACallReassignExpr::_last_location */
+/* 6: Attribute ACallReassignExpr::_read_prop */
+/* 7: Attribute ACallReassignExpr::_is_typed */
+/* 8: Attribute ACallReassignExpr::_stype */
+/* 9: Attribute ACallReassignExpr::_if_true_flow_ctx */
+/* 10: Attribute ACallReassignExpr::_if_false_flow_ctx */
+/* 11: Attribute ACallReassignExpr::_prop_signature */
+/* 12: Attribute ACallReassignExpr::_raw_arguments_cache */
+/* 13: Attribute ACallReassignExpr::_assign_method */
+/* 14: Attribute ACallReassignExpr::_n_assign_op */
+/* 15: Attribute ACallReassignExpr::_n_value */
+/* 16: Attribute ACallReassignExpr::_prop */
+/* 17: Attribute ACallReassignExpr::_return_type */
+/* 18: Attribute ACallReassignExpr::_n_expr */
+/* 19: Attribute ACallReassignExpr::_n_closure_defs */
+/* 20: Attribute ACallReassignExpr::_n_id */
+/* 21: Attribute ACallReassignExpr::_n_args */
+void INIT_ATTRIBUTES__ACallReassignExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ACallReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:797 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ACallReassignExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_ACallReassignExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ACallReassignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ACallReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACallFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ACallReassignExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ACallReassignExpr();
+  INIT_ATTRIBUTES__ACallReassignExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ACallReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5545;
+  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5545 */
+  fra.me.REG[0] = NEW_ACallReassignExpr();
+  INIT_ATTRIBUTES__ACallReassignExpr(fra.me.REG[0]);
+  parser_prod___ACallReassignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ACallReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5547;
+  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser_prod___ACallReassignExpr___init_acallreassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5547 */
+  fra.me.REG[5] = NEW_ACallReassignExpr();
+  INIT_ATTRIBUTES__ACallReassignExpr(fra.me.REG[5]);
+  parser_prod___ACallReassignExpr___init_acallreassignexpr(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_ACallReassignExpr(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+val_t NEW_ACallReassignExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ACallReassignExpr();
+  INIT_ATTRIBUTES__ACallReassignExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ACallReassignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ACallReassignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ACallReassignExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ACallReassignExpr();
+  INIT_ATTRIBUTES__ACallReassignExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ACallReassignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ASuperExpr[107] = {
+  {(bigint) 3475 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ASuperExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ASuperExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ASuperExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ASuperExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ASuperExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ASuperExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ASuperExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3475 /* 10: ASuperExpr < ASuperExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction247 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ASuperExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65046,7 +63865,6 @@ const classtable_elt_t VFT_ReduceAction247[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65054,41 +63872,52 @@ const classtable_elt_t VFT_ReduceAction247[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction247 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction247___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction247 < ReduceAction247: superclass init_table position */},
-  {(bigint) parser___ReduceAction247___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction247(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction247;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction247(val_t self, char *from) {
-}
-val_t NEW_ReduceAction247_parser___ReduceAction247___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction247();
-  parser___ReduceAction247___init(self, init_table);
-  CHECKNEW_ReduceAction247(self, "parser::ReduceAction247::init for ReduceAction247");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction248[48] = {
-  {(bigint) 2519 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction248 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction248 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2519 /* 3: ReduceAction248 < ReduceAction248: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASuperExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASuperExpr___visit_all},
+  {(bigint) 4 /* 58: ASuperExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASuperExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ASuperExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ASuperExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ASuperExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASuperExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -65096,19 +63925,199 @@ const classtable_elt_t VFT_ReduceAction248[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ASuperExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ASuperExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ASuperExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ASuperExpr___init_in_superclass},
+  {(bigint) parser_prod___ASuperExpr___empty_init},
+  {(bigint) parser_prod___ASuperExpr___init_asuperexpr},
+  {(bigint) 7 /* 103: ASuperExpr < ASuperExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASuperExpr___n_qualified},
+  {(bigint) parser_nodes___ASuperExpr___n_kwsuper},
+  {(bigint) parser_nodes___ASuperExpr___n_args},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ASuperExpr::_parent */
+/* 3: Attribute ASuperExpr::_location */
+/* 4: Attribute ASuperExpr::_first_location */
+/* 5: Attribute ASuperExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ASuperExpr::_is_typed */
+/* 8: Attribute ASuperExpr::_stype */
+/* 9: Attribute ASuperExpr::_if_true_flow_ctx */
+/* 10: Attribute ASuperExpr::_if_false_flow_ctx */
+/* 11: Attribute ASuperExpr::_prop_signature */
+/* 12: Attribute ASuperExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ASuperExpr::_prop */
+/* 17: Attribute ASuperExpr::_return_type */
+/* 18: Attribute ASuperExpr::_init_in_superclass */
+/* 19: Attribute ASuperExpr::_n_qualified */
+/* 20: Attribute ASuperExpr::_n_kwsuper */
+/* 21: Attribute ASuperExpr::_n_args */
+void INIT_ATTRIBUTES__ASuperExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ASuperExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:818 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:820 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASuperExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_ASuperExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ASuperExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ASuperExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwsuper", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASuperExpr_parser_prod___ASuperExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5639;
+  fra.me.meth = LOCATE_NEW_ASuperExpr_parser_prod___ASuperExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5639 */
+  fra.me.REG[0] = NEW_ASuperExpr();
+  INIT_ATTRIBUTES__ASuperExpr(fra.me.REG[0]);
+  parser_prod___ASuperExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASuperExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5641;
+  fra.me.meth = LOCATE_NEW_ASuperExpr_parser_prod___ASuperExpr___init_asuperexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5641 */
+  fra.me.REG[3] = NEW_ASuperExpr();
+  INIT_ATTRIBUTES__ASuperExpr(fra.me.REG[3]);
+  parser_prod___ASuperExpr___init_asuperexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_ASuperExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_ASuperExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ASuperExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ASuperExpr();
+  INIT_ATTRIBUTES__ASuperExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASuperExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AInitExpr[113] = {
+  {(bigint) 3491 /* 0: Identity */},
+  {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AInitExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AInitExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AInitExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AInitExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AInitExpr < AExpr: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: AInitExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: AInitExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: AInitExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3491 /* 11: AInitExpr < AInitExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction248 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: AInitExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65116,7 +64125,6 @@ const classtable_elt_t VFT_ReduceAction248[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65124,61 +64132,308 @@ const classtable_elt_t VFT_ReduceAction248[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction248 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction248___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction248 < ReduceAction248: superclass init_table position */},
-  {(bigint) parser___ReduceAction248___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction248(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction248;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction248(val_t self, char *from) {
-}
-val_t NEW_ReduceAction248_parser___ReduceAction248___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction248();
-  parser___ReduceAction248___init(self, init_table);
-  CHECKNEW_ReduceAction248(self, "parser::ReduceAction248::init for ReduceAction248");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction249[48] = {
-  {(bigint) 2515 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction249 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction249 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2515 /* 3: ReduceAction249 < ReduceAction249: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AInitExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AInitExpr___visit_all},
+  {(bigint) 4 /* 58: AInitExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: AInitExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: AInitExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: AInitExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___AInitExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: AInitExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: AInitExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___AInitExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: AInitExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) parser_prod___AInitExpr___empty_init},
+  {(bigint) parser_prod___AInitExpr___init_ainitexpr},
+  {(bigint) 8 /* 110: AInitExpr < AInitExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AInitExpr___n_kwinit},
+  {(bigint) parser_nodes___AInitExpr___n_args},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AInitExpr::_parent */
+/* 3: Attribute AInitExpr::_location */
+/* 4: Attribute AInitExpr::_first_location */
+/* 5: Attribute AInitExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AInitExpr::_is_typed */
+/* 8: Attribute AInitExpr::_stype */
+/* 9: Attribute AInitExpr::_if_true_flow_ctx */
+/* 10: Attribute AInitExpr::_if_false_flow_ctx */
+/* 11: Attribute AInitExpr::_prop_signature */
+/* 12: Attribute AInitExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AInitExpr::_prop */
+/* 17: Attribute AInitExpr::_return_type */
+/* 18: Attribute AInitExpr::_n_expr */
+/* 19: Attribute AInitExpr::_n_closure_defs */
+/* 20: Attribute AInitExpr::_n_kwinit */
+/* 21: Attribute AInitExpr::_n_args */
+void INIT_ATTRIBUTES__AInitExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AInitExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:825 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AInitExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 22);
+  obj->vft = (classtable_elt_t*)VFT_AInitExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AInitExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AInitExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwinit", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AInitExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AInitExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_AInitExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_AInitExpr();
+  INIT_ATTRIBUTES__AInitExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AInitExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AInitExpr_parser_prod___AInitExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5709;
+  fra.me.meth = LOCATE_NEW_AInitExpr_parser_prod___AInitExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5709 */
+  fra.me.REG[0] = NEW_AInitExpr();
+  INIT_ATTRIBUTES__AInitExpr(fra.me.REG[0]);
+  parser_prod___AInitExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AInitExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5711;
+  fra.me.meth = LOCATE_NEW_AInitExpr_parser_prod___AInitExpr___init_ainitexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5711 */
+  fra.me.REG[3] = NEW_AInitExpr();
+  INIT_ATTRIBUTES__AInitExpr(fra.me.REG[3]);
+  parser_prod___AInitExpr___init_ainitexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AInitExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AInitExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AInitExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AInitExpr();
+  INIT_ATTRIBUTES__AInitExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AInitExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AInitExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_AInitExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_AInitExpr();
+  INIT_ATTRIBUTES__AInitExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AInitExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ABraFormExpr[110] = {
+  {(bigint) 3499 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ABraFormExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ABraFormExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ABraFormExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ABraFormExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ABraFormExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ABraFormExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ABraFormExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ABraFormExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3499 /* 12: ABraFormExpr < ABraFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction249 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ABraFormExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65186,7 +64441,6 @@ const classtable_elt_t VFT_ReduceAction249[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65194,41 +64448,51 @@ const classtable_elt_t VFT_ReduceAction249[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction249 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction249___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction249 < ReduceAction249: superclass init_table position */},
-  {(bigint) parser___ReduceAction249___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction249(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction249;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction249(val_t self, char *from) {
-}
-val_t NEW_ReduceAction249_parser___ReduceAction249___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction249();
-  parser___ReduceAction249___init(self, init_table);
-  CHECKNEW_ReduceAction249(self, "parser::ReduceAction249::init for ReduceAction249");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction250[48] = {
-  {(bigint) 2507 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction250 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction250 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2507 /* 3: ReduceAction250 < ReduceAction250: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASendExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASendExpr___visit_all},
+  {(bigint) 4 /* 58: ABraFormExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ABraFormExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ABraFormExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ABraFormExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -65237,18 +64501,202 @@ const classtable_elt_t VFT_ReduceAction250[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___AAbsAbsSendExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ABraFormExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ABraFormExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ASendExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ABraFormExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) 8 /* 108: ABraFormExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABraFormExpr___n_args},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ABraFormExpr::_parent */
+/* 3: Attribute ABraFormExpr::_location */
+/* 4: Attribute ABraFormExpr::_first_location */
+/* 5: Attribute ABraFormExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ABraFormExpr::_is_typed */
+/* 8: Attribute ABraFormExpr::_stype */
+/* 9: Attribute ABraFormExpr::_if_true_flow_ctx */
+/* 10: Attribute ABraFormExpr::_if_false_flow_ctx */
+/* 11: Attribute ABraFormExpr::_prop_signature */
+/* 12: Attribute ABraFormExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ABraFormExpr::_prop */
+/* 17: Attribute ABraFormExpr::_return_type */
+/* 18: Attribute ABraFormExpr::_n_expr */
+/* 19: Attribute ABraFormExpr::_n_closure_defs */
+/* 20: Attribute ABraFormExpr::_n_args */
+void INIT_ATTRIBUTES__ABraFormExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ABraFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:829 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABraFormExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_ABraFormExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ABraFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ABraFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABraFormExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ABraFormExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ABraFormExpr();
+  INIT_ATTRIBUTES__ABraFormExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABraFormExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ABraFormExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ABraFormExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ABraFormExpr();
+  INIT_ATTRIBUTES__ABraFormExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABraFormExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABraFormExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ABraFormExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ABraFormExpr();
+  INIT_ATTRIBUTES__ABraFormExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABraFormExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ABraExpr[113] = {
+  {(bigint) 3579 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ABraExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ABraExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ABraExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ABraExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ABraExpr < AExpr: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ABraExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ABraExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ABraExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3499 /* 12: ABraExpr < ABraFormExpr: superclass typecheck marker */},
+  {(bigint) 3579 /* 13: ABraExpr < ABraExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction250 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ABraExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65256,7 +64704,6 @@ const classtable_elt_t VFT_ReduceAction250[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65264,45 +64711,51 @@ const classtable_elt_t VFT_ReduceAction250[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction250 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction250___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction250 < ReduceAction250: superclass init_table position */},
-  {(bigint) parser___ReduceAction250___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction250(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction250;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction250(val_t self, char *from) {
-}
-val_t NEW_ReduceAction250_parser___ReduceAction250___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction250();
-  parser___ReduceAction250___init(self, init_table);
-  CHECKNEW_ReduceAction250(self, "parser::ReduceAction250::init for ReduceAction250");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction251[48] = {
-  {(bigint) 2503 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction251 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction251 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2503 /* 3: ReduceAction251 < ReduceAction251: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ABraExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ABraExpr___visit_all},
+  {(bigint) 4 /* 58: ABraExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ABraExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ABraExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ABraExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -65311,14 +64764,249 @@ const classtable_elt_t VFT_ReduceAction251[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction251 < Object: superclass init_table position */},
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABraExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ABraExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ABraExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ABraExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ABraExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ABraExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) 8 /* 108: ABraExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABraFormExpr___n_args},
+  {(bigint) parser_prod___ABraExpr___empty_init},
+  {(bigint) parser_prod___ABraExpr___init_abraexpr},
+  {(bigint) 9 /* 112: ABraExpr < ABraExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ABraExpr::_parent */
+/* 3: Attribute ABraExpr::_location */
+/* 4: Attribute ABraExpr::_first_location */
+/* 5: Attribute ABraExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ABraExpr::_is_typed */
+/* 8: Attribute ABraExpr::_stype */
+/* 9: Attribute ABraExpr::_if_true_flow_ctx */
+/* 10: Attribute ABraExpr::_if_false_flow_ctx */
+/* 11: Attribute ABraExpr::_prop_signature */
+/* 12: Attribute ABraExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ABraExpr::_prop */
+/* 17: Attribute ABraExpr::_return_type */
+/* 18: Attribute ABraExpr::_n_expr */
+/* 19: Attribute ABraExpr::_n_closure_defs */
+/* 20: Attribute ABraExpr::_n_args */
+void INIT_ATTRIBUTES__ABraExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ABraExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:829 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABraExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_ABraExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ABraExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ABraExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABraExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ABraExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ABraExpr();
+  INIT_ATTRIBUTES__ABraExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABraExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABraExpr_parser_prod___ABraExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5775;
+  fra.me.meth = LOCATE_NEW_ABraExpr_parser_prod___ABraExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5775 */
+  fra.me.REG[0] = NEW_ABraExpr();
+  INIT_ATTRIBUTES__ABraExpr(fra.me.REG[0]);
+  parser_prod___ABraExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABraExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5777;
+  fra.me.meth = LOCATE_NEW_ABraExpr_parser_prod___ABraExpr___init_abraexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5777 */
+  fra.me.REG[3] = NEW_ABraExpr();
+  INIT_ATTRIBUTES__ABraExpr(fra.me.REG[3]);
+  parser_prod___ABraExpr___init_abraexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_ABraExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_ABraExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ABraExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ABraExpr();
+  INIT_ATTRIBUTES__ABraExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABraExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ABraExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ABraExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ABraExpr();
+  INIT_ATTRIBUTES__ABraExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABraExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ABraAssignExpr[110] = {
+  {(bigint) 3583 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ABraAssignExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ABraAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ABraAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ABraAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ABraAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3227 /* 7: ABraAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 3443 /* 8: ABraAssignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ABraAssignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ABraAssignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3583 /* 11: ABraAssignExpr < ABraAssignExpr: superclass typecheck marker */},
+  {(bigint) 3499 /* 12: ABraAssignExpr < ABraFormExpr: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ABraAssignExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65326,7 +65014,6 @@ const classtable_elt_t VFT_ReduceAction251[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65334,43 +65021,298 @@ const classtable_elt_t VFT_ReduceAction251[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction251 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction251___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction251 < ReduceAction251: superclass init_table position */},
-  {(bigint) parser___ReduceAction251___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ABraAssignExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ABraAssignExpr___visit_all},
+  {(bigint) 4 /* 58: ABraAssignExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ABraAssignExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ABraAssignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ABraAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___ABraAssignExpr___empty_init},
+  {(bigint) parser_prod___ABraAssignExpr___init_abraassignexpr},
+  {(bigint) 10 /* 81: ABraAssignExpr < ABraAssignExpr: superclass init_table position */},
+  {(bigint) 9 /* 82: ABraAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser_nodes___AAssignFormExpr___n_value},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABraAssignExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ABraAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ABraAssignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ABraAssignExpr___name},
+  {(bigint) typing___ASendExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ABraAssignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) 8 /* 108: ABraAssignExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABraFormExpr___n_args},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction251(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction251;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction251(val_t self, char *from) {
-}
-val_t NEW_ReduceAction251_parser___ReduceAction251___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction251();
-  parser___ReduceAction251___init(self, init_table);
-  CHECKNEW_ReduceAction251(self, "parser::ReduceAction251::init for ReduceAction251");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ABraAssignExpr::_parent */
+/* 3: Attribute ABraAssignExpr::_location */
+/* 4: Attribute ABraAssignExpr::_first_location */
+/* 5: Attribute ABraAssignExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ABraAssignExpr::_is_typed */
+/* 8: Attribute ABraAssignExpr::_stype */
+/* 9: Attribute ABraAssignExpr::_if_true_flow_ctx */
+/* 10: Attribute ABraAssignExpr::_if_false_flow_ctx */
+/* 11: Attribute ABraAssignExpr::_prop_signature */
+/* 12: Attribute ABraAssignExpr::_raw_arguments_cache */
+/* 13: Attribute ABraAssignExpr::_n_assign */
+/* 14: Attribute ABraAssignExpr::_n_value */
+/* Instance Hole :( */
+/* 16: Attribute ABraAssignExpr::_prop */
+/* 17: Attribute ABraAssignExpr::_return_type */
+/* 18: Attribute ABraAssignExpr::_n_expr */
+/* 19: Attribute ABraAssignExpr::_n_closure_defs */
+/* 20: Attribute ABraAssignExpr::_n_args */
+void INIT_ATTRIBUTES__ABraAssignExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ABraAssignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:829 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABraAssignExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_ABraAssignExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ABraAssignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ABraAssignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction252[48] = {
-  {(bigint) 2499 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction252 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction252 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2499 /* 3: ReduceAction252 < ReduceAction252: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ABraAssignExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ABraAssignExpr();
+  INIT_ATTRIBUTES__ABraAssignExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABraAssignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5848;
+  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5848 */
+  fra.me.REG[0] = NEW_ABraAssignExpr();
+  INIT_ATTRIBUTES__ABraAssignExpr(fra.me.REG[0]);
+  parser_prod___ABraAssignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABraAssignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t tmp;
+  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5850;
+  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser_prod___ABraAssignExpr___init_abraassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5850 */
+  fra.me.REG[4] = NEW_ABraAssignExpr();
+  INIT_ATTRIBUTES__ABraAssignExpr(fra.me.REG[4]);
+  parser_prod___ABraAssignExpr___init_abraassignexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_ABraAssignExpr(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+val_t NEW_ABraAssignExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ABraAssignExpr();
+  INIT_ATTRIBUTES__ABraAssignExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABraAssignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ABraAssignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ABraAssignExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ABraAssignExpr();
+  INIT_ATTRIBUTES__ABraAssignExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABraAssignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AVarFormExpr[82] = {
+  {(bigint) 2991 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AVarFormExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AVarFormExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AVarFormExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2991 /* 5: AVarFormExpr < AVarFormExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AVarFormExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -65381,14 +65323,9 @@ const classtable_elt_t VFT_ReduceAction252[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction252 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AVarFormExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65396,7 +65333,6 @@ const classtable_elt_t VFT_ReduceAction252[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65404,61 +65340,159 @@ const classtable_elt_t VFT_ReduceAction252[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction252 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction252___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction252 < ReduceAction252: superclass init_table position */},
-  {(bigint) parser___ReduceAction252___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AVarFormExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AVarFormExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AVarFormExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) typing___AVarFormExpr___variable},
+  {(bigint) 4 /* 80: AVarFormExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AVarFormExpr___n_id},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction252(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AVarFormExpr::_parent */
+/* 3: Attribute AVarFormExpr::_location */
+/* 4: Attribute AVarFormExpr::_first_location */
+/* 5: Attribute AVarFormExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AVarFormExpr::_is_typed */
+/* 8: Attribute AVarFormExpr::_stype */
+/* 9: Attribute AVarFormExpr::_if_true_flow_ctx */
+/* 10: Attribute AVarFormExpr::_if_false_flow_ctx */
+/* 11: Attribute AVarFormExpr::_variable */
+/* 12: Attribute AVarFormExpr::_n_id */
+void INIT_ATTRIBUTES__AVarFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AVarFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AVarFormExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction252;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction252(val_t self, char *from) {
-}
-val_t NEW_ReduceAction252_parser___ReduceAction252___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction252();
-  parser___ReduceAction252___init(self, init_table);
-  CHECKNEW_ReduceAction252(self, "parser::ReduceAction252::init for ReduceAction252");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AVarFormExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AVarFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AVarFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction253[48] = {
-  {(bigint) 2495 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction253 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction253 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2495 /* 3: ReduceAction253 < ReduceAction253: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AVarFormExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AVarFormExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AVarFormExpr();
+  INIT_ATTRIBUTES__AVarFormExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AVarFormExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ABraReassignExpr[113] = {
+  {(bigint) 3575 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ABraReassignExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ABraReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ABraReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ABraReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ABraReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: ABraReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3443 /* 8: ABraReassignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ABraReassignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ABraReassignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3487 /* 11: ABraReassignExpr < ASendReassignExpr: superclass typecheck marker */},
+  {(bigint) 3499 /* 12: ABraReassignExpr < ABraFormExpr: superclass typecheck marker */},
+  {(bigint) 3575 /* 13: ABraReassignExpr < ABraReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction253 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 7 /* 19: ABraReassignExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65466,7 +65500,6 @@ const classtable_elt_t VFT_ReduceAction253[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65474,44 +65507,302 @@ const classtable_elt_t VFT_ReduceAction253[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction253 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction253___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction253 < ReduceAction253: superclass init_table position */},
-  {(bigint) parser___ReduceAction253___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction253(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction253;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction253(val_t self, char *from) {
-}
-val_t NEW_ReduceAction253_parser___ReduceAction253___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction253();
-  parser___ReduceAction253___init(self, init_table);
-  CHECKNEW_ReduceAction253(self, "parser::ReduceAction253::init for ReduceAction253");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction254[48] = {
-  {(bigint) 2491 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction254 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction254 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2491 /* 3: ReduceAction254 < ReduceAction254: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ABraReassignExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ABraReassignExpr___visit_all},
+  {(bigint) 6 /* 58: ABraReassignExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 5 /* 65: ABraReassignExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 1 /* 68: ABraReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 8 /* 72: ABraReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendReassignExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 79: ABraReassignExpr < ASendReassignExpr: superclass init_table position */},
+  {(bigint) typing___ASendReassignExpr___read_prop},
   {0} /* Class Hole :( */,
+  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
+  {(bigint) typing___AReassignFormExpr___assign_method},
+  {(bigint) 9 /* 84: ABraReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___ABraReassignExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 3 /* 91: ABraReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 2 /* 97: ABraReassignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ABraReassignExpr___name},
+  {(bigint) typing___ASendReassignExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 4 /* 105: ABraReassignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
+  {(bigint) 10 /* 108: ABraReassignExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ABraFormExpr___n_args},
+  {(bigint) parser_prod___ABraReassignExpr___empty_init},
+  {(bigint) parser_prod___ABraReassignExpr___init_abrareassignexpr},
+  {(bigint) 11 /* 112: ABraReassignExpr < ABraReassignExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ABraReassignExpr::_parent */
+/* 3: Attribute ABraReassignExpr::_location */
+/* 4: Attribute ABraReassignExpr::_first_location */
+/* 5: Attribute ABraReassignExpr::_last_location */
+/* 6: Attribute ABraReassignExpr::_read_prop */
+/* 7: Attribute ABraReassignExpr::_is_typed */
+/* 8: Attribute ABraReassignExpr::_stype */
+/* 9: Attribute ABraReassignExpr::_if_true_flow_ctx */
+/* 10: Attribute ABraReassignExpr::_if_false_flow_ctx */
+/* 11: Attribute ABraReassignExpr::_prop_signature */
+/* 12: Attribute ABraReassignExpr::_raw_arguments_cache */
+/* 13: Attribute ABraReassignExpr::_assign_method */
+/* 14: Attribute ABraReassignExpr::_n_assign_op */
+/* 15: Attribute ABraReassignExpr::_n_value */
+/* 16: Attribute ABraReassignExpr::_prop */
+/* 17: Attribute ABraReassignExpr::_return_type */
+/* 18: Attribute ABraReassignExpr::_n_expr */
+/* 19: Attribute ABraReassignExpr::_n_closure_defs */
+/* 20: Attribute ABraReassignExpr::_n_args */
+void INIT_ATTRIBUTES__ABraReassignExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ABraReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:829 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABraReassignExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_ABraReassignExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ABraReassignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ABraReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABraFormExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABraReassignExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ABraReassignExpr();
+  INIT_ATTRIBUTES__ABraReassignExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABraReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5928;
+  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:5928 */
+  fra.me.REG[0] = NEW_ABraReassignExpr();
+  INIT_ATTRIBUTES__ABraReassignExpr(fra.me.REG[0]);
+  parser_prod___ABraReassignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABraReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5930;
+  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser_prod___ABraReassignExpr___init_abrareassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5930 */
+  fra.me.REG[4] = NEW_ABraReassignExpr();
+  INIT_ATTRIBUTES__ABraReassignExpr(fra.me.REG[4]);
+  parser_prod___ABraReassignExpr___init_abrareassignexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_ABraReassignExpr(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+val_t NEW_ABraReassignExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ABraReassignExpr();
+  INIT_ATTRIBUTES__ABraReassignExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABraReassignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ABraReassignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ABraReassignExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ABraReassignExpr();
+  INIT_ATTRIBUTES__ABraReassignExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABraReassignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AClosureCallExpr[101] = {
+  {(bigint) 3415 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AClosureCallExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AClosureCallExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AClosureCallExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AClosureCallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AClosureCallExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3415 /* 7: AClosureCallExpr < AClosureCallExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -65521,14 +65812,9 @@ const classtable_elt_t VFT_ReduceAction254[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction254 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: AClosureCallExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65536,7 +65822,6 @@ const classtable_elt_t VFT_ReduceAction254[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65544,45 +65829,51 @@ const classtable_elt_t VFT_ReduceAction254[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction254 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction254___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction254 < ReduceAction254: superclass init_table position */},
-  {(bigint) parser___ReduceAction254___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction254(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction254;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction254(val_t self, char *from) {
-}
-val_t NEW_ReduceAction254_parser___ReduceAction254___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction254();
-  parser___ReduceAction254___init(self, init_table);
-  CHECKNEW_ReduceAction254(self, "parser::ReduceAction254::init for ReduceAction254");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction255[48] = {
-  {(bigint) 2487 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction255 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction255 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2487 /* 3: ReduceAction255 < ReduceAction255: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AClosureCallExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AClosureCallExpr___visit_all},
+  {(bigint) 2 /* 58: AClosureCallExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AClosureCallExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 65: AClosureCallExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 4 /* 72: AClosureCallExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AClosureCallExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -65591,67 +65882,181 @@ const classtable_elt_t VFT_ReduceAction255[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction255 < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction255 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction255___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction255 < ReduceAction255: superclass init_table position */},
-  {(bigint) parser___ReduceAction255___init},
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___AClosureCallExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 0 /* 91: AClosureCallExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AClosureCallExpr___variable},
+  {(bigint) parser_prod___AClosureCallExpr___empty_init},
+  {(bigint) parser_prod___AClosureCallExpr___init_aclosurecallexpr},
+  {(bigint) 5 /* 97: AClosureCallExpr < AClosureCallExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AClosureCallExpr___n_id},
+  {(bigint) parser_nodes___AClosureCallExpr___n_args},
+  {(bigint) parser_nodes___AClosureCallExpr___n_closure_defs},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction255(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AClosureCallExpr::_parent */
+/* 3: Attribute AClosureCallExpr::_location */
+/* 4: Attribute AClosureCallExpr::_first_location */
+/* 5: Attribute AClosureCallExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AClosureCallExpr::_is_typed */
+/* 8: Attribute AClosureCallExpr::_stype */
+/* 9: Attribute AClosureCallExpr::_if_true_flow_ctx */
+/* 10: Attribute AClosureCallExpr::_if_false_flow_ctx */
+/* 11: Attribute AClosureCallExpr::_prop_signature */
+/* 12: Attribute AClosureCallExpr::_raw_arguments_cache */
+/* 13: Attribute AClosureCallExpr::_variable */
+/* 14: Attribute AClosureCallExpr::_n_id */
+/* 15: Attribute AClosureCallExpr::_n_args */
+/* 16: Attribute AClosureCallExpr::_n_closure_defs */
+void INIT_ATTRIBUTES__AClosureCallExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AClosureCallExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:849 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:850 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AClosureCallExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction255;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction255(val_t self, char *from) {
-}
-val_t NEW_ReduceAction255_parser___ReduceAction255___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction255();
-  parser___ReduceAction255___init(self, init_table);
-  CHECKNEW_ReduceAction255(self, "parser::ReduceAction255::init for ReduceAction255");
-  return self;
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_AClosureCallExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AClosureCallExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AClosureCallExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction256[48] = {
-  {(bigint) 2483 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction256 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction256 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2483 /* 3: ReduceAction256 < ReduceAction256: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6010;
+  fra.me.meth = LOCATE_NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___init_aclosurecallexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6010 */
+  fra.me.REG[3] = NEW_AClosureCallExpr();
+  INIT_ATTRIBUTES__AClosureCallExpr(fra.me.REG[3]);
+  parser_prod___AClosureCallExpr___init_aclosurecallexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AClosureCallExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6008;
+  fra.me.meth = LOCATE_NEW_AClosureCallExpr_parser_prod___AClosureCallExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6008 */
+  fra.me.REG[0] = NEW_AClosureCallExpr();
+  INIT_ATTRIBUTES__AClosureCallExpr(fra.me.REG[0]);
+  parser_prod___AClosureCallExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AClosureCallExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AClosureCallExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AClosureCallExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AClosureCallExpr();
+  INIT_ATTRIBUTES__AClosureCallExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AClosureCallExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AVarExpr[85] = {
+  {(bigint) 3307 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AVarExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AVarExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AVarExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2991 /* 5: AVarExpr < AVarFormExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AVarExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3307 /* 7: AVarExpr < AVarExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -65661,14 +66066,9 @@ const classtable_elt_t VFT_ReduceAction256[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction256 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AVarExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65676,7 +66076,6 @@ const classtable_elt_t VFT_ReduceAction256[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65684,45 +66083,191 @@ const classtable_elt_t VFT_ReduceAction256[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction256 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction256___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction256 < ReduceAction256: superclass init_table position */},
-  {(bigint) parser___ReduceAction256___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AVarExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AVarExpr___visit_all},
+  {(bigint) 1 /* 58: AVarExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AVarExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AVarExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AVarExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AVarExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AVarExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) typing___AVarFormExpr___variable},
+  {(bigint) 4 /* 80: AVarExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AVarFormExpr___n_id},
+  {(bigint) parser_prod___AVarExpr___empty_init},
+  {(bigint) parser_prod___AVarExpr___init_avarexpr},
+  {(bigint) 5 /* 84: AVarExpr < AVarExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction256(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AVarExpr::_parent */
+/* 3: Attribute AVarExpr::_location */
+/* 4: Attribute AVarExpr::_first_location */
+/* 5: Attribute AVarExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AVarExpr::_is_typed */
+/* 8: Attribute AVarExpr::_stype */
+/* 9: Attribute AVarExpr::_if_true_flow_ctx */
+/* 10: Attribute AVarExpr::_if_false_flow_ctx */
+/* 11: Attribute AVarExpr::_variable */
+/* 12: Attribute AVarExpr::_n_id */
+void INIT_ATTRIBUTES__AVarExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AVarExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AVarExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction256;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction256(val_t self, char *from) {
-}
-val_t NEW_ReduceAction256_parser___ReduceAction256___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction256();
-  parser___ReduceAction256___init(self, init_table);
-  CHECKNEW_ReduceAction256(self, "parser::ReduceAction256::init for ReduceAction256");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AVarExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AVarExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AVarExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction257[48] = {
-  {(bigint) 2479 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction257 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction257 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2479 /* 3: ReduceAction257 < ReduceAction257: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AVarExpr_parser_prod___AVarExpr___init_avarexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6083;
+  fra.me.meth = LOCATE_NEW_AVarExpr_parser_prod___AVarExpr___init_avarexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6083 */
+  fra.me.REG[1] = NEW_AVarExpr();
+  INIT_ATTRIBUTES__AVarExpr(fra.me.REG[1]);
+  parser_prod___AVarExpr___init_avarexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AVarExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AVarExpr_parser_prod___AVarExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6081;
+  fra.me.meth = LOCATE_NEW_AVarExpr_parser_prod___AVarExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6081 */
+  fra.me.REG[0] = NEW_AVarExpr();
+  INIT_ATTRIBUTES__AVarExpr(fra.me.REG[0]);
+  parser_prod___AVarExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AVarExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AVarExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AVarExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AVarExpr();
+  INIT_ATTRIBUTES__AVarExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AVarExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AVarAssignExpr[88] = {
+  {(bigint) 3311 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AVarAssignExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AVarAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AVarAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2991 /* 5: AVarAssignExpr < AVarFormExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AVarAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3227 /* 7: AVarAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 3311 /* 8: AVarAssignExpr < AVarAssignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -65731,14 +66276,9 @@ const classtable_elt_t VFT_ReduceAction257[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction257 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AVarAssignExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65746,7 +66286,6 @@ const classtable_elt_t VFT_ReduceAction257[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65754,45 +66293,210 @@ const classtable_elt_t VFT_ReduceAction257[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction257 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction257___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction257 < ReduceAction257: superclass init_table position */},
-  {(bigint) parser___ReduceAction257___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AVarAssignExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AVarAssignExpr___visit_all},
+  {(bigint) 1 /* 58: AVarAssignExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AVarAssignExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AVarAssignExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AVarAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AVarAssignExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) typing___AVarFormExpr___variable},
+  {(bigint) 4 /* 80: AVarAssignExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AVarFormExpr___n_id},
+  {(bigint) 5 /* 82: AVarAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAssignFormExpr___n_assign},
+  {(bigint) parser_nodes___AAssignFormExpr___n_value},
+  {(bigint) parser_prod___AVarAssignExpr___empty_init},
+  {(bigint) parser_prod___AVarAssignExpr___init_avarassignexpr},
+  {(bigint) 6 /* 87: AVarAssignExpr < AVarAssignExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction257(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AVarAssignExpr::_parent */
+/* 3: Attribute AVarAssignExpr::_location */
+/* 4: Attribute AVarAssignExpr::_first_location */
+/* 5: Attribute AVarAssignExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AVarAssignExpr::_is_typed */
+/* 8: Attribute AVarAssignExpr::_stype */
+/* 9: Attribute AVarAssignExpr::_if_true_flow_ctx */
+/* 10: Attribute AVarAssignExpr::_if_false_flow_ctx */
+/* 11: Attribute AVarAssignExpr::_variable */
+/* 12: Attribute AVarAssignExpr::_n_id */
+/* 13: Attribute AVarAssignExpr::_n_assign */
+/* 14: Attribute AVarAssignExpr::_n_value */
+void INIT_ATTRIBUTES__AVarAssignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AVarAssignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AVarAssignExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction257;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction257(val_t self, char *from) {
-}
-val_t NEW_ReduceAction257_parser___ReduceAction257___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction257();
-  parser___ReduceAction257___init(self, init_table);
-  CHECKNEW_ReduceAction257(self, "parser::ReduceAction257::init for ReduceAction257");
-  return self;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_AVarAssignExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AVarAssignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AVarAssignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction258[48] = {
-  {(bigint) 2475 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction258 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction258 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2475 /* 3: ReduceAction258 < ReduceAction258: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___init_avarassignexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6114;
+  fra.me.meth = LOCATE_NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___init_avarassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6114 */
+  fra.me.REG[3] = NEW_AVarAssignExpr();
+  INIT_ATTRIBUTES__AVarAssignExpr(fra.me.REG[3]);
+  parser_prod___AVarAssignExpr___init_avarassignexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AVarAssignExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6112;
+  fra.me.meth = LOCATE_NEW_AVarAssignExpr_parser_prod___AVarAssignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6112 */
+  fra.me.REG[0] = NEW_AVarAssignExpr();
+  INIT_ATTRIBUTES__AVarAssignExpr(fra.me.REG[0]);
+  parser_prod___AVarAssignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AVarAssignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AVarAssignExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AVarAssignExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AVarAssignExpr();
+  INIT_ATTRIBUTES__AVarAssignExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AVarAssignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AVarReassignExpr[90] = {
+  {(bigint) 3303 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AVarReassignExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AVarReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AVarReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2991 /* 5: AVarReassignExpr < AVarFormExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AVarReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: AVarReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3303 /* 8: AVarReassignExpr < AVarReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -65801,14 +66505,9 @@ const classtable_elt_t VFT_ReduceAction258[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction258 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AVarReassignExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65816,7 +66515,6 @@ const classtable_elt_t VFT_ReduceAction258[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65824,44 +66522,212 @@ const classtable_elt_t VFT_ReduceAction258[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction258 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction258___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction258 < ReduceAction258: superclass init_table position */},
-  {(bigint) parser___ReduceAction258___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AVarReassignExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AVarReassignExpr___visit_all},
+  {(bigint) 1 /* 58: AVarReassignExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AVarReassignExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AVarReassignExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AVarReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AVarReassignExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) typing___AVarFormExpr___variable},
+  {(bigint) 4 /* 80: AVarReassignExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AVarFormExpr___n_id},
+  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
+  {(bigint) typing___AReassignFormExpr___assign_method},
+  {(bigint) 5 /* 84: AVarReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) parser_prod___AVarReassignExpr___empty_init},
+  {(bigint) parser_prod___AVarReassignExpr___init_avarreassignexpr},
+  {(bigint) 6 /* 89: AVarReassignExpr < AVarReassignExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction258(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AVarReassignExpr::_parent */
+/* 3: Attribute AVarReassignExpr::_location */
+/* 4: Attribute AVarReassignExpr::_first_location */
+/* 5: Attribute AVarReassignExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AVarReassignExpr::_is_typed */
+/* 8: Attribute AVarReassignExpr::_stype */
+/* 9: Attribute AVarReassignExpr::_if_true_flow_ctx */
+/* 10: Attribute AVarReassignExpr::_if_false_flow_ctx */
+/* 11: Attribute AVarReassignExpr::_variable */
+/* 12: Attribute AVarReassignExpr::_n_id */
+/* 13: Attribute AVarReassignExpr::_assign_method */
+/* 14: Attribute AVarReassignExpr::_n_assign_op */
+/* 15: Attribute AVarReassignExpr::_n_value */
+void INIT_ATTRIBUTES__AVarReassignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AVarReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AVarReassignExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction258;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction258(val_t self, char *from) {
-}
-val_t NEW_ReduceAction258_parser___ReduceAction258___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction258();
-  parser___ReduceAction258___init(self, init_table);
-  CHECKNEW_ReduceAction258(self, "parser::ReduceAction258::init for ReduceAction258");
-  return self;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_AVarReassignExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AVarReassignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AVarReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AVarFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction259[48] = {
-  {(bigint) 2471 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction259 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction259 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2471 /* 3: ReduceAction259 < ReduceAction259: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6173;
+  fra.me.meth = LOCATE_NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___init_avarreassignexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6173 */
+  fra.me.REG[3] = NEW_AVarReassignExpr();
+  INIT_ATTRIBUTES__AVarReassignExpr(fra.me.REG[3]);
+  parser_prod___AVarReassignExpr___init_avarreassignexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AVarReassignExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6171;
+  fra.me.meth = LOCATE_NEW_AVarReassignExpr_parser_prod___AVarReassignExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6171 */
+  fra.me.REG[0] = NEW_AVarReassignExpr();
+  INIT_ATTRIBUTES__AVarReassignExpr(fra.me.REG[0]);
+  parser_prod___AVarReassignExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AVarReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AVarReassignExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AVarReassignExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AVarReassignExpr();
+  INIT_ATTRIBUTES__AVarReassignExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AVarReassignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ARangeExpr[84] = {
+  {(bigint) 3055 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ARangeExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ARangeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ARangeExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: ARangeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3055 /* 7: ARangeExpr < ARangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -65871,14 +66737,9 @@ const classtable_elt_t VFT_ReduceAction259[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction259 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ARangeExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65886,7 +66747,6 @@ const classtable_elt_t VFT_ReduceAction259[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65894,45 +66754,197 @@ const classtable_elt_t VFT_ReduceAction259[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction259 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction259___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction259 < ReduceAction259: superclass init_table position */},
-  {(bigint) parser___ReduceAction259___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ARangeExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ARangeExpr___visit_all},
+  {(bigint) 1 /* 58: ARangeExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ARangeExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ARangeExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ARangeExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___ARangeExpr___empty_init},
+  {(bigint) parser_prod___ARangeExpr___init_arangeexpr},
+  {(bigint) 4 /* 81: ARangeExpr < ARangeExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ARangeExpr___n_expr},
+  {(bigint) parser_nodes___ARangeExpr___n_expr2},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction259(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ARangeExpr::_parent */
+/* 3: Attribute ARangeExpr::_location */
+/* 4: Attribute ARangeExpr::_first_location */
+/* 5: Attribute ARangeExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ARangeExpr::_is_typed */
+/* 8: Attribute ARangeExpr::_stype */
+/* 9: Attribute ARangeExpr::_if_true_flow_ctx */
+/* 10: Attribute ARangeExpr::_if_false_flow_ctx */
+/* 11: Attribute ARangeExpr::_n_expr */
+/* 12: Attribute ARangeExpr::_n_expr2 */
+void INIT_ATTRIBUTES__ARangeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ARangeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ARangeExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction259;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction259(val_t self, char *from) {
-}
-val_t NEW_ReduceAction259_parser___ReduceAction259___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction259();
-  parser___ReduceAction259___init(self, init_table);
-  CHECKNEW_ReduceAction259(self, "parser::ReduceAction259::init for ReduceAction259");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_ARangeExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ARangeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ARangeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction260[48] = {
-  {(bigint) 2463 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction260 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction260 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2463 /* 3: ReduceAction260 < ReduceAction260: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ARangeExpr_parser_prod___ARangeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6230;
+  fra.me.meth = LOCATE_NEW_ARangeExpr_parser_prod___ARangeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6230 */
+  fra.me.REG[0] = NEW_ARangeExpr();
+  INIT_ATTRIBUTES__ARangeExpr(fra.me.REG[0]);
+  parser_prod___ARangeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ARangeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ARangeExpr_parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6232;
+  fra.me.meth = LOCATE_NEW_ARangeExpr_parser_prod___ARangeExpr___init_arangeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6232 */
+  fra.me.REG[2] = NEW_ARangeExpr();
+  INIT_ATTRIBUTES__ARangeExpr(fra.me.REG[2]);
+  parser_prod___ARangeExpr___init_arangeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ARangeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ARangeExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ARangeExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ARangeExpr();
+  INIT_ATTRIBUTES__ARangeExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ARangeExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ACrangeExpr[87] = {
+  {(bigint) 3403 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ACrangeExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ACrangeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ACrangeExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: ACrangeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3055 /* 7: ACrangeExpr < ARangeExpr: superclass typecheck marker */},
+  {(bigint) 3403 /* 8: ACrangeExpr < ACrangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -65941,14 +66953,9 @@ const classtable_elt_t VFT_ReduceAction260[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction260 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ACrangeExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -65956,7 +66963,6 @@ const classtable_elt_t VFT_ReduceAction260[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -65964,45 +66970,242 @@ const classtable_elt_t VFT_ReduceAction260[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction260 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction260___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction260 < ReduceAction260: superclass init_table position */},
-  {(bigint) parser___ReduceAction260___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ACrangeExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ACrangeExpr___visit_all},
+  {(bigint) 1 /* 58: ACrangeExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ARangeExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ACrangeExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ACrangeExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ACrangeExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___ARangeExpr___empty_init},
+  {(bigint) parser_prod___ARangeExpr___init_arangeexpr},
+  {(bigint) 4 /* 81: ACrangeExpr < ARangeExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ARangeExpr___n_expr},
+  {(bigint) parser_nodes___ARangeExpr___n_expr2},
+  {(bigint) parser_prod___ACrangeExpr___empty_init},
+  {(bigint) parser_prod___ACrangeExpr___init_acrangeexpr},
+  {(bigint) 5 /* 86: ACrangeExpr < ACrangeExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction260(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ACrangeExpr::_parent */
+/* 3: Attribute ACrangeExpr::_location */
+/* 4: Attribute ACrangeExpr::_first_location */
+/* 5: Attribute ACrangeExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ACrangeExpr::_is_typed */
+/* 8: Attribute ACrangeExpr::_stype */
+/* 9: Attribute ACrangeExpr::_if_true_flow_ctx */
+/* 10: Attribute ACrangeExpr::_if_false_flow_ctx */
+/* 11: Attribute ACrangeExpr::_n_expr */
+/* 12: Attribute ACrangeExpr::_n_expr2 */
+void INIT_ATTRIBUTES__ACrangeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ACrangeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ACrangeExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction260;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction260(val_t self, char *from) {
-}
-val_t NEW_ReduceAction260_parser___ReduceAction260___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction260();
-  parser___ReduceAction260___init(self, init_table);
-  CHECKNEW_ReduceAction260(self, "parser::ReduceAction260::init for ReduceAction260");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_ACrangeExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ACrangeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ACrangeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction261[48] = {
-  {(bigint) 2459 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction261 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction261 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2459 /* 3: ReduceAction261 < ReduceAction261: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ACrangeExpr_parser_prod___ARangeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6230;
+  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser_prod___ARangeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6230 */
+  fra.me.REG[0] = NEW_ACrangeExpr();
+  INIT_ATTRIBUTES__ACrangeExpr(fra.me.REG[0]);
+  parser_prod___ARangeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ACrangeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ACrangeExpr_parser_prod___ACrangeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6275;
+  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser_prod___ACrangeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6275 */
+  fra.me.REG[0] = NEW_ACrangeExpr();
+  INIT_ATTRIBUTES__ACrangeExpr(fra.me.REG[0]);
+  parser_prod___ACrangeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ACrangeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ACrangeExpr_parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6277;
+  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser_prod___ACrangeExpr___init_acrangeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6277 */
+  fra.me.REG[2] = NEW_ACrangeExpr();
+  INIT_ATTRIBUTES__ACrangeExpr(fra.me.REG[2]);
+  parser_prod___ACrangeExpr___init_acrangeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ACrangeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_ACrangeExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ACrangeExpr();
+  INIT_ATTRIBUTES__ACrangeExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ACrangeExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ACrangeExpr_parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6232;
+  fra.me.meth = LOCATE_NEW_ACrangeExpr_parser_prod___ARangeExpr___init_arangeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6232 */
+  fra.me.REG[2] = NEW_ACrangeExpr();
+  INIT_ATTRIBUTES__ACrangeExpr(fra.me.REG[2]);
+  parser_prod___ARangeExpr___init_arangeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ACrangeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_AOrangeExpr[87] = {
+  {(bigint) 3331 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AOrangeExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AOrangeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AOrangeExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AOrangeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3055 /* 7: AOrangeExpr < ARangeExpr: superclass typecheck marker */},
+  {(bigint) 3331 /* 8: AOrangeExpr < AOrangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66011,14 +67214,9 @@ const classtable_elt_t VFT_ReduceAction261[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction261 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AOrangeExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66026,7 +67224,6 @@ const classtable_elt_t VFT_ReduceAction261[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66034,44 +67231,241 @@ const classtable_elt_t VFT_ReduceAction261[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction261 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction261___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction261 < ReduceAction261: superclass init_table position */},
-  {(bigint) parser___ReduceAction261___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AOrangeExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AOrangeExpr___visit_all},
+  {(bigint) 1 /* 58: AOrangeExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ARangeExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AOrangeExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AOrangeExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AOrangeExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___ARangeExpr___empty_init},
+  {(bigint) parser_prod___ARangeExpr___init_arangeexpr},
+  {(bigint) 4 /* 81: AOrangeExpr < ARangeExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ARangeExpr___n_expr},
+  {(bigint) parser_nodes___ARangeExpr___n_expr2},
+  {(bigint) parser_prod___AOrangeExpr___empty_init},
+  {(bigint) parser_prod___AOrangeExpr___init_aorangeexpr},
+  {(bigint) 5 /* 86: AOrangeExpr < AOrangeExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction261(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AOrangeExpr::_parent */
+/* 3: Attribute AOrangeExpr::_location */
+/* 4: Attribute AOrangeExpr::_first_location */
+/* 5: Attribute AOrangeExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AOrangeExpr::_is_typed */
+/* 8: Attribute AOrangeExpr::_stype */
+/* 9: Attribute AOrangeExpr::_if_true_flow_ctx */
+/* 10: Attribute AOrangeExpr::_if_false_flow_ctx */
+/* 11: Attribute AOrangeExpr::_n_expr */
+/* 12: Attribute AOrangeExpr::_n_expr2 */
+void INIT_ATTRIBUTES__AOrangeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AOrangeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AOrangeExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction261;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction261(val_t self, char *from) {
-}
-val_t NEW_ReduceAction261_parser___ReduceAction261___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction261();
-  parser___ReduceAction261___init(self, init_table);
-  CHECKNEW_ReduceAction261(self, "parser::ReduceAction261::init for ReduceAction261");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AOrangeExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AOrangeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AOrangeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction262[48] = {
-  {(bigint) 2455 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction262 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction262 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2455 /* 3: ReduceAction262 < ReduceAction262: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AOrangeExpr_parser_prod___ARangeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6230;
+  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser_prod___ARangeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6230 */
+  fra.me.REG[0] = NEW_AOrangeExpr();
+  INIT_ATTRIBUTES__AOrangeExpr(fra.me.REG[0]);
+  parser_prod___ARangeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AOrangeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AOrangeExpr_parser_prod___AOrangeExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6320;
+  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser_prod___AOrangeExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6320 */
+  fra.me.REG[0] = NEW_AOrangeExpr();
+  INIT_ATTRIBUTES__AOrangeExpr(fra.me.REG[0]);
+  parser_prod___AOrangeExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AOrangeExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AOrangeExpr_parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6322;
+  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser_prod___AOrangeExpr___init_aorangeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6322 */
+  fra.me.REG[2] = NEW_AOrangeExpr();
+  INIT_ATTRIBUTES__AOrangeExpr(fra.me.REG[2]);
+  parser_prod___AOrangeExpr___init_aorangeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AOrangeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AOrangeExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AOrangeExpr();
+  INIT_ATTRIBUTES__AOrangeExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AOrangeExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AOrangeExpr_parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6232;
+  fra.me.meth = LOCATE_NEW_AOrangeExpr_parser_prod___ARangeExpr___init_arangeexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6232 */
+  fra.me.REG[2] = NEW_AOrangeExpr();
+  INIT_ATTRIBUTES__AOrangeExpr(fra.me.REG[2]);
+  parser_prod___ARangeExpr___init_arangeexpr(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AOrangeExpr(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_AArrayExpr[84] = {
+  {(bigint) 3239 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AArrayExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AArrayExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AArrayExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AArrayExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3239 /* 7: AArrayExpr < AArrayExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66081,14 +67475,9 @@ const classtable_elt_t VFT_ReduceAction262[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction262 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AArrayExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66096,7 +67485,6 @@ const classtable_elt_t VFT_ReduceAction262[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66104,44 +67492,192 @@ const classtable_elt_t VFT_ReduceAction262[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction262 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction262___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction262 < ReduceAction262: superclass init_table position */},
-  {(bigint) parser___ReduceAction262___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AArrayExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AArrayExpr___visit_all},
+  {(bigint) 1 /* 58: AArrayExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AArrayExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AArrayExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AArrayExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AArrayExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) typing___AArrayExpr___do_typing},
+  {(bigint) parser_prod___AArrayExpr___empty_init},
+  {(bigint) parser_prod___AArrayExpr___init_aarrayexpr},
+  {(bigint) 4 /* 82: AArrayExpr < AArrayExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AArrayExpr___n_exprs},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction262(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AArrayExpr::_parent */
+/* 3: Attribute AArrayExpr::_location */
+/* 4: Attribute AArrayExpr::_first_location */
+/* 5: Attribute AArrayExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AArrayExpr::_is_typed */
+/* 8: Attribute AArrayExpr::_stype */
+/* 9: Attribute AArrayExpr::_if_true_flow_ctx */
+/* 10: Attribute AArrayExpr::_if_false_flow_ctx */
+/* 11: Attribute AArrayExpr::_n_exprs */
+void INIT_ATTRIBUTES__AArrayExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AArrayExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:876 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AArrayExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction262;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction262(val_t self, char *from) {
-}
-val_t NEW_ReduceAction262_parser___ReduceAction262___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction262();
-  parser___ReduceAction262___init(self, init_table);
-  CHECKNEW_ReduceAction262(self, "parser::ReduceAction262::init for ReduceAction262");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_AArrayExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AArrayExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AArrayExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction263[48] = {
-  {(bigint) 2451 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction263 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction263 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2451 /* 3: ReduceAction263 < ReduceAction263: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AArrayExpr_parser_prod___AArrayExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6365;
+  fra.me.meth = LOCATE_NEW_AArrayExpr_parser_prod___AArrayExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6365 */
+  fra.me.REG[0] = NEW_AArrayExpr();
+  INIT_ATTRIBUTES__AArrayExpr(fra.me.REG[0]);
+  parser_prod___AArrayExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AArrayExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AArrayExpr_parser_prod___AArrayExpr___init_aarrayexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6367;
+  fra.me.meth = LOCATE_NEW_AArrayExpr_parser_prod___AArrayExpr___init_aarrayexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6367 */
+  fra.me.REG[1] = NEW_AArrayExpr();
+  INIT_ATTRIBUTES__AArrayExpr(fra.me.REG[1]);
+  parser_prod___AArrayExpr___init_aarrayexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AArrayExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AArrayExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AArrayExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AArrayExpr();
+  INIT_ATTRIBUTES__AArrayExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AArrayExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ASelfExpr[84] = {
+  {(bigint) 3039 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ASelfExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ASelfExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ASelfExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: ASelfExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3039 /* 7: ASelfExpr < ASelfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66151,14 +67687,9 @@ const classtable_elt_t VFT_ReduceAction263[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction263 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ASelfExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66166,7 +67697,6 @@ const classtable_elt_t VFT_ReduceAction263[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66174,45 +67704,185 @@ const classtable_elt_t VFT_ReduceAction263[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction263 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction263___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction263 < ReduceAction263: superclass init_table position */},
-  {(bigint) parser___ReduceAction263___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASelfExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASelfExpr___visit_all},
+  {(bigint) 1 /* 58: ASelfExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASelfExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ASelfExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ASelfExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASelfExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___ASelfExpr___is_self},
+  {(bigint) typing___ASelfExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) typing___ASelfExpr___variable},
+  {(bigint) parser_prod___ASelfExpr___empty_init},
+  {(bigint) parser_prod___ASelfExpr___init_aselfexpr},
+  {(bigint) 4 /* 82: ASelfExpr < ASelfExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASelfExpr___n_kwself},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction263(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ASelfExpr::_parent */
+/* 3: Attribute ASelfExpr::_location */
+/* 4: Attribute ASelfExpr::_first_location */
+/* 5: Attribute ASelfExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ASelfExpr::_is_typed */
+/* 8: Attribute ASelfExpr::_stype */
+/* 9: Attribute ASelfExpr::_if_true_flow_ctx */
+/* 10: Attribute ASelfExpr::_if_false_flow_ctx */
+/* 11: Attribute ASelfExpr::_variable */
+/* 12: Attribute ASelfExpr::_n_kwself */
+void INIT_ATTRIBUTES__ASelfExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ASelfExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASelfExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction263;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction263(val_t self, char *from) {
-}
-val_t NEW_ReduceAction263_parser___ReduceAction263___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction263();
-  parser___ReduceAction263___init(self, init_table);
-  CHECKNEW_ReduceAction263(self, "parser::ReduceAction263::init for ReduceAction263");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_ASelfExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ASelfExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ASelfExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction264[48] = {
-  {(bigint) 2447 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction264 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction264 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2447 /* 3: ReduceAction264 < ReduceAction264: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ASelfExpr_parser_prod___ASelfExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6403;
+  fra.me.meth = LOCATE_NEW_ASelfExpr_parser_prod___ASelfExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6403 */
+  fra.me.REG[0] = NEW_ASelfExpr();
+  INIT_ATTRIBUTES__ASelfExpr(fra.me.REG[0]);
+  parser_prod___ASelfExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASelfExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6405;
+  fra.me.meth = LOCATE_NEW_ASelfExpr_parser_prod___ASelfExpr___init_aselfexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6405 */
+  fra.me.REG[1] = NEW_ASelfExpr();
+  INIT_ATTRIBUTES__ASelfExpr(fra.me.REG[1]);
+  parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASelfExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ASelfExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ASelfExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ASelfExpr();
+  INIT_ATTRIBUTES__ASelfExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASelfExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AImplicitSelfExpr[87] = {
+  {(bigint) 3371 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AImplicitSelfExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AImplicitSelfExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AImplicitSelfExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AImplicitSelfExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3039 /* 7: AImplicitSelfExpr < ASelfExpr: superclass typecheck marker */},
+  {(bigint) 3371 /* 8: AImplicitSelfExpr < AImplicitSelfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66221,14 +67891,9 @@ const classtable_elt_t VFT_ReduceAction264[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction264 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AImplicitSelfExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66236,7 +67901,6 @@ const classtable_elt_t VFT_ReduceAction264[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66244,45 +67908,226 @@ const classtable_elt_t VFT_ReduceAction264[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction264 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction264___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction264 < ReduceAction264: superclass init_table position */},
-  {(bigint) parser___ReduceAction264___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AImplicitSelfExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AImplicitSelfExpr___visit_all},
+  {(bigint) 1 /* 58: AImplicitSelfExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASelfExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AImplicitSelfExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AImplicitSelfExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASelfExpr___generate_icode},
+  {(bigint) typing___AImplicitSelfExpr___is_implicit_self},
+  {(bigint) typing___ASelfExpr___is_self},
+  {(bigint) typing___ASelfExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) typing___ASelfExpr___variable},
+  {(bigint) parser_prod___ASelfExpr___empty_init},
+  {(bigint) parser_prod___ASelfExpr___init_aselfexpr},
+  {(bigint) 4 /* 82: AImplicitSelfExpr < ASelfExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASelfExpr___n_kwself},
+  {(bigint) parser_prod___AImplicitSelfExpr___empty_init},
+  {(bigint) parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr},
+  {(bigint) 5 /* 86: AImplicitSelfExpr < AImplicitSelfExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction264(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AImplicitSelfExpr::_parent */
+/* 3: Attribute AImplicitSelfExpr::_location */
+/* 4: Attribute AImplicitSelfExpr::_first_location */
+/* 5: Attribute AImplicitSelfExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AImplicitSelfExpr::_is_typed */
+/* 8: Attribute AImplicitSelfExpr::_stype */
+/* 9: Attribute AImplicitSelfExpr::_if_true_flow_ctx */
+/* 10: Attribute AImplicitSelfExpr::_if_false_flow_ctx */
+/* 11: Attribute AImplicitSelfExpr::_variable */
+/* 12: Attribute AImplicitSelfExpr::_n_kwself */
+void INIT_ATTRIBUTES__AImplicitSelfExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AImplicitSelfExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AImplicitSelfExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction264;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction264(val_t self, char *from) {
-}
-val_t NEW_ReduceAction264_parser___ReduceAction264___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction264();
-  parser___ReduceAction264___init(self, init_table);
-  CHECKNEW_ReduceAction264(self, "parser::ReduceAction264::init for ReduceAction264");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AImplicitSelfExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AImplicitSelfExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AImplicitSelfExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction265[48] = {
-  {(bigint) 2443 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction265 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction265 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2443 /* 3: ReduceAction265 < ReduceAction265: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6403;
+  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6403 */
+  fra.me.REG[0] = NEW_AImplicitSelfExpr();
+  INIT_ATTRIBUTES__AImplicitSelfExpr(fra.me.REG[0]);
+  parser_prod___ASelfExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AImplicitSelfExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6434;
+  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6434 */
+  fra.me.REG[0] = NEW_AImplicitSelfExpr();
+  INIT_ATTRIBUTES__AImplicitSelfExpr(fra.me.REG[0]);
+  parser_prod___AImplicitSelfExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AImplicitSelfExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6436;
+  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6436 */
+  fra.me.REG[0] = NEW_AImplicitSelfExpr();
+  INIT_ATTRIBUTES__AImplicitSelfExpr(fra.me.REG[0]);
+  parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(fra.me.REG[0], init_table);
+  CHECKNEW_AImplicitSelfExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AImplicitSelfExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AImplicitSelfExpr();
+  INIT_ATTRIBUTES__AImplicitSelfExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AImplicitSelfExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___init_aselfexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6405;
+  fra.me.meth = LOCATE_NEW_AImplicitSelfExpr_parser_prod___ASelfExpr___init_aselfexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6405 */
+  fra.me.REG[1] = NEW_AImplicitSelfExpr();
+  INIT_ATTRIBUTES__AImplicitSelfExpr(fra.me.REG[1]);
+  parser_prod___ASelfExpr___init_aselfexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AImplicitSelfExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ATrueExpr[84] = {
+  {(bigint) 3315 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ATrueExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ATrueExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ATrueExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: ATrueExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3207 /* 7: ATrueExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3315 /* 8: ATrueExpr < ATrueExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66291,14 +68136,9 @@ const classtable_elt_t VFT_ReduceAction265[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction265 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ATrueExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66306,7 +68146,6 @@ const classtable_elt_t VFT_ReduceAction265[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66314,45 +68153,189 @@ const classtable_elt_t VFT_ReduceAction265[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction265 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction265___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction265 < ReduceAction265: superclass init_table position */},
-  {(bigint) parser___ReduceAction265___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ATrueExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ATrueExpr___visit_all},
+  {(bigint) 1 /* 58: ATrueExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ABoolExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ATrueExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ATrueExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ATrueExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 4 /* 79: ATrueExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser_prod___ATrueExpr___empty_init},
+  {(bigint) parser_prod___ATrueExpr___init_atrueexpr},
+  {(bigint) 5 /* 82: ATrueExpr < ATrueExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ATrueExpr___n_kwtrue},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction265(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ATrueExpr::_parent */
+/* 3: Attribute ATrueExpr::_location */
+/* 4: Attribute ATrueExpr::_first_location */
+/* 5: Attribute ATrueExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ATrueExpr::_is_typed */
+/* 8: Attribute ATrueExpr::_stype */
+/* 9: Attribute ATrueExpr::_if_true_flow_ctx */
+/* 10: Attribute ATrueExpr::_if_false_flow_ctx */
+/* 11: Attribute ATrueExpr::_n_kwtrue */
+void INIT_ATTRIBUTES__ATrueExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ATrueExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ATrueExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction265;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction265(val_t self, char *from) {
-}
-val_t NEW_ReduceAction265_parser___ReduceAction265___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction265();
-  parser___ReduceAction265___init(self, init_table);
-  CHECKNEW_ReduceAction265(self, "parser::ReduceAction265::init for ReduceAction265");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_ATrueExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ATrueExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ATrueExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwtrue", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction266[48] = {
-  {(bigint) 2439 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction266 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction266 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2439 /* 3: ReduceAction266 < ReduceAction266: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ATrueExpr_parser_prod___ATrueExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6450;
+  fra.me.meth = LOCATE_NEW_ATrueExpr_parser_prod___ATrueExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6450 */
+  fra.me.REG[0] = NEW_ATrueExpr();
+  INIT_ATTRIBUTES__ATrueExpr(fra.me.REG[0]);
+  parser_prod___ATrueExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ATrueExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6452;
+  fra.me.meth = LOCATE_NEW_ATrueExpr_parser_prod___ATrueExpr___init_atrueexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6452 */
+  fra.me.REG[1] = NEW_ATrueExpr();
+  INIT_ATTRIBUTES__ATrueExpr(fra.me.REG[1]);
+  parser_prod___ATrueExpr___init_atrueexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ATrueExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ATrueExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ATrueExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ATrueExpr();
+  INIT_ATTRIBUTES__ATrueExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ATrueExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AFalseExpr[84] = {
+  {(bigint) 3379 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AFalseExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AFalseExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AFalseExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AFalseExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3207 /* 7: AFalseExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3379 /* 8: AFalseExpr < AFalseExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66361,14 +68344,9 @@ const classtable_elt_t VFT_ReduceAction266[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction266 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AFalseExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66376,7 +68354,6 @@ const classtable_elt_t VFT_ReduceAction266[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66384,44 +68361,188 @@ const classtable_elt_t VFT_ReduceAction266[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction266 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction266___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction266 < ReduceAction266: superclass init_table position */},
-  {(bigint) parser___ReduceAction266___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AFalseExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AFalseExpr___visit_all},
+  {(bigint) 1 /* 58: AFalseExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ABoolExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AFalseExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AFalseExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AFalseExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 4 /* 79: AFalseExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) parser_prod___AFalseExpr___empty_init},
+  {(bigint) parser_prod___AFalseExpr___init_afalseexpr},
+  {(bigint) 5 /* 82: AFalseExpr < AFalseExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AFalseExpr___n_kwfalse},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction266(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AFalseExpr::_parent */
+/* 3: Attribute AFalseExpr::_location */
+/* 4: Attribute AFalseExpr::_first_location */
+/* 5: Attribute AFalseExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AFalseExpr::_is_typed */
+/* 8: Attribute AFalseExpr::_stype */
+/* 9: Attribute AFalseExpr::_if_true_flow_ctx */
+/* 10: Attribute AFalseExpr::_if_false_flow_ctx */
+/* 11: Attribute AFalseExpr::_n_kwfalse */
+void INIT_ATTRIBUTES__AFalseExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AFalseExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AFalseExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction266;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction266(val_t self, char *from) {
-}
-val_t NEW_ReduceAction266_parser___ReduceAction266___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction266();
-  parser___ReduceAction266___init(self, init_table);
-  CHECKNEW_ReduceAction266(self, "parser::ReduceAction266::init for ReduceAction266");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_AFalseExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AFalseExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AFalseExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwfalse", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction267[48] = {
-  {(bigint) 2435 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction267 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction267 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2435 /* 3: ReduceAction267 < ReduceAction267: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AFalseExpr_parser_prod___AFalseExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6481;
+  fra.me.meth = LOCATE_NEW_AFalseExpr_parser_prod___AFalseExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6481 */
+  fra.me.REG[0] = NEW_AFalseExpr();
+  INIT_ATTRIBUTES__AFalseExpr(fra.me.REG[0]);
+  parser_prod___AFalseExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AFalseExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6483;
+  fra.me.meth = LOCATE_NEW_AFalseExpr_parser_prod___AFalseExpr___init_afalseexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6483 */
+  fra.me.REG[1] = NEW_AFalseExpr();
+  INIT_ATTRIBUTES__AFalseExpr(fra.me.REG[1]);
+  parser_prod___AFalseExpr___init_afalseexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AFalseExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AFalseExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AFalseExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AFalseExpr();
+  INIT_ATTRIBUTES__AFalseExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AFalseExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ANullExpr[83] = {
+  {(bigint) 3087 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ANullExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ANullExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ANullExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: ANullExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3087 /* 7: ANullExpr < ANullExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66431,14 +68552,9 @@ const classtable_elt_t VFT_ReduceAction267[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction267 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ANullExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66446,7 +68562,6 @@ const classtable_elt_t VFT_ReduceAction267[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66454,44 +68569,187 @@ const classtable_elt_t VFT_ReduceAction267[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction267 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction267___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction267 < ReduceAction267: superclass init_table position */},
-  {(bigint) parser___ReduceAction267___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANullExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANullExpr___visit_all},
+  {(bigint) 1 /* 58: ANullExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANullExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ANullExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ANullExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ANullExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___ANullExpr___empty_init},
+  {(bigint) parser_prod___ANullExpr___init_anullexpr},
+  {(bigint) 4 /* 81: ANullExpr < ANullExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ANullExpr___n_kwnull},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction267(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ANullExpr::_parent */
+/* 3: Attribute ANullExpr::_location */
+/* 4: Attribute ANullExpr::_first_location */
+/* 5: Attribute ANullExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ANullExpr::_is_typed */
+/* 8: Attribute ANullExpr::_stype */
+/* 9: Attribute ANullExpr::_if_true_flow_ctx */
+/* 10: Attribute ANullExpr::_if_false_flow_ctx */
+/* 11: Attribute ANullExpr::_n_kwnull */
+void INIT_ATTRIBUTES__ANullExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ANullExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ANullExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction267;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction267(val_t self, char *from) {
-}
-val_t NEW_ReduceAction267_parser___ReduceAction267___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction267();
-  parser___ReduceAction267___init(self, init_table);
-  CHECKNEW_ReduceAction267(self, "parser::ReduceAction267::init for ReduceAction267");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_ANullExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ANullExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ANullExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction268[48] = {
-  {(bigint) 2431 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction268 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction268 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2431 /* 3: ReduceAction268 < ReduceAction268: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ANullExpr_parser_prod___ANullExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6512;
+  fra.me.meth = LOCATE_NEW_ANullExpr_parser_prod___ANullExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6512 */
+  fra.me.REG[0] = NEW_ANullExpr();
+  INIT_ATTRIBUTES__ANullExpr(fra.me.REG[0]);
+  parser_prod___ANullExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ANullExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6514;
+  fra.me.meth = LOCATE_NEW_ANullExpr_parser_prod___ANullExpr___init_anullexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6514 */
+  fra.me.REG[1] = NEW_ANullExpr();
+  INIT_ATTRIBUTES__ANullExpr(fra.me.REG[1]);
+  parser_prod___ANullExpr___init_anullexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ANullExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ANullExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ANullExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ANullExpr();
+  INIT_ATTRIBUTES__ANullExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ANullExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AIntExpr[83] = {
+  {(bigint) 3135 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AIntExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AIntExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AIntExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AIntExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3135 /* 7: AIntExpr < AIntExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66501,14 +68759,9 @@ const classtable_elt_t VFT_ReduceAction268[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction268 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AIntExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66516,7 +68769,6 @@ const classtable_elt_t VFT_ReduceAction268[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66524,44 +68776,187 @@ const classtable_elt_t VFT_ReduceAction268[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction268 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction268___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction268 < ReduceAction268: superclass init_table position */},
-  {(bigint) parser___ReduceAction268___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AIntExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AIntExpr___visit_all},
+  {(bigint) 1 /* 58: AIntExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AIntExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AIntExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AIntExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AIntExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___AIntExpr___empty_init},
+  {(bigint) parser_prod___AIntExpr___init_aintexpr},
+  {(bigint) 4 /* 81: AIntExpr < AIntExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AIntExpr___n_number},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction268(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AIntExpr::_parent */
+/* 3: Attribute AIntExpr::_location */
+/* 4: Attribute AIntExpr::_first_location */
+/* 5: Attribute AIntExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AIntExpr::_is_typed */
+/* 8: Attribute AIntExpr::_stype */
+/* 9: Attribute AIntExpr::_if_true_flow_ctx */
+/* 10: Attribute AIntExpr::_if_false_flow_ctx */
+/* 11: Attribute AIntExpr::_n_number */
+void INIT_ATTRIBUTES__AIntExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AIntExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AIntExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction268;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction268(val_t self, char *from) {
-}
-val_t NEW_ReduceAction268_parser___ReduceAction268___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction268();
-  parser___ReduceAction268___init(self, init_table);
-  CHECKNEW_ReduceAction268(self, "parser::ReduceAction268::init for ReduceAction268");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_AIntExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AIntExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AIntExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIntExpr____n_number(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_number", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction269[48] = {
-  {(bigint) 2427 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction269 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction269 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2427 /* 3: ReduceAction269 < ReduceAction269: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AIntExpr_parser_prod___AIntExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6543;
+  fra.me.meth = LOCATE_NEW_AIntExpr_parser_prod___AIntExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6543 */
+  fra.me.REG[0] = NEW_AIntExpr();
+  INIT_ATTRIBUTES__AIntExpr(fra.me.REG[0]);
+  parser_prod___AIntExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AIntExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6545;
+  fra.me.meth = LOCATE_NEW_AIntExpr_parser_prod___AIntExpr___init_aintexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6545 */
+  fra.me.REG[1] = NEW_AIntExpr();
+  INIT_ATTRIBUTES__AIntExpr(fra.me.REG[1]);
+  parser_prod___AIntExpr___init_aintexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AIntExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AIntExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AIntExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AIntExpr();
+  INIT_ATTRIBUTES__AIntExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AIntExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AFloatExpr[83] = {
+  {(bigint) 3163 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AFloatExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AFloatExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AFloatExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AFloatExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3163 /* 7: AFloatExpr < AFloatExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66571,14 +68966,9 @@ const classtable_elt_t VFT_ReduceAction269[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction269 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AFloatExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66586,7 +68976,6 @@ const classtable_elt_t VFT_ReduceAction269[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66594,44 +68983,187 @@ const classtable_elt_t VFT_ReduceAction269[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction269 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction269___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction269 < ReduceAction269: superclass init_table position */},
-  {(bigint) parser___ReduceAction269___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AFloatExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AFloatExpr___visit_all},
+  {(bigint) 1 /* 58: AFloatExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AFloatExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AFloatExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AFloatExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AFloatExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___AFloatExpr___empty_init},
+  {(bigint) parser_prod___AFloatExpr___init_afloatexpr},
+  {(bigint) 4 /* 81: AFloatExpr < AFloatExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AFloatExpr___n_float},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction269(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AFloatExpr::_parent */
+/* 3: Attribute AFloatExpr::_location */
+/* 4: Attribute AFloatExpr::_first_location */
+/* 5: Attribute AFloatExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AFloatExpr::_is_typed */
+/* 8: Attribute AFloatExpr::_stype */
+/* 9: Attribute AFloatExpr::_if_true_flow_ctx */
+/* 10: Attribute AFloatExpr::_if_false_flow_ctx */
+/* 11: Attribute AFloatExpr::_n_float */
+void INIT_ATTRIBUTES__AFloatExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AFloatExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AFloatExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction269;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction269(val_t self, char *from) {
-}
-val_t NEW_ReduceAction269_parser___ReduceAction269___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction269();
-  parser___ReduceAction269___init(self, init_table);
-  CHECKNEW_ReduceAction269(self, "parser::ReduceAction269::init for ReduceAction269");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_AFloatExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AFloatExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AFloatExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AFloatExpr____n_float(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_float", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction270[48] = {
-  {(bigint) 2419 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction270 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction270 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2419 /* 3: ReduceAction270 < ReduceAction270: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AFloatExpr_parser_prod___AFloatExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6574;
+  fra.me.meth = LOCATE_NEW_AFloatExpr_parser_prod___AFloatExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6574 */
+  fra.me.REG[0] = NEW_AFloatExpr();
+  INIT_ATTRIBUTES__AFloatExpr(fra.me.REG[0]);
+  parser_prod___AFloatExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AFloatExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6576;
+  fra.me.meth = LOCATE_NEW_AFloatExpr_parser_prod___AFloatExpr___init_afloatexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6576 */
+  fra.me.REG[1] = NEW_AFloatExpr();
+  INIT_ATTRIBUTES__AFloatExpr(fra.me.REG[1]);
+  parser_prod___AFloatExpr___init_afloatexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AFloatExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AFloatExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AFloatExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AFloatExpr();
+  INIT_ATTRIBUTES__AFloatExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AFloatExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ACharExpr[83] = {
+  {(bigint) 3191 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ACharExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ACharExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ACharExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: ACharExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3191 /* 7: ACharExpr < ACharExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66641,14 +69173,9 @@ const classtable_elt_t VFT_ReduceAction270[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction270 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ACharExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66656,7 +69183,6 @@ const classtable_elt_t VFT_ReduceAction270[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66664,44 +69190,187 @@ const classtable_elt_t VFT_ReduceAction270[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction270 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction270___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction270 < ReduceAction270: superclass init_table position */},
-  {(bigint) parser___ReduceAction270___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ACharExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ACharExpr___visit_all},
+  {(bigint) 1 /* 58: ACharExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ACharExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ACharExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ACharExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ACharExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___ACharExpr___empty_init},
+  {(bigint) parser_prod___ACharExpr___init_acharexpr},
+  {(bigint) 4 /* 81: ACharExpr < ACharExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ACharExpr___n_char},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction270(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ACharExpr::_parent */
+/* 3: Attribute ACharExpr::_location */
+/* 4: Attribute ACharExpr::_first_location */
+/* 5: Attribute ACharExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ACharExpr::_is_typed */
+/* 8: Attribute ACharExpr::_stype */
+/* 9: Attribute ACharExpr::_if_true_flow_ctx */
+/* 10: Attribute ACharExpr::_if_false_flow_ctx */
+/* 11: Attribute ACharExpr::_n_char */
+void INIT_ATTRIBUTES__ACharExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ACharExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ACharExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction270;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction270(val_t self, char *from) {
-}
-val_t NEW_ReduceAction270_parser___ReduceAction270___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction270();
-  parser___ReduceAction270___init(self, init_table);
-  CHECKNEW_ReduceAction270(self, "parser::ReduceAction270::init for ReduceAction270");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_ACharExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ACharExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ACharExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ACharExpr____n_char(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_char", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction271[48] = {
-  {(bigint) 2415 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction271 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction271 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2415 /* 3: ReduceAction271 < ReduceAction271: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ACharExpr_parser_prod___ACharExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6605;
+  fra.me.meth = LOCATE_NEW_ACharExpr_parser_prod___ACharExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6605 */
+  fra.me.REG[0] = NEW_ACharExpr();
+  INIT_ATTRIBUTES__ACharExpr(fra.me.REG[0]);
+  parser_prod___ACharExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ACharExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6607;
+  fra.me.meth = LOCATE_NEW_ACharExpr_parser_prod___ACharExpr___init_acharexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6607 */
+  fra.me.REG[1] = NEW_ACharExpr();
+  INIT_ATTRIBUTES__ACharExpr(fra.me.REG[1]);
+  parser_prod___ACharExpr___init_acharexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ACharExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ACharExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ACharExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ACharExpr();
+  INIT_ATTRIBUTES__ACharExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ACharExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AStringFormExpr[82] = {
+  {(bigint) 3011 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AStringFormExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AStringFormExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AStringFormExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AStringFormExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3011 /* 7: AStringFormExpr < AStringFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66711,14 +69380,9 @@ const classtable_elt_t VFT_ReduceAction271[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction271 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AStringFormExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66726,7 +69390,6 @@ const classtable_elt_t VFT_ReduceAction271[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66734,45 +69397,143 @@ const classtable_elt_t VFT_ReduceAction271[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction271 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction271___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction271 < ReduceAction271: superclass init_table position */},
-  {(bigint) parser___ReduceAction271___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction271(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AStringFormExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AStringFormExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AStringFormExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AStringFormExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AStringFormExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) icode_generation___AStringFormExpr___string_text},
+  {(bigint) icode_generation___AStringFormExpr___compute_string_infos},
+  {(bigint) 4 /* 81: AStringFormExpr < AStringFormExpr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AStringFormExpr::_parent */
+/* 3: Attribute AStringFormExpr::_location */
+/* 4: Attribute AStringFormExpr::_first_location */
+/* 5: Attribute AStringFormExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AStringFormExpr::_is_typed */
+/* 8: Attribute AStringFormExpr::_stype */
+/* 9: Attribute AStringFormExpr::_if_true_flow_ctx */
+/* 10: Attribute AStringFormExpr::_if_false_flow_ctx */
+/* 11: Attribute AStringFormExpr::_cstring */
+/* 12: Attribute AStringFormExpr::_cstring_length */
+void INIT_ATTRIBUTES__AStringFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AStringFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AStringFormExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction271;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction271(val_t self, char *from) {
-}
-val_t NEW_ReduceAction271_parser___ReduceAction271___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction271();
-  parser___ReduceAction271___init(self, init_table);
-  CHECKNEW_ReduceAction271(self, "parser::ReduceAction271::init for ReduceAction271");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AStringFormExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AStringFormExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AStringFormExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction272[48] = {
-  {(bigint) 2411 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction272 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction272 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2411 /* 3: ReduceAction272 < ReduceAction272: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AStringFormExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AStringFormExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AStringFormExpr();
+  INIT_ATTRIBUTES__AStringFormExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStringFormExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AStringExpr[86] = {
+  {(bigint) 3319 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AStringExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AStringExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3011 /* 7: AStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3319 /* 8: AStringExpr < AStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66781,14 +69542,9 @@ const classtable_elt_t VFT_ReduceAction272[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction272 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AStringExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66796,7 +69552,6 @@ const classtable_elt_t VFT_ReduceAction272[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66804,45 +69559,193 @@ const classtable_elt_t VFT_ReduceAction272[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction272 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction272___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction272 < ReduceAction272: superclass init_table position */},
-  {(bigint) parser___ReduceAction272___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AStringExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AStringExpr___visit_all},
+  {(bigint) 1 /* 58: AStringExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AStringFormExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AStringExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AStringExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AStringFormExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) icode_generation___AStringExpr___string_text},
+  {(bigint) icode_generation___AStringFormExpr___compute_string_infos},
+  {(bigint) 4 /* 81: AStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) parser_prod___AStringExpr___empty_init},
+  {(bigint) parser_prod___AStringExpr___init_astringexpr},
+  {(bigint) 5 /* 84: AStringExpr < AStringExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AStringExpr___n_string},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction272(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AStringExpr::_parent */
+/* 3: Attribute AStringExpr::_location */
+/* 4: Attribute AStringExpr::_first_location */
+/* 5: Attribute AStringExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AStringExpr::_is_typed */
+/* 8: Attribute AStringExpr::_stype */
+/* 9: Attribute AStringExpr::_if_true_flow_ctx */
+/* 10: Attribute AStringExpr::_if_false_flow_ctx */
+/* 11: Attribute AStringExpr::_cstring */
+/* 12: Attribute AStringExpr::_cstring_length */
+/* 13: Attribute AStringExpr::_n_string */
+void INIT_ATTRIBUTES__AStringExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AStringExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AStringExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction272;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction272(val_t self, char *from) {
-}
-val_t NEW_ReduceAction272_parser___ReduceAction272___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction272();
-  parser___ReduceAction272___init(self, init_table);
-  CHECKNEW_ReduceAction272(self, "parser::ReduceAction272::init for ReduceAction272");
-  return self;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_AStringExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AStringExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AStringExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction273[48] = {
-  {(bigint) 2407 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction273 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction273 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2407 /* 3: ReduceAction273 < ReduceAction273: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AStringExpr_parser_prod___AStringExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6636;
+  fra.me.meth = LOCATE_NEW_AStringExpr_parser_prod___AStringExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6636 */
+  fra.me.REG[0] = NEW_AStringExpr();
+  INIT_ATTRIBUTES__AStringExpr(fra.me.REG[0]);
+  parser_prod___AStringExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStringExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6638;
+  fra.me.meth = LOCATE_NEW_AStringExpr_parser_prod___AStringExpr___init_astringexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6638 */
+  fra.me.REG[1] = NEW_AStringExpr();
+  INIT_ATTRIBUTES__AStringExpr(fra.me.REG[1]);
+  parser_prod___AStringExpr___init_astringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStringExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AStringExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AStringExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AStringExpr();
+  INIT_ATTRIBUTES__AStringExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStringExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AStartStringExpr[86] = {
+  {(bigint) 3323 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AStartStringExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AStartStringExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AStartStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AStartStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3011 /* 7: AStartStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3323 /* 8: AStartStringExpr < AStartStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66851,14 +69754,9 @@ const classtable_elt_t VFT_ReduceAction273[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction273 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AStartStringExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66866,7 +69764,6 @@ const classtable_elt_t VFT_ReduceAction273[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66874,45 +69771,193 @@ const classtable_elt_t VFT_ReduceAction273[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction273 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction273___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction273 < ReduceAction273: superclass init_table position */},
-  {(bigint) parser___ReduceAction273___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AStartStringExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AStartStringExpr___visit_all},
+  {(bigint) 1 /* 58: AStartStringExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AStringFormExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AStartStringExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AStartStringExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AStringFormExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) icode_generation___AStartStringExpr___string_text},
+  {(bigint) icode_generation___AStringFormExpr___compute_string_infos},
+  {(bigint) 4 /* 81: AStartStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) parser_prod___AStartStringExpr___empty_init},
+  {(bigint) parser_prod___AStartStringExpr___init_astartstringexpr},
+  {(bigint) 5 /* 84: AStartStringExpr < AStartStringExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AStartStringExpr___n_string},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction273(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AStartStringExpr::_parent */
+/* 3: Attribute AStartStringExpr::_location */
+/* 4: Attribute AStartStringExpr::_first_location */
+/* 5: Attribute AStartStringExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AStartStringExpr::_is_typed */
+/* 8: Attribute AStartStringExpr::_stype */
+/* 9: Attribute AStartStringExpr::_if_true_flow_ctx */
+/* 10: Attribute AStartStringExpr::_if_false_flow_ctx */
+/* 11: Attribute AStartStringExpr::_cstring */
+/* 12: Attribute AStartStringExpr::_cstring_length */
+/* 13: Attribute AStartStringExpr::_n_string */
+void INIT_ATTRIBUTES__AStartStringExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AStartStringExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AStartStringExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction273;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction273(val_t self, char *from) {
-}
-val_t NEW_ReduceAction273_parser___ReduceAction273___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction273();
-  parser___ReduceAction273___init(self, init_table);
-  CHECKNEW_ReduceAction273(self, "parser::ReduceAction273::init for ReduceAction273");
-  return self;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_AStartStringExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AStartStringExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AStartStringExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AStartStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction274[48] = {
-  {(bigint) 2403 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction274 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction274 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2403 /* 3: ReduceAction274 < ReduceAction274: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AStartStringExpr_parser_prod___AStartStringExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6667;
+  fra.me.meth = LOCATE_NEW_AStartStringExpr_parser_prod___AStartStringExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6667 */
+  fra.me.REG[0] = NEW_AStartStringExpr();
+  INIT_ATTRIBUTES__AStartStringExpr(fra.me.REG[0]);
+  parser_prod___AStartStringExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AStartStringExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AStartStringExpr_parser_prod___AStartStringExpr___init_astartstringexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6669;
+  fra.me.meth = LOCATE_NEW_AStartStringExpr_parser_prod___AStartStringExpr___init_astartstringexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6669 */
+  fra.me.REG[1] = NEW_AStartStringExpr();
+  INIT_ATTRIBUTES__AStartStringExpr(fra.me.REG[1]);
+  parser_prod___AStartStringExpr___init_astartstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStartStringExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AStartStringExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AStartStringExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AStartStringExpr();
+  INIT_ATTRIBUTES__AStartStringExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AStartStringExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AMidStringExpr[86] = {
+  {(bigint) 3351 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AMidStringExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AMidStringExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AMidStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AMidStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3011 /* 7: AMidStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3351 /* 8: AMidStringExpr < AMidStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66921,14 +69966,9 @@ const classtable_elt_t VFT_ReduceAction274[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction274 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AMidStringExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -66936,7 +69976,6 @@ const classtable_elt_t VFT_ReduceAction274[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -66944,45 +69983,193 @@ const classtable_elt_t VFT_ReduceAction274[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction274 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction274___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction274 < ReduceAction274: superclass init_table position */},
-  {(bigint) parser___ReduceAction274___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AMidStringExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AMidStringExpr___visit_all},
+  {(bigint) 1 /* 58: AMidStringExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AStringFormExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AMidStringExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AMidStringExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AStringFormExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) icode_generation___AMidStringExpr___string_text},
+  {(bigint) icode_generation___AStringFormExpr___compute_string_infos},
+  {(bigint) 4 /* 81: AMidStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) parser_prod___AMidStringExpr___empty_init},
+  {(bigint) parser_prod___AMidStringExpr___init_amidstringexpr},
+  {(bigint) 5 /* 84: AMidStringExpr < AMidStringExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AMidStringExpr___n_string},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction274(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AMidStringExpr::_parent */
+/* 3: Attribute AMidStringExpr::_location */
+/* 4: Attribute AMidStringExpr::_first_location */
+/* 5: Attribute AMidStringExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AMidStringExpr::_is_typed */
+/* 8: Attribute AMidStringExpr::_stype */
+/* 9: Attribute AMidStringExpr::_if_true_flow_ctx */
+/* 10: Attribute AMidStringExpr::_if_false_flow_ctx */
+/* 11: Attribute AMidStringExpr::_cstring */
+/* 12: Attribute AMidStringExpr::_cstring_length */
+/* 13: Attribute AMidStringExpr::_n_string */
+void INIT_ATTRIBUTES__AMidStringExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AMidStringExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMidStringExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction274;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction274(val_t self, char *from) {
-}
-val_t NEW_ReduceAction274_parser___ReduceAction274___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction274();
-  parser___ReduceAction274___init(self, init_table);
-  CHECKNEW_ReduceAction274(self, "parser::ReduceAction274::init for ReduceAction274");
-  return self;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_AMidStringExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AMidStringExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AMidStringExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AMidStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction275[48] = {
-  {(bigint) 2399 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction275 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction275 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2399 /* 3: ReduceAction275 < ReduceAction275: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AMidStringExpr_parser_prod___AMidStringExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6698;
+  fra.me.meth = LOCATE_NEW_AMidStringExpr_parser_prod___AMidStringExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6698 */
+  fra.me.REG[0] = NEW_AMidStringExpr();
+  INIT_ATTRIBUTES__AMidStringExpr(fra.me.REG[0]);
+  parser_prod___AMidStringExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AMidStringExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AMidStringExpr_parser_prod___AMidStringExpr___init_amidstringexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6700;
+  fra.me.meth = LOCATE_NEW_AMidStringExpr_parser_prod___AMidStringExpr___init_amidstringexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6700 */
+  fra.me.REG[1] = NEW_AMidStringExpr();
+  INIT_ATTRIBUTES__AMidStringExpr(fra.me.REG[1]);
+  parser_prod___AMidStringExpr___init_amidstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMidStringExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AMidStringExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AMidStringExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AMidStringExpr();
+  INIT_ATTRIBUTES__AMidStringExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMidStringExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AEndStringExpr[86] = {
+  {(bigint) 3387 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AEndStringExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AEndStringExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AEndStringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AEndStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3011 /* 7: AEndStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3387 /* 8: AEndStringExpr < AEndStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66991,14 +70178,9 @@ const classtable_elt_t VFT_ReduceAction275[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction275 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AEndStringExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67006,7 +70188,6 @@ const classtable_elt_t VFT_ReduceAction275[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67014,44 +70195,192 @@ const classtable_elt_t VFT_ReduceAction275[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction275 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction275___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction275 < ReduceAction275: superclass init_table position */},
-  {(bigint) parser___ReduceAction275___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AEndStringExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AEndStringExpr___visit_all},
+  {(bigint) 1 /* 58: AEndStringExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AStringFormExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AEndStringExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AEndStringExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AStringFormExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) icode_generation___AEndStringExpr___string_text},
+  {(bigint) icode_generation___AStringFormExpr___compute_string_infos},
+  {(bigint) 4 /* 81: AEndStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) parser_prod___AEndStringExpr___empty_init},
+  {(bigint) parser_prod___AEndStringExpr___init_aendstringexpr},
+  {(bigint) 5 /* 84: AEndStringExpr < AEndStringExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AEndStringExpr___n_string},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction275(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AEndStringExpr::_parent */
+/* 3: Attribute AEndStringExpr::_location */
+/* 4: Attribute AEndStringExpr::_first_location */
+/* 5: Attribute AEndStringExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AEndStringExpr::_is_typed */
+/* 8: Attribute AEndStringExpr::_stype */
+/* 9: Attribute AEndStringExpr::_if_true_flow_ctx */
+/* 10: Attribute AEndStringExpr::_if_false_flow_ctx */
+/* 11: Attribute AEndStringExpr::_cstring */
+/* 12: Attribute AEndStringExpr::_cstring_length */
+/* 13: Attribute AEndStringExpr::_n_string */
+void INIT_ATTRIBUTES__AEndStringExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AEndStringExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AEndStringExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction275;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction275(val_t self, char *from) {
-}
-val_t NEW_ReduceAction275_parser___ReduceAction275___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction275();
-  parser___ReduceAction275___init(self, init_table);
-  CHECKNEW_ReduceAction275(self, "parser::ReduceAction275::init for ReduceAction275");
-  return self;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_AEndStringExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AEndStringExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AEndStringExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AEndStringExpr____n_string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_string", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction276[48] = {
-  {(bigint) 2395 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction276 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction276 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2395 /* 3: ReduceAction276 < ReduceAction276: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AEndStringExpr_parser_prod___AEndStringExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6729;
+  fra.me.meth = LOCATE_NEW_AEndStringExpr_parser_prod___AEndStringExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6729 */
+  fra.me.REG[0] = NEW_AEndStringExpr();
+  INIT_ATTRIBUTES__AEndStringExpr(fra.me.REG[0]);
+  parser_prod___AEndStringExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AEndStringExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AEndStringExpr_parser_prod___AEndStringExpr___init_aendstringexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6731;
+  fra.me.meth = LOCATE_NEW_AEndStringExpr_parser_prod___AEndStringExpr___init_aendstringexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6731 */
+  fra.me.REG[1] = NEW_AEndStringExpr();
+  INIT_ATTRIBUTES__AEndStringExpr(fra.me.REG[1]);
+  parser_prod___AEndStringExpr___init_aendstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AEndStringExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AEndStringExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AEndStringExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AEndStringExpr();
+  INIT_ATTRIBUTES__AEndStringExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AEndStringExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ASuperstringExpr[84] = {
+  {(bigint) 3007 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ASuperstringExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ASuperstringExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ASuperstringExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: ASuperstringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3007 /* 7: ASuperstringExpr < ASuperstringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67061,14 +70390,9 @@ const classtable_elt_t VFT_ReduceAction276[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction276 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ASuperstringExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67076,7 +70400,6 @@ const classtable_elt_t VFT_ReduceAction276[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67084,45 +70407,194 @@ const classtable_elt_t VFT_ReduceAction276[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction276 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction276___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction276 < ReduceAction276: superclass init_table position */},
-  {(bigint) parser___ReduceAction276___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASuperstringExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASuperstringExpr___visit_all},
+  {(bigint) 1 /* 58: ASuperstringExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASuperstringExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ASuperstringExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ASuperstringExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASuperstringExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) typing___ASuperstringExpr___atype},
+  {(bigint) parser_prod___ASuperstringExpr___empty_init},
+  {(bigint) parser_prod___ASuperstringExpr___init_asuperstringexpr},
+  {(bigint) 4 /* 82: ASuperstringExpr < ASuperstringExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASuperstringExpr___n_exprs},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction276(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ASuperstringExpr::_parent */
+/* 3: Attribute ASuperstringExpr::_location */
+/* 4: Attribute ASuperstringExpr::_first_location */
+/* 5: Attribute ASuperstringExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ASuperstringExpr::_is_typed */
+/* 8: Attribute ASuperstringExpr::_stype */
+/* 9: Attribute ASuperstringExpr::_if_true_flow_ctx */
+/* 10: Attribute ASuperstringExpr::_if_false_flow_ctx */
+/* 11: Attribute ASuperstringExpr::_atype */
+/* 12: Attribute ASuperstringExpr::_n_exprs */
+void INIT_ATTRIBUTES__ASuperstringExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ASuperstringExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:930 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASuperstringExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction276;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction276(val_t self, char *from) {
-}
-val_t NEW_ReduceAction276_parser___ReduceAction276___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction276();
-  parser___ReduceAction276___init(self, init_table);
-  CHECKNEW_ReduceAction276(self, "parser::ReduceAction276::init for ReduceAction276");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_ASuperstringExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ASuperstringExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ASuperstringExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction277[48] = {
-  {(bigint) 2391 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction277 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction277 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2391 /* 3: ReduceAction277 < ReduceAction277: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6760;
+  fra.me.meth = LOCATE_NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6760 */
+  fra.me.REG[0] = NEW_ASuperstringExpr();
+  INIT_ATTRIBUTES__ASuperstringExpr(fra.me.REG[0]);
+  parser_prod___ASuperstringExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASuperstringExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6762;
+  fra.me.meth = LOCATE_NEW_ASuperstringExpr_parser_prod___ASuperstringExpr___init_asuperstringexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6762 */
+  fra.me.REG[1] = NEW_ASuperstringExpr();
+  INIT_ATTRIBUTES__ASuperstringExpr(fra.me.REG[1]);
+  parser_prod___ASuperstringExpr___init_asuperstringexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASuperstringExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ASuperstringExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ASuperstringExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ASuperstringExpr();
+  INIT_ATTRIBUTES__ASuperstringExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASuperstringExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AParExpr[84] = {
+  {(bigint) 3327 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AParExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AParExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AParExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AParExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AParExpr < AProxyExpr: superclass typecheck marker */},
+  {(bigint) 3327 /* 8: AParExpr < AParExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67131,14 +70603,9 @@ const classtable_elt_t VFT_ReduceAction277[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction277 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: AParExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67146,7 +70613,6 @@ const classtable_elt_t VFT_ReduceAction277[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67154,44 +70620,188 @@ const classtable_elt_t VFT_ReduceAction277[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction277 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction277___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction277 < ReduceAction277: superclass init_table position */},
-  {(bigint) parser___ReduceAction277___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AParExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AParExpr___visit_all},
+  {(bigint) 2 /* 58: AParExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AProxyExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 65: AParExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 4 /* 72: AParExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AProxyExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 0 /* 79: AParExpr < AProxyExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AProxyExpr___n_expr},
+  {(bigint) parser_prod___AParExpr___empty_init},
+  {(bigint) parser_prod___AParExpr___init_aparexpr},
+  {(bigint) 5 /* 83: AParExpr < AParExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction277(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AParExpr::_parent */
+/* 3: Attribute AParExpr::_location */
+/* 4: Attribute AParExpr::_first_location */
+/* 5: Attribute AParExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AParExpr::_is_typed */
+/* 8: Attribute AParExpr::_stype */
+/* 9: Attribute AParExpr::_if_true_flow_ctx */
+/* 10: Attribute AParExpr::_if_false_flow_ctx */
+/* 11: Attribute AParExpr::_n_expr */
+void INIT_ATTRIBUTES__AParExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AParExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AParExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction277;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction277(val_t self, char *from) {
-}
-val_t NEW_ReduceAction277_parser___ReduceAction277___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction277();
-  parser___ReduceAction277___init(self, init_table);
-  CHECKNEW_ReduceAction277(self, "parser::ReduceAction277::init for ReduceAction277");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_AParExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AParExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AParExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction278[48] = {
-  {(bigint) 2387 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction278 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction278 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2387 /* 3: ReduceAction278 < ReduceAction278: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AParExpr_parser_prod___AParExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6798;
+  fra.me.meth = LOCATE_NEW_AParExpr_parser_prod___AParExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6798 */
+  fra.me.REG[0] = NEW_AParExpr();
+  INIT_ATTRIBUTES__AParExpr(fra.me.REG[0]);
+  parser_prod___AParExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AParExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AParExpr_parser_prod___AParExpr___init_aparexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6800;
+  fra.me.meth = LOCATE_NEW_AParExpr_parser_prod___AParExpr___init_aparexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:6800 */
+  fra.me.REG[1] = NEW_AParExpr();
+  INIT_ATTRIBUTES__AParExpr(fra.me.REG[1]);
+  parser_prod___AParExpr___init_aparexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AParExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AParExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AParExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AParExpr();
+  INIT_ATTRIBUTES__AParExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AParExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AProxyExpr[81] = {
+  {(bigint) 3063 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AProxyExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AProxyExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AProxyExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AProxyExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AProxyExpr < AProxyExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67201,14 +70811,9 @@ const classtable_elt_t VFT_ReduceAction278[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction278 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AProxyExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67216,7 +70821,6 @@ const classtable_elt_t VFT_ReduceAction278[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67224,44 +70828,145 @@ const classtable_elt_t VFT_ReduceAction278[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction278 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction278___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction278 < ReduceAction278: superclass init_table position */},
-  {(bigint) parser___ReduceAction278___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AProxyExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AProxyExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AProxyExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AProxyExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AProxyExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 4 /* 79: AProxyExpr < AProxyExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AProxyExpr___n_expr},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction278(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AProxyExpr::_parent */
+/* 3: Attribute AProxyExpr::_location */
+/* 4: Attribute AProxyExpr::_first_location */
+/* 5: Attribute AProxyExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AProxyExpr::_is_typed */
+/* 8: Attribute AProxyExpr::_stype */
+/* 9: Attribute AProxyExpr::_if_true_flow_ctx */
+/* 10: Attribute AProxyExpr::_if_false_flow_ctx */
+/* 11: Attribute AProxyExpr::_n_expr */
+void INIT_ATTRIBUTES__AProxyExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AProxyExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AProxyExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction278;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction278(val_t self, char *from) {
-}
-val_t NEW_ReduceAction278_parser___ReduceAction278___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction278();
-  parser___ReduceAction278___init(self, init_table);
-  CHECKNEW_ReduceAction278(self, "parser::ReduceAction278::init for ReduceAction278");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_AProxyExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AProxyExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AProxyExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AProxyExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction279[48] = {
-  {(bigint) 2383 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction279 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction279 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2383 /* 3: ReduceAction279 < ReduceAction279: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AProxyExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AProxyExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AProxyExpr();
+  INIT_ATTRIBUTES__AProxyExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AProxyExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAsCastExpr[85] = {
+  {(bigint) 3435 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAsCastExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAsCastExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAsCastExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2999 /* 5: AAsCastExpr < ATypeCheckExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AAsCastExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3435 /* 7: AAsCastExpr < AAsCastExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67271,14 +70976,9 @@ const classtable_elt_t VFT_ReduceAction279[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction279 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: AAsCastExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67286,7 +70986,6 @@ const classtable_elt_t VFT_ReduceAction279[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67294,44 +70993,205 @@ const classtable_elt_t VFT_ReduceAction279[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction279 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction279___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction279 < ReduceAction279: superclass init_table position */},
-  {(bigint) parser___ReduceAction279___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AAsCastExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AAsCastExpr___visit_all},
+  {(bigint) 2 /* 58: AAsCastExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AAsCastExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 1 /* 65: AAsCastExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 0 /* 67: AAsCastExpr < ATypeCheckExpr: superclass init_table position */},
+  {(bigint) typing___ATypeCheckExpr___check_expr_cast},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 4 /* 72: AAsCastExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AAsCastExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___AAsCastExpr___empty_init},
+  {(bigint) parser_prod___AAsCastExpr___init_aascastexpr},
+  {(bigint) 5 /* 81: AAsCastExpr < AAsCastExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAsCastExpr___n_expr},
+  {(bigint) parser_nodes___AAsCastExpr___n_kwas},
+  {(bigint) parser_nodes___AAsCastExpr___n_type},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction279(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AAsCastExpr::_parent */
+/* 3: Attribute AAsCastExpr::_location */
+/* 4: Attribute AAsCastExpr::_first_location */
+/* 5: Attribute AAsCastExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAsCastExpr::_is_typed */
+/* 8: Attribute AAsCastExpr::_stype */
+/* 9: Attribute AAsCastExpr::_if_true_flow_ctx */
+/* 10: Attribute AAsCastExpr::_if_false_flow_ctx */
+/* 11: Attribute AAsCastExpr::_n_expr */
+/* 12: Attribute AAsCastExpr::_n_kwas */
+/* 13: Attribute AAsCastExpr::_n_type */
+void INIT_ATTRIBUTES__AAsCastExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAsCastExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAsCastExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction279;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction279(val_t self, char *from) {
-}
-val_t NEW_ReduceAction279_parser___ReduceAction279___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction279();
-  parser___ReduceAction279___init(self, init_table);
-  CHECKNEW_ReduceAction279(self, "parser::ReduceAction279::init for ReduceAction279");
-  return self;
+  obj = alloc(sizeof(val_t) * 14);
+  obj->vft = (classtable_elt_t*)VFT_AAsCastExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAsCastExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAsCastExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsCastExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_type", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction280[48] = {
-  {(bigint) 2375 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction280 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction280 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2375 /* 3: ReduceAction280 < ReduceAction280: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAsCastExpr_parser_prod___AAsCastExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6829;
+  fra.me.meth = LOCATE_NEW_AAsCastExpr_parser_prod___AAsCastExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6829 */
+  fra.me.REG[0] = NEW_AAsCastExpr();
+  INIT_ATTRIBUTES__AAsCastExpr(fra.me.REG[0]);
+  parser_prod___AAsCastExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AAsCastExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6831;
+  fra.me.meth = LOCATE_NEW_AAsCastExpr_parser_prod___AAsCastExpr___init_aascastexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6831 */
+  fra.me.REG[3] = NEW_AAsCastExpr();
+  INIT_ATTRIBUTES__AAsCastExpr(fra.me.REG[3]);
+  parser_prod___AAsCastExpr___init_aascastexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AAsCastExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AAsCastExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAsCastExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAsCastExpr();
+  INIT_ATTRIBUTES__AAsCastExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAsCastExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAsNotnullExpr[86] = {
+  {(bigint) 3235 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAsNotnullExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAsNotnullExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAsNotnullExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AAsNotnullExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3235 /* 7: AAsNotnullExpr < AAsNotnullExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67341,14 +71201,9 @@ const classtable_elt_t VFT_ReduceAction280[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction280 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAsNotnullExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67356,7 +71211,6 @@ const classtable_elt_t VFT_ReduceAction280[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67364,44 +71218,214 @@ const classtable_elt_t VFT_ReduceAction280[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction280 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction280___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction280 < ReduceAction280: superclass init_table position */},
-  {(bigint) parser___ReduceAction280___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AAsNotnullExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AAsNotnullExpr___visit_all},
+  {(bigint) 1 /* 58: AAsNotnullExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AAsNotnullExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAsNotnullExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAsNotnullExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AAsNotnullExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) parser_prod___AAsNotnullExpr___empty_init},
+  {(bigint) parser_prod___AAsNotnullExpr___init_aasnotnullexpr},
+  {(bigint) 4 /* 81: AAsNotnullExpr < AAsNotnullExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAsNotnullExpr___n_expr},
+  {(bigint) parser_nodes___AAsNotnullExpr___n_kwas},
+  {(bigint) parser_nodes___AAsNotnullExpr___n_kwnot},
+  {(bigint) parser_nodes___AAsNotnullExpr___n_kwnull},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction280(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AAsNotnullExpr::_parent */
+/* 3: Attribute AAsNotnullExpr::_location */
+/* 4: Attribute AAsNotnullExpr::_first_location */
+/* 5: Attribute AAsNotnullExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAsNotnullExpr::_is_typed */
+/* 8: Attribute AAsNotnullExpr::_stype */
+/* 9: Attribute AAsNotnullExpr::_if_true_flow_ctx */
+/* 10: Attribute AAsNotnullExpr::_if_false_flow_ctx */
+/* 11: Attribute AAsNotnullExpr::_n_expr */
+/* 12: Attribute AAsNotnullExpr::_n_kwas */
+/* 13: Attribute AAsNotnullExpr::_n_kwnot */
+/* 14: Attribute AAsNotnullExpr::_n_kwnull */
+void INIT_ATTRIBUTES__AAsNotnullExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAsNotnullExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAsNotnullExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction280;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction280(val_t self, char *from) {
-}
-val_t NEW_ReduceAction280_parser___ReduceAction280___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction280();
-  parser___ReduceAction280___init(self, init_table);
-  CHECKNEW_ReduceAction280(self, "parser::ReduceAction280::init for ReduceAction280");
-  return self;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_AAsNotnullExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAsNotnullExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAsNotnullExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwas", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnot", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwnull", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction281[48] = {
-  {(bigint) 2371 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction281 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction281 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2371 /* 3: ReduceAction281 < ReduceAction281: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6888;
+  fra.me.meth = LOCATE_NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6888 */
+  fra.me.REG[0] = NEW_AAsNotnullExpr();
+  INIT_ATTRIBUTES__AAsNotnullExpr(fra.me.REG[0]);
+  parser_prod___AAsNotnullExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AAsNotnullExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6890;
+  fra.me.meth = LOCATE_NEW_AAsNotnullExpr_parser_prod___AAsNotnullExpr___init_aasnotnullexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:6890 */
+  fra.me.REG[4] = NEW_AAsNotnullExpr();
+  INIT_ATTRIBUTES__AAsNotnullExpr(fra.me.REG[4]);
+  parser_prod___AAsNotnullExpr___init_aasnotnullexpr(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_AAsNotnullExpr(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+val_t NEW_AAsNotnullExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAsNotnullExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAsNotnullExpr();
+  INIT_ATTRIBUTES__AAsNotnullExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAsNotnullExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AIssetAttrExpr[97] = {
+  {(bigint) 3359 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AIssetAttrExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AIssetAttrExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AIssetAttrExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3219 /* 5: AIssetAttrExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AIssetAttrExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3359 /* 7: AIssetAttrExpr < AIssetAttrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67411,14 +71435,9 @@ const classtable_elt_t VFT_ReduceAction281[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction281 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AIssetAttrExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67426,7 +71445,6 @@ const classtable_elt_t VFT_ReduceAction281[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67434,42 +71452,222 @@ const classtable_elt_t VFT_ReduceAction281[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction281 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction281___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction281 < ReduceAction281: superclass init_table position */},
-  {(bigint) parser___ReduceAction281___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AIssetAttrExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AIssetAttrExpr___visit_all},
+  {(bigint) 1 /* 58: AIssetAttrExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AIssetAttrExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AIssetAttrExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AIssetAttrExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AIssetAttrExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AAttrFormExpr___do_typing},
+  {(bigint) typing___AAttrFormExpr___prop},
+  {(bigint) typing___AAttrFormExpr___attr_type},
+  {(bigint) 4 /* 90: AIssetAttrExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AAttrFormExpr___n_expr},
+  {(bigint) parser_nodes___AAttrFormExpr___n_id},
+  {(bigint) parser_prod___AIssetAttrExpr___empty_init},
+  {(bigint) parser_prod___AIssetAttrExpr___init_aissetattrexpr},
+  {(bigint) 5 /* 95: AIssetAttrExpr < AIssetAttrExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AIssetAttrExpr___n_kwisset},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction281(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction281;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction281(val_t self, char *from) {
-}
-val_t NEW_ReduceAction281_parser___ReduceAction281___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction281();
-  parser___ReduceAction281___init(self, init_table);
-  CHECKNEW_ReduceAction281(self, "parser::ReduceAction281::init for ReduceAction281");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute AIssetAttrExpr::_parent */
+/* 3: Attribute AIssetAttrExpr::_location */
+/* 4: Attribute AIssetAttrExpr::_first_location */
+/* 5: Attribute AIssetAttrExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AIssetAttrExpr::_is_typed */
+/* 8: Attribute AIssetAttrExpr::_stype */
+/* 9: Attribute AIssetAttrExpr::_if_true_flow_ctx */
+/* 10: Attribute AIssetAttrExpr::_if_false_flow_ctx */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AIssetAttrExpr::_prop */
+/* 17: Attribute AIssetAttrExpr::_attr_type */
+/* 18: Attribute AIssetAttrExpr::_n_expr */
+/* 19: Attribute AIssetAttrExpr::_n_id */
+/* 20: Attribute AIssetAttrExpr::_n_kwisset */
+void INIT_ATTRIBUTES__AIssetAttrExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AIssetAttrExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AIssetAttrExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_AIssetAttrExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AIssetAttrExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AIssetAttrExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwisset", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction282[48] = {
-  {(bigint) 2367 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction282 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction282 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2367 /* 3: ReduceAction282 < ReduceAction282: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6961;
+  fra.me.meth = LOCATE_NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:6961 */
+  fra.me.REG[0] = NEW_AIssetAttrExpr();
+  INIT_ATTRIBUTES__AIssetAttrExpr(fra.me.REG[0]);
+  parser_prod___AIssetAttrExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AIssetAttrExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6963;
+  fra.me.meth = LOCATE_NEW_AIssetAttrExpr_parser_prod___AIssetAttrExpr___init_aissetattrexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6963 */
+  fra.me.REG[3] = NEW_AIssetAttrExpr();
+  INIT_ATTRIBUTES__AIssetAttrExpr(fra.me.REG[3]);
+  parser_prod___AIssetAttrExpr___init_aissetattrexpr(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_AIssetAttrExpr(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_AIssetAttrExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AIssetAttrExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AIssetAttrExpr();
+  INIT_ATTRIBUTES__AIssetAttrExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AIssetAttrExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAssignOp[69] = {
+  {(bigint) 2871 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAssignOp < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAssignOp < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAssignOp < Prod: superclass typecheck marker */},
+  {(bigint) 2871 /* 5: AAssignOp < AAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67481,14 +71679,9 @@ const classtable_elt_t VFT_ReduceAction282[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction282 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAssignOp < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67496,7 +71689,6 @@ const classtable_elt_t VFT_ReduceAction282[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67504,43 +71696,107 @@ const classtable_elt_t VFT_ReduceAction282[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction282 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction282___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction282 < ReduceAction282: superclass init_table position */},
-  {(bigint) parser___ReduceAction282___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction282(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AAssignOp < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAssignOp < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___AAssignOp___method_name},
+  {(bigint) 3 /* 68: AAssignOp < AAssignOp: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AAssignOp::_parent */
+/* 3: Attribute AAssignOp::_location */
+/* 4: Attribute AAssignOp::_first_location */
+/* 5: Attribute AAssignOp::_last_location */
+void INIT_ATTRIBUTES__AAssignOp(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAssignOp;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAssignOp(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction282;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction282(val_t self, char *from) {
-}
-val_t NEW_ReduceAction282_parser___ReduceAction282___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction282();
-  parser___ReduceAction282___init(self, init_table);
-  CHECKNEW_ReduceAction282(self, "parser::ReduceAction282::init for ReduceAction282");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction283[48] = {
-  {(bigint) 2363 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction283 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction283 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2363 /* 3: ReduceAction283 < ReduceAction283: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_AAssignOp;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAssignOp(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAssignOp;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAssignOp_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAssignOp_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAssignOp();
+  INIT_ATTRIBUTES__AAssignOp(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAssignOp(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_APlusAssignOp[73] = {
+  {(bigint) 3079 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: APlusAssignOp < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: APlusAssignOp < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: APlusAssignOp < Prod: superclass typecheck marker */},
+  {(bigint) 2871 /* 5: APlusAssignOp < AAssignOp: superclass typecheck marker */},
+  {(bigint) 3079 /* 6: APlusAssignOp < APlusAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67551,14 +71807,9 @@ const classtable_elt_t VFT_ReduceAction283[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction283 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: APlusAssignOp < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67566,7 +71817,6 @@ const classtable_elt_t VFT_ReduceAction283[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67574,43 +71824,160 @@ const classtable_elt_t VFT_ReduceAction283[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction283 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction283___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction283 < ReduceAction283: superclass init_table position */},
-  {(bigint) parser___ReduceAction283___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___APlusAssignOp___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___APlusAssignOp___visit_all},
+  {(bigint) 1 /* 58: APlusAssignOp < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: APlusAssignOp < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___APlusAssignOp___method_name},
+  {(bigint) 3 /* 68: APlusAssignOp < AAssignOp: superclass init_table position */},
+  {(bigint) parser_prod___APlusAssignOp___empty_init},
+  {(bigint) parser_prod___APlusAssignOp___init_aplusassignop},
+  {(bigint) 4 /* 71: APlusAssignOp < APlusAssignOp: superclass init_table position */},
+  {(bigint) parser_nodes___APlusAssignOp___n_pluseq},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction283(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute APlusAssignOp::_parent */
+/* 3: Attribute APlusAssignOp::_location */
+/* 4: Attribute APlusAssignOp::_first_location */
+/* 5: Attribute APlusAssignOp::_last_location */
+/* 6: Attribute APlusAssignOp::_n_pluseq */
+void INIT_ATTRIBUTES__APlusAssignOp(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__APlusAssignOp;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_APlusAssignOp(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction283;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction283(val_t self, char *from) {
-}
-val_t NEW_ReduceAction283_parser___ReduceAction283___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction283();
-  parser___ReduceAction283___init(self, init_table);
-  CHECKNEW_ReduceAction283(self, "parser::ReduceAction283::init for ReduceAction283");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_APlusAssignOp;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_APlusAssignOp(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_APlusAssignOp;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_pluseq", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction284[48] = {
-  {(bigint) 2359 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction284 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction284 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2359 /* 3: ReduceAction284 < ReduceAction284: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_APlusAssignOp_parser_prod___APlusAssignOp___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7020;
+  fra.me.meth = LOCATE_NEW_APlusAssignOp_parser_prod___APlusAssignOp___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:7020 */
+  fra.me.REG[0] = NEW_APlusAssignOp();
+  INIT_ATTRIBUTES__APlusAssignOp(fra.me.REG[0]);
+  parser_prod___APlusAssignOp___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_APlusAssignOp(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_APlusAssignOp_parser_prod___APlusAssignOp___init_aplusassignop(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7022;
+  fra.me.meth = LOCATE_NEW_APlusAssignOp_parser_prod___APlusAssignOp___init_aplusassignop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:7022 */
+  fra.me.REG[1] = NEW_APlusAssignOp();
+  INIT_ATTRIBUTES__APlusAssignOp(fra.me.REG[1]);
+  parser_prod___APlusAssignOp___init_aplusassignop(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APlusAssignOp(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_APlusAssignOp_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_APlusAssignOp_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_APlusAssignOp();
+  INIT_ATTRIBUTES__APlusAssignOp(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_APlusAssignOp(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AMinusAssignOp[73] = {
+  {(bigint) 3103 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AMinusAssignOp < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AMinusAssignOp < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AMinusAssignOp < Prod: superclass typecheck marker */},
+  {(bigint) 2871 /* 5: AMinusAssignOp < AAssignOp: superclass typecheck marker */},
+  {(bigint) 3103 /* 6: AMinusAssignOp < AMinusAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67621,14 +71988,9 @@ const classtable_elt_t VFT_ReduceAction284[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction284 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AMinusAssignOp < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67636,7 +71998,6 @@ const classtable_elt_t VFT_ReduceAction284[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67644,43 +72005,160 @@ const classtable_elt_t VFT_ReduceAction284[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction284 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction284___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction284 < ReduceAction284: superclass init_table position */},
-  {(bigint) parser___ReduceAction284___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AMinusAssignOp___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AMinusAssignOp___visit_all},
+  {(bigint) 1 /* 58: AMinusAssignOp < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AMinusAssignOp < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___AMinusAssignOp___method_name},
+  {(bigint) 3 /* 68: AMinusAssignOp < AAssignOp: superclass init_table position */},
+  {(bigint) parser_prod___AMinusAssignOp___empty_init},
+  {(bigint) parser_prod___AMinusAssignOp___init_aminusassignop},
+  {(bigint) 4 /* 71: AMinusAssignOp < AMinusAssignOp: superclass init_table position */},
+  {(bigint) parser_nodes___AMinusAssignOp___n_minuseq},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction284(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AMinusAssignOp::_parent */
+/* 3: Attribute AMinusAssignOp::_location */
+/* 4: Attribute AMinusAssignOp::_first_location */
+/* 5: Attribute AMinusAssignOp::_last_location */
+/* 6: Attribute AMinusAssignOp::_n_minuseq */
+void INIT_ATTRIBUTES__AMinusAssignOp(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AMinusAssignOp;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AMinusAssignOp(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction284;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction284(val_t self, char *from) {
-}
-val_t NEW_ReduceAction284_parser___ReduceAction284___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction284();
-  parser___ReduceAction284___init(self, init_table);
-  CHECKNEW_ReduceAction284(self, "parser::ReduceAction284::init for ReduceAction284");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_AMinusAssignOp;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AMinusAssignOp(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AMinusAssignOp;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_minuseq", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction285[48] = {
-  {(bigint) 2355 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction285 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction285 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2355 /* 3: ReduceAction285 < ReduceAction285: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7051;
+  fra.me.meth = LOCATE_NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:7051 */
+  fra.me.REG[0] = NEW_AMinusAssignOp();
+  INIT_ATTRIBUTES__AMinusAssignOp(fra.me.REG[0]);
+  parser_prod___AMinusAssignOp___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AMinusAssignOp(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___init_aminusassignop(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7053;
+  fra.me.meth = LOCATE_NEW_AMinusAssignOp_parser_prod___AMinusAssignOp___init_aminusassignop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:7053 */
+  fra.me.REG[1] = NEW_AMinusAssignOp();
+  INIT_ATTRIBUTES__AMinusAssignOp(fra.me.REG[1]);
+  parser_prod___AMinusAssignOp___init_aminusassignop(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMinusAssignOp(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_AMinusAssignOp_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AMinusAssignOp_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AMinusAssignOp();
+  INIT_ATTRIBUTES__AMinusAssignOp(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AMinusAssignOp(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AClosureDef[84] = {
+  {(bigint) 3187 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AClosureDef < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AClosureDef < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AClosureDef < Prod: superclass typecheck marker */},
+  {(bigint) 2831 /* 5: AClosureDef < ALabelable: superclass typecheck marker */},
+  {(bigint) 3187 /* 6: AClosureDef < AClosureDef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67691,14 +72169,9 @@ const classtable_elt_t VFT_ReduceAction285[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction285 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AClosureDef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67706,7 +72179,6 @@ const classtable_elt_t VFT_ReduceAction285[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67714,42 +72186,224 @@ const classtable_elt_t VFT_ReduceAction285[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction285 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction285___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction285 < ReduceAction285: superclass init_table position */},
-  {(bigint) parser___ReduceAction285___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AClosureDef___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AClosureDef___visit_all},
+  {(bigint) 1 /* 58: AClosureDef < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___AClosureDef___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AClosureDef < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 3 /* 67: AClosureDef < ALabelable: superclass init_table position */},
+  {(bigint) parser_nodes___ALabelable___n_label},
+  {(bigint) icode_generation___AClosureDef___generate_iclosuredef},
+  {(bigint) typing___AClosureDef___escapable},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AClosureDef___accept_typing2},
+  {(bigint) typing___AClosureDef___closure},
+  {(bigint) syntax_base___AClosureDef___variables},
+  {(bigint) syntax_base___AClosureDef___variables__eq},
+  {(bigint) parser_prod___AClosureDef___empty_init},
+  {(bigint) parser_prod___AClosureDef___init_aclosuredef},
+  {(bigint) 4 /* 78: AClosureDef < AClosureDef: superclass init_table position */},
+  {(bigint) parser_nodes___AClosureDef___n_bang},
+  {(bigint) parser_nodes___AClosureDef___n_id},
+  {(bigint) parser_nodes___AClosureDef___n_ids},
+  {(bigint) parser_nodes___AClosureDef___n_kwdo},
+  {(bigint) parser_nodes___AClosureDef___n_expr},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction285(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AClosureDef::_parent */
+/* 3: Attribute AClosureDef::_location */
+/* 4: Attribute AClosureDef::_first_location */
+/* 5: Attribute AClosureDef::_last_location */
+/* 6: Attribute AClosureDef::_n_label */
+/* 7: Attribute AClosureDef::_iclosure_def */
+/* 8: Attribute AClosureDef::_closure */
+/* 9: Attribute AClosureDef::_escapable */
+/* 10: Attribute AClosureDef::_accept_typing2 */
+/* 11: Attribute AClosureDef::_variables */
+/* 12: Attribute AClosureDef::_n_bang */
+/* 13: Attribute AClosureDef::_n_id */
+/* 14: Attribute AClosureDef::_n_ids */
+/* 15: Attribute AClosureDef::_n_kwdo */
+/* 16: Attribute AClosureDef::_n_expr */
+void INIT_ATTRIBUTES__AClosureDef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AClosureDef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:1777 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AClosureDef____accept_typing2(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:969 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:970 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:971 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:603 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AClosureDef(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction285;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction285(val_t self, char *from) {
-}
-val_t NEW_ReduceAction285_parser___ReduceAction285___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction285();
-  parser___ReduceAction285___init(self, init_table);
-  CHECKNEW_ReduceAction285(self, "parser::ReduceAction285::init for ReduceAction285");
-  return self;
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_AClosureDef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AClosureDef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AClosureDef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AClosureDef____accept_typing2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_accept_typing2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_bang(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_bang", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction286[48] = {
-  {(bigint) 2351 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction286 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction286 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2351 /* 3: ReduceAction286 < ReduceAction286: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AClosureDef_parser_prod___AClosureDef___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7082;
+  fra.me.meth = LOCATE_NEW_AClosureDef_parser_prod___AClosureDef___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:7082 */
+  fra.me.REG[0] = NEW_AClosureDef();
+  INIT_ATTRIBUTES__AClosureDef(fra.me.REG[0]);
+  parser_prod___AClosureDef___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AClosureDef(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7084;
+  fra.me.meth = LOCATE_NEW_AClosureDef_parser_prod___AClosureDef___init_aclosuredef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:7084 */
+  fra.me.REG[6] = NEW_AClosureDef();
+  INIT_ATTRIBUTES__AClosureDef(fra.me.REG[6]);
+  parser_prod___AClosureDef___init_aclosuredef(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], fra.me.REG[5], init_table);
+  CHECKNEW_AClosureDef(fra.me.REG[6]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[6];
+}
+val_t NEW_AClosureDef_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AClosureDef_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AClosureDef();
+  INIT_ATTRIBUTES__AClosureDef(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AClosureDef(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AClosureId[69] = {
+  {(bigint) 2855 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AClosureId < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AClosureId < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AClosureId < Prod: superclass typecheck marker */},
+  {(bigint) 2855 /* 5: AClosureId < AClosureId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67761,14 +72415,9 @@ const classtable_elt_t VFT_ReduceAction286[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction286 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AClosureId < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67776,7 +72425,6 @@ const classtable_elt_t VFT_ReduceAction286[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67784,43 +72432,107 @@ const classtable_elt_t VFT_ReduceAction286[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction286 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction286___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction286 < ReduceAction286: superclass init_table position */},
-  {(bigint) parser___ReduceAction286___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction286(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AClosureId < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AClosureId < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___AClosureId___to_symbol},
+  {(bigint) 3 /* 68: AClosureId < AClosureId: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AClosureId::_parent */
+/* 3: Attribute AClosureId::_location */
+/* 4: Attribute AClosureId::_first_location */
+/* 5: Attribute AClosureId::_last_location */
+void INIT_ATTRIBUTES__AClosureId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AClosureId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AClosureId(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction286;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction286(val_t self, char *from) {
-}
-val_t NEW_ReduceAction286_parser___ReduceAction286___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction286();
-  parser___ReduceAction286___init(self, init_table);
-  CHECKNEW_ReduceAction286(self, "parser::ReduceAction286::init for ReduceAction286");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction287[48] = {
-  {(bigint) 2347 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction287 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction287 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2347 /* 3: ReduceAction287 < ReduceAction287: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_AClosureId;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AClosureId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AClosureId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AClosureId_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AClosureId_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AClosureId();
+  INIT_ATTRIBUTES__AClosureId(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AClosureId(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ASimpleClosureId[73] = {
+  {(bigint) 3035 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ASimpleClosureId < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ASimpleClosureId < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ASimpleClosureId < Prod: superclass typecheck marker */},
+  {(bigint) 2855 /* 5: ASimpleClosureId < AClosureId: superclass typecheck marker */},
+  {(bigint) 3035 /* 6: ASimpleClosureId < ASimpleClosureId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67831,14 +72543,9 @@ const classtable_elt_t VFT_ReduceAction287[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction287 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ASimpleClosureId < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67846,7 +72553,6 @@ const classtable_elt_t VFT_ReduceAction287[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67854,43 +72560,160 @@ const classtable_elt_t VFT_ReduceAction287[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction287 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction287___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction287 < ReduceAction287: superclass init_table position */},
-  {(bigint) parser___ReduceAction287___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction287(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASimpleClosureId___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASimpleClosureId___visit_all},
+  {(bigint) 1 /* 58: ASimpleClosureId < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ASimpleClosureId < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASimpleClosureId___to_symbol},
+  {(bigint) 3 /* 68: ASimpleClosureId < AClosureId: superclass init_table position */},
+  {(bigint) parser_prod___ASimpleClosureId___empty_init},
+  {(bigint) parser_prod___ASimpleClosureId___init_asimpleclosureid},
+  {(bigint) 4 /* 71: ASimpleClosureId < ASimpleClosureId: superclass init_table position */},
+  {(bigint) parser_nodes___ASimpleClosureId___n_id},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ASimpleClosureId::_parent */
+/* 3: Attribute ASimpleClosureId::_location */
+/* 4: Attribute ASimpleClosureId::_first_location */
+/* 5: Attribute ASimpleClosureId::_last_location */
+/* 6: Attribute ASimpleClosureId::_n_id */
+void INIT_ATTRIBUTES__ASimpleClosureId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ASimpleClosureId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASimpleClosureId(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction287;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction287(val_t self, char *from) {
-}
-val_t NEW_ReduceAction287_parser___ReduceAction287___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction287();
-  parser___ReduceAction287___init(self, init_table);
-  CHECKNEW_ReduceAction287(self, "parser::ReduceAction287::init for ReduceAction287");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_ASimpleClosureId;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ASimpleClosureId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ASimpleClosureId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction288[48] = {
-  {(bigint) 2343 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction288 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction288 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2343 /* 3: ReduceAction288 < ReduceAction288: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7202;
+  fra.me.meth = LOCATE_NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:7202 */
+  fra.me.REG[0] = NEW_ASimpleClosureId();
+  INIT_ATTRIBUTES__ASimpleClosureId(fra.me.REG[0]);
+  parser_prod___ASimpleClosureId___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASimpleClosureId(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___init_asimpleclosureid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7204;
+  fra.me.meth = LOCATE_NEW_ASimpleClosureId_parser_prod___ASimpleClosureId___init_asimpleclosureid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:7204 */
+  fra.me.REG[1] = NEW_ASimpleClosureId();
+  INIT_ATTRIBUTES__ASimpleClosureId(fra.me.REG[1]);
+  parser_prod___ASimpleClosureId___init_asimpleclosureid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASimpleClosureId(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ASimpleClosureId_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ASimpleClosureId_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ASimpleClosureId();
+  INIT_ATTRIBUTES__ASimpleClosureId(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASimpleClosureId(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ABreakClosureId[73] = {
+  {(bigint) 3195 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ABreakClosureId < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ABreakClosureId < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ABreakClosureId < Prod: superclass typecheck marker */},
+  {(bigint) 2855 /* 5: ABreakClosureId < AClosureId: superclass typecheck marker */},
+  {(bigint) 3195 /* 6: ABreakClosureId < ABreakClosureId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67901,14 +72724,9 @@ const classtable_elt_t VFT_ReduceAction288[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction288 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ABreakClosureId < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67916,7 +72734,6 @@ const classtable_elt_t VFT_ReduceAction288[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67924,42 +72741,159 @@ const classtable_elt_t VFT_ReduceAction288[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction288 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction288___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction288 < ReduceAction288: superclass init_table position */},
-  {(bigint) parser___ReduceAction288___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction288(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ABreakClosureId___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ABreakClosureId___visit_all},
+  {(bigint) 1 /* 58: ABreakClosureId < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ABreakClosureId < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ABreakClosureId___to_symbol},
+  {(bigint) 3 /* 68: ABreakClosureId < AClosureId: superclass init_table position */},
+  {(bigint) parser_prod___ABreakClosureId___empty_init},
+  {(bigint) parser_prod___ABreakClosureId___init_abreakclosureid},
+  {(bigint) 4 /* 71: ABreakClosureId < ABreakClosureId: superclass init_table position */},
+  {(bigint) parser_nodes___ABreakClosureId___n_kwbreak},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ABreakClosureId::_parent */
+/* 3: Attribute ABreakClosureId::_location */
+/* 4: Attribute ABreakClosureId::_first_location */
+/* 5: Attribute ABreakClosureId::_last_location */
+/* 6: Attribute ABreakClosureId::_n_kwbreak */
+void INIT_ATTRIBUTES__ABreakClosureId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ABreakClosureId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ABreakClosureId(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction288;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction288(val_t self, char *from) {
-}
-val_t NEW_ReduceAction288_parser___ReduceAction288___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction288();
-  parser___ReduceAction288___init(self, init_table);
-  CHECKNEW_ReduceAction288(self, "parser::ReduceAction288::init for ReduceAction288");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_ABreakClosureId;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ABreakClosureId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ABreakClosureId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_kwbreak", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction289[48] = {
-  {(bigint) 2339 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction289 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction289 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2339 /* 3: ReduceAction289 < ReduceAction289: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ABreakClosureId_parser_prod___ABreakClosureId___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7233;
+  fra.me.meth = LOCATE_NEW_ABreakClosureId_parser_prod___ABreakClosureId___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:7233 */
+  fra.me.REG[0] = NEW_ABreakClosureId();
+  INIT_ATTRIBUTES__ABreakClosureId(fra.me.REG[0]);
+  parser_prod___ABreakClosureId___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ABreakClosureId(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ABreakClosureId_parser_prod___ABreakClosureId___init_abreakclosureid(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7235;
+  fra.me.meth = LOCATE_NEW_ABreakClosureId_parser_prod___ABreakClosureId___init_abreakclosureid;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:7235 */
+  fra.me.REG[1] = NEW_ABreakClosureId();
+  INIT_ATTRIBUTES__ABreakClosureId(fra.me.REG[1]);
+  parser_prod___ABreakClosureId___init_abreakclosureid(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABreakClosureId(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ABreakClosureId_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ABreakClosureId_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ABreakClosureId();
+  INIT_ATTRIBUTES__ABreakClosureId(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ABreakClosureId(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AQualified[72] = {
+  {(bigint) 2807 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AQualified < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AQualified < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AQualified < Prod: superclass typecheck marker */},
+  {(bigint) 2807 /* 5: AQualified < AQualified: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67971,14 +72905,9 @@ const classtable_elt_t VFT_ReduceAction289[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction289 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AQualified < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -67986,7 +72915,6 @@ const classtable_elt_t VFT_ReduceAction289[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -67994,42 +72922,170 @@ const classtable_elt_t VFT_ReduceAction289[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction289 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction289___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction289 < ReduceAction289: superclass init_table position */},
-  {(bigint) parser___ReduceAction289___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___AQualified___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___AQualified___visit_all},
+  {(bigint) 1 /* 58: AQualified < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AQualified < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) parser_prod___AQualified___empty_init},
+  {(bigint) parser_prod___AQualified___init_aqualified},
+  {(bigint) 3 /* 69: AQualified < AQualified: superclass init_table position */},
+  {(bigint) parser_nodes___AQualified___n_id},
+  {(bigint) parser_nodes___AQualified___n_classid},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction289(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AQualified::_parent */
+/* 3: Attribute AQualified::_location */
+/* 4: Attribute AQualified::_first_location */
+/* 5: Attribute AQualified::_last_location */
+/* 6: Attribute AQualified::_n_id */
+/* 7: Attribute AQualified::_n_classid */
+void INIT_ATTRIBUTES__AQualified(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AQualified;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:986 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_nodes.nit:987 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___AQualified____n_classid(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AQualified(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction289;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction289(val_t self, char *from) {
-}
-val_t NEW_ReduceAction289_parser___ReduceAction289___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction289();
-  parser___ReduceAction289___init(self, init_table);
-  CHECKNEW_ReduceAction289(self, "parser::ReduceAction289::init for ReduceAction289");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_AQualified;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AQualified(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AQualified;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction290[48] = {
-  {(bigint) 2331 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction290 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction290 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2331 /* 3: ReduceAction290 < ReduceAction290: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_AQualified_parser_prod___AQualified___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7264;
+  fra.me.meth = LOCATE_NEW_AQualified_parser_prod___AQualified___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:7264 */
+  fra.me.REG[0] = NEW_AQualified();
+  INIT_ATTRIBUTES__AQualified(fra.me.REG[0]);
+  parser_prod___AQualified___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_AQualified(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_AQualified_parser_prod___AQualified___init_aqualified(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7266;
+  fra.me.meth = LOCATE_NEW_AQualified_parser_prod___AQualified___init_aqualified;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7266 */
+  fra.me.REG[2] = NEW_AQualified();
+  INIT_ATTRIBUTES__AQualified(fra.me.REG[2]);
+  parser_prod___AQualified___init_aqualified(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AQualified(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t NEW_AQualified_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AQualified_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AQualified();
+  INIT_ATTRIBUTES__AQualified(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AQualified(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ADoc[71] = {
+  {(bigint) 2851 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ADoc < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ADoc < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ADoc < Prod: superclass typecheck marker */},
+  {(bigint) 2851 /* 5: ADoc < ADoc: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68041,14 +73097,9 @@ const classtable_elt_t VFT_ReduceAction290[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction290 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ADoc < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68056,7 +73107,6 @@ const classtable_elt_t VFT_ReduceAction290[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68064,42 +73114,163 @@ const classtable_elt_t VFT_ReduceAction290[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction290 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction290___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction290 < ReduceAction290: superclass init_table position */},
-  {(bigint) parser___ReduceAction290___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ADoc___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ADoc___visit_all},
+  {(bigint) 1 /* 58: ADoc < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ADoc < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) parser_prod___ADoc___empty_init},
+  {(bigint) parser_prod___ADoc___init_adoc},
+  {(bigint) 3 /* 69: ADoc < ADoc: superclass init_table position */},
+  {(bigint) parser_nodes___ADoc___n_comment},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction290(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ADoc::_parent */
+/* 3: Attribute ADoc::_location */
+/* 4: Attribute ADoc::_first_location */
+/* 5: Attribute ADoc::_last_location */
+/* 6: Attribute ADoc::_n_comment */
+void INIT_ATTRIBUTES__ADoc(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ADoc;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:991 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ADoc(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction290;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction290(val_t self, char *from) {
-}
-val_t NEW_ReduceAction290_parser___ReduceAction290___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction290();
-  parser___ReduceAction290___init(self, init_table);
-  CHECKNEW_ReduceAction290(self, "parser::ReduceAction290::init for ReduceAction290");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_ADoc;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ADoc(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ADoc;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ADoc____n_comment(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction291[48] = {
-  {(bigint) 2327 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction291 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction291 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2327 /* 3: ReduceAction291 < ReduceAction291: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ADoc_parser_prod___ADoc___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7320;
+  fra.me.meth = LOCATE_NEW_ADoc_parser_prod___ADoc___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:7320 */
+  fra.me.REG[0] = NEW_ADoc();
+  INIT_ATTRIBUTES__ADoc(fra.me.REG[0]);
+  parser_prod___ADoc___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ADoc(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ADoc_parser_prod___ADoc___init_adoc(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7322;
+  fra.me.meth = LOCATE_NEW_ADoc_parser_prod___ADoc___init_adoc;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:7322 */
+  fra.me.REG[1] = NEW_ADoc();
+  INIT_ATTRIBUTES__ADoc(fra.me.REG[1]);
+  parser_prod___ADoc___init_adoc(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ADoc(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ADoc_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ADoc_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ADoc();
+  INIT_ATTRIBUTES__ADoc(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ADoc(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_Start[71] = {
+  {(bigint) 2539 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Start < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: Start < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: Start < Prod: superclass typecheck marker */},
+  {(bigint) 2539 /* 5: Start < Start: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68111,14 +73282,9 @@ const classtable_elt_t VFT_ReduceAction291[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction291 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: Start < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68126,7 +73292,6 @@ const classtable_elt_t VFT_ReduceAction291[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68134,41 +73299,140 @@ const classtable_elt_t VFT_ReduceAction291[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction291 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction291___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction291 < ReduceAction291: superclass init_table position */},
-  {(bigint) parser___ReduceAction291___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___Start___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___Start___visit_all},
+  {(bigint) 1 /* 58: Start < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: Start < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) parser_prod___Start___init},
+  {(bigint) 3 /* 68: Start < Start: superclass init_table position */},
+  {(bigint) parser_nodes___Start___n_base},
+  {(bigint) parser_nodes___Start___n_eof},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction291(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute Start::_parent */
+/* 3: Attribute Start::_location */
+/* 4: Attribute Start::_first_location */
+/* 5: Attribute Start::_last_location */
+/* 6: Attribute Start::_n_base */
+/* 7: Attribute Start::_n_eof */
+void INIT_ATTRIBUTES__Start(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Start;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Start(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction291;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction291(val_t self, char *from) {
-}
-val_t NEW_ReduceAction291_parser___ReduceAction291___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction291();
-  parser___ReduceAction291___init(self, init_table);
-  CHECKNEW_ReduceAction291(self, "parser::ReduceAction291::init for ReduceAction291");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_Start;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Start(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Start;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser_nodes___Start____n_eof(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_eof", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction292[48] = {
-  {(bigint) 2323 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction292 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction292 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2323 /* 3: ReduceAction292 < ReduceAction292: superclass typecheck marker */},
+val_t NEW_Start_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_Start_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_Start();
+  INIT_ATTRIBUTES__Start(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_Start(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_Start_parser_prod___Start___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7359;
+  fra.me.meth = LOCATE_NEW_Start_parser_prod___Start___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7359 */
+  fra.me.REG[2] = NEW_Start();
+  INIT_ATTRIBUTES__Start(fra.me.REG[2]);
+  parser_prod___Start___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_Start(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_Lexer[59] = {
+  {(bigint) 1983 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Lexer < Object: superclass typecheck marker */},
+  {(bigint) 23 /* 3: Lexer < TablesCapable: superclass typecheck marker */},
+  {(bigint) 1983 /* 4: Lexer < Lexer: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68181,14 +73445,9 @@ const classtable_elt_t VFT_ReduceAction292[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction292 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: Lexer < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68196,7 +73455,6 @@ const classtable_elt_t VFT_ReduceAction292[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68204,41 +73462,175 @@ const classtable_elt_t VFT_ReduceAction292[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction292 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction292___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction292 < ReduceAction292: superclass init_table position */},
-  {(bigint) parser___ReduceAction292___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: Lexer < TablesCapable: superclass init_table position */},
+  {(bigint) tables___TablesCapable___lexer_goto},
+  {(bigint) tables___TablesCapable___lexer_accept},
+  {(bigint) tables___TablesCapable___parser_goto},
+  {(bigint) tables___TablesCapable___parser_action},
+  {(bigint) 2 /* 50: Lexer < Lexer: superclass init_table position */},
+  {(bigint) lexer___Lexer___filename},
+  {(bigint) lexer___Lexer___state_initial},
+  {(bigint) lexer___Lexer___init},
+  {(bigint) lexer___Lexer___peek},
+  {(bigint) lexer___Lexer___next},
+  {(bigint) lexer___Lexer___get_token},
+  {(bigint) lexer___Lexer___get_char},
+  {(bigint) lexer___Lexer___push_back},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction292(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute Lexer::_token */
+/* 3: Attribute Lexer::_state */
+/* 4: Attribute Lexer::_filename */
+/* 5: Attribute Lexer::_stream */
+/* 6: Attribute Lexer::_stream_buf */
+/* 7: Attribute Lexer::_stream_pos */
+/* 8: Attribute Lexer::_line */
+/* 9: Attribute Lexer::_pos */
+/* 10: Attribute Lexer::_cr */
+/* 11: Attribute Lexer::_eof */
+/* 12: Attribute Lexer::_text */
+void INIT_ATTRIBUTES__Lexer(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Lexer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:1208 */
+  REGB0 = TAG_Int(0);
+  ATTR_lexer___Lexer____state(fra.me.REG[0]) = REGB0;
+  /* ./parser//lexer.nit:1223 */
+  REGB0 = TAG_Int(0);
+  ATTR_lexer___Lexer____line(fra.me.REG[0]) = REGB0;
+  /* ./parser//lexer.nit:1226 */
+  REGB0 = TAG_Int(0);
+  ATTR_lexer___Lexer____pos(fra.me.REG[0]) = REGB0;
+  /* ./parser//lexer.nit:1229 */
+  REGB0 = TAG_Bool(false);
+  ATTR_lexer___Lexer____cr(fra.me.REG[0]) = REGB0;
+  /* ./parser//lexer.nit:1232 */
+  REGB0 = TAG_Bool(false);
+  ATTR_lexer___Lexer____eof(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Lexer(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction292;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction292(val_t self, char *from) {
-}
-val_t NEW_ReduceAction292_parser___ReduceAction292___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction292();
-  parser___ReduceAction292___init(self, init_table);
-  CHECKNEW_ReduceAction292(self, "parser::ReduceAction292::init for ReduceAction292");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction293[48] = {
-  {(bigint) 2319 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction293 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction293 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2319 /* 3: ReduceAction293 < ReduceAction293: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_Lexer;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Lexer(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Lexer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_lexer___Lexer____state(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_state", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_lexer___Lexer____filename(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_filename", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_lexer___Lexer____stream(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stream", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_lexer___Lexer____stream_buf(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stream_buf", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_lexer___Lexer____stream_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stream_pos", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_lexer___Lexer____line(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_line", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_lexer___Lexer____pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_pos", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_lexer___Lexer____cr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_lexer___Lexer____eof(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_eof", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_lexer___Lexer____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Lexer_lexer___Lexer___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1240;
+  fra.me.meth = LOCATE_NEW_Lexer_lexer___Lexer___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./parser//lexer.nit:1240 */
+  fra.me.REG[2] = NEW_Lexer();
+  INIT_ATTRIBUTES__Lexer(fra.me.REG[2]);
+  lexer___Lexer___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_Lexer(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_Visitor[50] = {
+  {(bigint) 15 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Visitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: Visitor < Visitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68251,14 +73643,10 @@ const classtable_elt_t VFT_ReduceAction293[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction293 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Visitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68266,7 +73654,6 @@ const classtable_elt_t VFT_ReduceAction293[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68274,41 +73661,86 @@ const classtable_elt_t VFT_ReduceAction293[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction293 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction293___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction293 < ReduceAction293: superclass init_table position */},
-  {(bigint) parser___ReduceAction293___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: Visitor < Visitor: superclass init_table position */},
+  {(bigint) parser_prod___Visitor___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
+  {(bigint) parser_prod___Visitor___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction293(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute Visitor::_current_node */
+void INIT_ATTRIBUTES__Visitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Visitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Visitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction293;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction293(val_t self, char *from) {
-}
-val_t NEW_ReduceAction293_parser___ReduceAction293___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction293();
-  parser___ReduceAction293___init(self, init_table);
-  CHECKNEW_ReduceAction293(self, "parser::ReduceAction293::init for ReduceAction293");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction294[48] = {
-  {(bigint) 2315 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction294 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction294 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2315 /* 3: ReduceAction294 < ReduceAction294: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_Visitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Visitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Visitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Visitor_parser_prod___Visitor___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_Visitor_parser_prod___Visitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_Visitor();
+  INIT_ATTRIBUTES__Visitor(fra.me.REG[0]);
+  parser_prod___Visitor___init(fra.me.REG[0], init_table);
+  CHECKNEW_Visitor(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_State[51] = {
+  {(bigint) 39 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: State < Object: superclass typecheck marker */},
+  {(bigint) 39 /* 3: State < State: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68321,14 +73753,10 @@ const classtable_elt_t VFT_ReduceAction294[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction294 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: State < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68336,7 +73764,6 @@ const classtable_elt_t VFT_ReduceAction294[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68344,41 +73771,96 @@ const classtable_elt_t VFT_ReduceAction294[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction294 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction294___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction294 < ReduceAction294: superclass init_table position */},
-  {(bigint) parser___ReduceAction294___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: State < State: superclass init_table position */},
+  {(bigint) parser___State___state},
+  {(bigint) parser___State___state__eq},
+  {(bigint) parser___State___nodes},
+  {(bigint) parser___State___nodes__eq},
+  {(bigint) parser___State___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction294(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction294;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction294(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute State::_state */
+/* 3: Attribute State::_nodes */
+void INIT_ATTRIBUTES__State(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__State;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction294_parser___ReduceAction294___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction294();
-  parser___ReduceAction294___init(self, init_table);
-  CHECKNEW_ReduceAction294(self, "parser::ReduceAction294::init for ReduceAction294");
-  return self;
+val_t NEW_State(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_State;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_State(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_State;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___State____state(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_state", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction295[48] = {
-  {(bigint) 2311 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction295 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction295 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2311 /* 3: ReduceAction295 < ReduceAction295: superclass typecheck marker */},
+val_t NEW_State_parser___State___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 15;
+  fra.me.meth = LOCATE_NEW_State_parser___State___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  REGB0 = p0;
+  fra.me.REG[0] = p1;
+  /* ./parser//parser.nit:15 */
+  fra.me.REG[1] = NEW_State();
+  INIT_ATTRIBUTES__State(fra.me.REG[1]);
+  parser___State___init(fra.me.REG[1], REGB0, fra.me.REG[0], init_table);
+  CHECKNEW_State(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_Parser[58] = {
+  {(bigint) 1867 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Parser < Object: superclass typecheck marker */},
+  {(bigint) 23 /* 3: Parser < TablesCapable: superclass typecheck marker */},
+  {(bigint) 1867 /* 4: Parser < Parser: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68391,14 +73873,9 @@ const classtable_elt_t VFT_ReduceAction295[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction295 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: Parser < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68406,7 +73883,6 @@ const classtable_elt_t VFT_ReduceAction295[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68414,41 +73890,118 @@ const classtable_elt_t VFT_ReduceAction295[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction295 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction295___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction295 < ReduceAction295: superclass init_table position */},
-  {(bigint) parser___ReduceAction295___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: Parser < TablesCapable: superclass init_table position */},
+  {(bigint) tables___TablesCapable___lexer_goto},
+  {(bigint) tables___TablesCapable___lexer_accept},
+  {(bigint) tables___TablesCapable___parser_goto},
+  {(bigint) tables___TablesCapable___parser_action},
+  {(bigint) 2 /* 50: Parser < Parser: superclass init_table position */},
+  {(bigint) parser___Parser___init},
+  {(bigint) parser___Parser___go_to},
+  {(bigint) parser___Parser___push},
+  {(bigint) parser___Parser___state},
+  {(bigint) parser___Parser___pop},
+  {(bigint) parser___Parser___parse},
+  {(bigint) parser___Parser___build_reduce_table},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction295(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute Parser::_lexer */
+/* 3: Attribute Parser::_stack */
+/* 4: Attribute Parser::_stack_pos */
+/* 5: Attribute Parser::_reduce_table */
+void INIT_ATTRIBUTES__Parser(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Parser;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Parser(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction295;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction295(val_t self, char *from) {
-}
-val_t NEW_ReduceAction295_parser___ReduceAction295___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction295();
-  parser___ReduceAction295___init(self, init_table);
-  CHECKNEW_ReduceAction295(self, "parser::ReduceAction295::init for ReduceAction295");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction296[48] = {
-  {(bigint) 2307 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction296 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction296 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2307 /* 3: ReduceAction296 < ReduceAction296: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_Parser;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Parser(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Parser;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___Parser____lexer(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_lexer", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___Parser____stack_pos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___Parser____reduce_table(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_reduce_table", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Parser_parser___Parser___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 33;
+  fra.me.meth = LOCATE_NEW_Parser_parser___Parser___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser.nit:33 */
+  fra.me.REG[1] = NEW_Parser();
+  INIT_ATTRIBUTES__Parser(fra.me.REG[1]);
+  parser___Parser___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_Parser(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ComputeProdLocationVisitor[52] = {
+  {(bigint) 2095 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ComputeProdLocationVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: ComputeProdLocationVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 2095 /* 4: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68461,14 +74014,9 @@ const classtable_elt_t VFT_ReduceAction296[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction296 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ComputeProdLocationVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68476,7 +74024,6 @@ const classtable_elt_t VFT_ReduceAction296[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68484,41 +74031,124 @@ const classtable_elt_t VFT_ReduceAction296[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction296 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction296___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction296 < ReduceAction296: superclass init_table position */},
-  {(bigint) parser___ReduceAction296___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction296(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ComputeProdLocationVisitor < Visitor: superclass init_table position */},
+  {(bigint) parser___ComputeProdLocationVisitor___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
+  {(bigint) parser_prod___Visitor___init},
+  {(bigint) 2 /* 50: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass init_table position */},
+  {(bigint) parser___ComputeProdLocationVisitor___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ComputeProdLocationVisitor::_current_node */
+/* 3: Attribute ComputeProdLocationVisitor::_need_first_prods */
+/* 4: Attribute ComputeProdLocationVisitor::_need_after_epsilons */
+/* 5: Attribute ComputeProdLocationVisitor::_need_before_epsilons */
+/* 6: Attribute ComputeProdLocationVisitor::_last_location */
+void INIT_ATTRIBUTES__ComputeProdLocationVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ComputeProdLocationVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser.nit:865 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser.nit:868 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser.nit:871 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser.nit:873 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser___ComputeProdLocationVisitor____last_location(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ComputeProdLocationVisitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction296;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction296(val_t self, char *from) {
-}
-val_t NEW_ReduceAction296_parser___ReduceAction296___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction296();
-  parser___ReduceAction296___init(self, init_table);
-  CHECKNEW_ReduceAction296(self, "parser::ReduceAction296::init for ReduceAction296");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction297[48] = {
-  {(bigint) 2303 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction297 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction297 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2303 /* 3: ReduceAction297 < ReduceAction297: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_ComputeProdLocationVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ComputeProdLocationVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ComputeProdLocationVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 944;
+  fra.me.meth = LOCATE_NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser.nit:944 */
+  fra.me.REG[0] = NEW_ComputeProdLocationVisitor();
+  INIT_ATTRIBUTES__ComputeProdLocationVisitor(fra.me.REG[0]);
+  parser___ComputeProdLocationVisitor___init(fra.me.REG[0], init_table);
+  CHECKNEW_ComputeProdLocationVisitor(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction0[51] = {
+  {(bigint) 1835 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction0 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction0 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1835 /* 4: ReduceAction0 < ReduceAction0: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68531,14 +74161,9 @@ const classtable_elt_t VFT_ReduceAction297[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction297 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction0 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68546,7 +74171,6 @@ const classtable_elt_t VFT_ReduceAction297[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68554,41 +74178,93 @@ const classtable_elt_t VFT_ReduceAction297[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction297 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction297___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction0 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction0___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction297 < ReduceAction297: superclass init_table position */},
-  {(bigint) parser___ReduceAction297___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction297(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction297;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction297(val_t self, char *from) {
-}
-val_t NEW_ReduceAction297_parser___ReduceAction297___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction297();
-  parser___ReduceAction297___init(self, init_table);
-  CHECKNEW_ReduceAction297(self, "parser::ReduceAction297::init for ReduceAction297");
-  return self;
+  {(bigint) 2 /* 49: ReduceAction0 < ReduceAction0: superclass init_table position */},
+  {(bigint) parser___ReduceAction0___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction0::_goto */
+void INIT_ATTRIBUTES__ReduceAction0(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction0;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction298[48] = {
-  {(bigint) 2299 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction298 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction298 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2299 /* 3: ReduceAction298 < ReduceAction298: superclass typecheck marker */},
+val_t NEW_ReduceAction0(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction0;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction0(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction0;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction0____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction0_parser___ReduceAction0___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 974;
+  fra.me.meth = LOCATE_NEW_ReduceAction0_parser___ReduceAction0___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:974 */
+  fra.me.REG[0] = NEW_ReduceAction0();
+  INIT_ATTRIBUTES__ReduceAction0(fra.me.REG[0]);
+  parser___ReduceAction0___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction0(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction1[51] = {
+  {(bigint) 1831 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction1 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction1 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1831 /* 4: ReduceAction1 < ReduceAction1: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68601,14 +74277,9 @@ const classtable_elt_t VFT_ReduceAction298[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction298 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction1 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68616,7 +74287,6 @@ const classtable_elt_t VFT_ReduceAction298[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68624,41 +74294,93 @@ const classtable_elt_t VFT_ReduceAction298[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction298 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction298___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction1 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction1___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction298 < ReduceAction298: superclass init_table position */},
-  {(bigint) parser___ReduceAction298___init},
+  {(bigint) 2 /* 49: ReduceAction1 < ReduceAction1: superclass init_table position */},
+  {(bigint) parser___ReduceAction1___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction298(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction298;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction1::_goto */
+void INIT_ATTRIBUTES__ReduceAction1(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction1;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction298(val_t self, char *from) {
-}
-val_t NEW_ReduceAction298_parser___ReduceAction298___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction298();
-  parser___ReduceAction298___init(self, init_table);
-  CHECKNEW_ReduceAction298(self, "parser::ReduceAction298::init for ReduceAction298");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction299[48] = {
-  {(bigint) 2295 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction299 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction299 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2295 /* 3: ReduceAction299 < ReduceAction299: superclass typecheck marker */},
+val_t NEW_ReduceAction1(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction1;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction1(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction1;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction1____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction1_parser___ReduceAction1___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 995;
+  fra.me.meth = LOCATE_NEW_ReduceAction1_parser___ReduceAction1___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:995 */
+  fra.me.REG[0] = NEW_ReduceAction1();
+  INIT_ATTRIBUTES__ReduceAction1(fra.me.REG[0]);
+  parser___ReduceAction1___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction1(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction2[51] = {
+  {(bigint) 1387 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction2 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction2 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1387 /* 4: ReduceAction2 < ReduceAction2: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68671,14 +74393,9 @@ const classtable_elt_t VFT_ReduceAction299[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction299 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction2 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68686,7 +74403,6 @@ const classtable_elt_t VFT_ReduceAction299[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68694,41 +74410,93 @@ const classtable_elt_t VFT_ReduceAction299[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction299 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction299___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction2 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction2___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction299 < ReduceAction299: superclass init_table position */},
-  {(bigint) parser___ReduceAction299___init},
+  {(bigint) 2 /* 49: ReduceAction2 < ReduceAction2: superclass init_table position */},
+  {(bigint) parser___ReduceAction2___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction299(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction299;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction2::_goto */
+void INIT_ATTRIBUTES__ReduceAction2(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction2;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction299(val_t self, char *from) {
-}
-val_t NEW_ReduceAction299_parser___ReduceAction299___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction299();
-  parser___ReduceAction299___init(self, init_table);
-  CHECKNEW_ReduceAction299(self, "parser::ReduceAction299::init for ReduceAction299");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction300[48] = {
-  {(bigint) 2283 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction300 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction300 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2283 /* 3: ReduceAction300 < ReduceAction300: superclass typecheck marker */},
+val_t NEW_ReduceAction2(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction2;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction2(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction2;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction2____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction2_parser___ReduceAction2___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1017;
+  fra.me.meth = LOCATE_NEW_ReduceAction2_parser___ReduceAction2___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1017 */
+  fra.me.REG[0] = NEW_ReduceAction2();
+  INIT_ATTRIBUTES__ReduceAction2(fra.me.REG[0]);
+  parser___ReduceAction2___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction2(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction3[51] = {
+  {(bigint) 1007 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction3 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction3 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1007 /* 4: ReduceAction3 < ReduceAction3: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68741,14 +74509,9 @@ const classtable_elt_t VFT_ReduceAction300[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction300 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction3 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68756,7 +74519,6 @@ const classtable_elt_t VFT_ReduceAction300[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68764,41 +74526,93 @@ const classtable_elt_t VFT_ReduceAction300[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction300 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction300___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction3 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction3___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction300 < ReduceAction300: superclass init_table position */},
-  {(bigint) parser___ReduceAction300___init},
+  {(bigint) 2 /* 49: ReduceAction3 < ReduceAction3: superclass init_table position */},
+  {(bigint) parser___ReduceAction3___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction300(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction300;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction300(val_t self, char *from) {
-}
-val_t NEW_ReduceAction300_parser___ReduceAction300___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction300();
-  parser___ReduceAction300___init(self, init_table);
-  CHECKNEW_ReduceAction300(self, "parser::ReduceAction300::init for ReduceAction300");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction3::_goto */
+void INIT_ATTRIBUTES__ReduceAction3(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction3;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction301[48] = {
-  {(bigint) 2279 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction301 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction301 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2279 /* 3: ReduceAction301 < ReduceAction301: superclass typecheck marker */},
+val_t NEW_ReduceAction3(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction3;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction3(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction3;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction3____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction3_parser___ReduceAction3___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1042;
+  fra.me.meth = LOCATE_NEW_ReduceAction3_parser___ReduceAction3___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1042 */
+  fra.me.REG[0] = NEW_ReduceAction3();
+  INIT_ATTRIBUTES__ReduceAction3(fra.me.REG[0]);
+  parser___ReduceAction3___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction3(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction4[51] = {
+  {(bigint) 703 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction4 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction4 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 703 /* 4: ReduceAction4 < ReduceAction4: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68811,14 +74625,9 @@ const classtable_elt_t VFT_ReduceAction301[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction301 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction4 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68826,7 +74635,6 @@ const classtable_elt_t VFT_ReduceAction301[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68834,41 +74642,93 @@ const classtable_elt_t VFT_ReduceAction301[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction301 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction301___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction4 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction4___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction301 < ReduceAction301: superclass init_table position */},
-  {(bigint) parser___ReduceAction301___init},
+  {(bigint) 2 /* 49: ReduceAction4 < ReduceAction4: superclass init_table position */},
+  {(bigint) parser___ReduceAction4___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction301(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction301;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction301(val_t self, char *from) {
-}
-val_t NEW_ReduceAction301_parser___ReduceAction301___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction301();
-  parser___ReduceAction301___init(self, init_table);
-  CHECKNEW_ReduceAction301(self, "parser::ReduceAction301::init for ReduceAction301");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction4::_goto */
+void INIT_ATTRIBUTES__ReduceAction4(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction4;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction302[48] = {
-  {(bigint) 2275 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction302 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction302 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2275 /* 3: ReduceAction302 < ReduceAction302: superclass typecheck marker */},
+val_t NEW_ReduceAction4(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction4;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction4(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction4;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction4____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction4_parser___ReduceAction4___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1064;
+  fra.me.meth = LOCATE_NEW_ReduceAction4_parser___ReduceAction4___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1064 */
+  fra.me.REG[0] = NEW_ReduceAction4();
+  INIT_ATTRIBUTES__ReduceAction4(fra.me.REG[0]);
+  parser___ReduceAction4___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction4(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction5[51] = {
+  {(bigint) 659 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction5 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction5 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 659 /* 4: ReduceAction5 < ReduceAction5: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68881,14 +74741,9 @@ const classtable_elt_t VFT_ReduceAction302[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction302 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction5 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68896,7 +74751,6 @@ const classtable_elt_t VFT_ReduceAction302[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68904,41 +74758,93 @@ const classtable_elt_t VFT_ReduceAction302[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction302 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction302___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction5 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction5___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction302 < ReduceAction302: superclass init_table position */},
-  {(bigint) parser___ReduceAction302___init},
+  {(bigint) 2 /* 49: ReduceAction5 < ReduceAction5: superclass init_table position */},
+  {(bigint) parser___ReduceAction5___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction302(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction302;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction302(val_t self, char *from) {
-}
-val_t NEW_ReduceAction302_parser___ReduceAction302___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction302();
-  parser___ReduceAction302___init(self, init_table);
-  CHECKNEW_ReduceAction302(self, "parser::ReduceAction302::init for ReduceAction302");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction5::_goto */
+void INIT_ATTRIBUTES__ReduceAction5(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction5;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction303[48] = {
-  {(bigint) 2271 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction303 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction303 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2271 /* 3: ReduceAction303 < ReduceAction303: superclass typecheck marker */},
+val_t NEW_ReduceAction5(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction5;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction5(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction5;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction5____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction5_parser___ReduceAction5___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1089;
+  fra.me.meth = LOCATE_NEW_ReduceAction5_parser___ReduceAction5___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1089 */
+  fra.me.REG[0] = NEW_ReduceAction5();
+  INIT_ATTRIBUTES__ReduceAction5(fra.me.REG[0]);
+  parser___ReduceAction5___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction5(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction6[51] = {
+  {(bigint) 615 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction6 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction6 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 615 /* 4: ReduceAction6 < ReduceAction6: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -68951,14 +74857,9 @@ const classtable_elt_t VFT_ReduceAction303[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction303 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction6 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -68966,7 +74867,6 @@ const classtable_elt_t VFT_ReduceAction303[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -68974,41 +74874,93 @@ const classtable_elt_t VFT_ReduceAction303[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction303 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction303___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction6 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction6___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction303 < ReduceAction303: superclass init_table position */},
-  {(bigint) parser___ReduceAction303___init},
+  {(bigint) 2 /* 49: ReduceAction6 < ReduceAction6: superclass init_table position */},
+  {(bigint) parser___ReduceAction6___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction303(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction303;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction303(val_t self, char *from) {
-}
-val_t NEW_ReduceAction303_parser___ReduceAction303___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction303();
-  parser___ReduceAction303___init(self, init_table);
-  CHECKNEW_ReduceAction303(self, "parser::ReduceAction303::init for ReduceAction303");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction6::_goto */
+void INIT_ATTRIBUTES__ReduceAction6(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction6;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction304[48] = {
-  {(bigint) 2267 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction304 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction304 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2267 /* 3: ReduceAction304 < ReduceAction304: superclass typecheck marker */},
+val_t NEW_ReduceAction6(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction6;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction6(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction6;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction6____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction6_parser___ReduceAction6___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1115;
+  fra.me.meth = LOCATE_NEW_ReduceAction6_parser___ReduceAction6___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1115 */
+  fra.me.REG[0] = NEW_ReduceAction6();
+  INIT_ATTRIBUTES__ReduceAction6(fra.me.REG[0]);
+  parser___ReduceAction6___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction6(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction7[51] = {
+  {(bigint) 459 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction7 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction7 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 459 /* 4: ReduceAction7 < ReduceAction7: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69021,14 +74973,9 @@ const classtable_elt_t VFT_ReduceAction304[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction304 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction7 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69036,7 +74983,6 @@ const classtable_elt_t VFT_ReduceAction304[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69044,41 +74990,93 @@ const classtable_elt_t VFT_ReduceAction304[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction304 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction304___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction7 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction7___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction304 < ReduceAction304: superclass init_table position */},
-  {(bigint) parser___ReduceAction304___init},
+  {(bigint) 2 /* 49: ReduceAction7 < ReduceAction7: superclass init_table position */},
+  {(bigint) parser___ReduceAction7___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction304(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction304;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction304(val_t self, char *from) {
-}
-val_t NEW_ReduceAction304_parser___ReduceAction304___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction304();
-  parser___ReduceAction304___init(self, init_table);
-  CHECKNEW_ReduceAction304(self, "parser::ReduceAction304::init for ReduceAction304");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction7::_goto */
+void INIT_ATTRIBUTES__ReduceAction7(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction7;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction305[48] = {
-  {(bigint) 2263 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction305 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction305 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2263 /* 3: ReduceAction305 < ReduceAction305: superclass typecheck marker */},
+val_t NEW_ReduceAction7(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction7;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction7(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction7;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction7____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction7_parser___ReduceAction7___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1144;
+  fra.me.meth = LOCATE_NEW_ReduceAction7_parser___ReduceAction7___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1144 */
+  fra.me.REG[0] = NEW_ReduceAction7();
+  INIT_ATTRIBUTES__ReduceAction7(fra.me.REG[0]);
+  parser___ReduceAction7___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction7(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction8[51] = {
+  {(bigint) 415 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction8 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction8 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 415 /* 4: ReduceAction8 < ReduceAction8: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69091,14 +75089,9 @@ const classtable_elt_t VFT_ReduceAction305[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction305 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction8 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69106,7 +75099,6 @@ const classtable_elt_t VFT_ReduceAction305[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69114,41 +75106,93 @@ const classtable_elt_t VFT_ReduceAction305[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction305 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction305___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction8 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction8___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction305 < ReduceAction305: superclass init_table position */},
-  {(bigint) parser___ReduceAction305___init},
+  {(bigint) 2 /* 49: ReduceAction8 < ReduceAction8: superclass init_table position */},
+  {(bigint) parser___ReduceAction8___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction305(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction305;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction305(val_t self, char *from) {
-}
-val_t NEW_ReduceAction305_parser___ReduceAction305___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction305();
-  parser___ReduceAction305___init(self, init_table);
-  CHECKNEW_ReduceAction305(self, "parser::ReduceAction305::init for ReduceAction305");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction8::_goto */
+void INIT_ATTRIBUTES__ReduceAction8(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction8;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction306[48] = {
-  {(bigint) 2259 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction306 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction306 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2259 /* 3: ReduceAction306 < ReduceAction306: superclass typecheck marker */},
+val_t NEW_ReduceAction8(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction8;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction8(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction8;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction8____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction8_parser___ReduceAction8___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1173;
+  fra.me.meth = LOCATE_NEW_ReduceAction8_parser___ReduceAction8___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1173 */
+  fra.me.REG[0] = NEW_ReduceAction8();
+  INIT_ATTRIBUTES__ReduceAction8(fra.me.REG[0]);
+  parser___ReduceAction8___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction8(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction9[51] = {
+  {(bigint) 371 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction9 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction9 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 371 /* 4: ReduceAction9 < ReduceAction9: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69161,14 +75205,9 @@ const classtable_elt_t VFT_ReduceAction306[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction306 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction9 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69176,7 +75215,6 @@ const classtable_elt_t VFT_ReduceAction306[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69184,41 +75222,93 @@ const classtable_elt_t VFT_ReduceAction306[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction306 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction306___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction9 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction9___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction306 < ReduceAction306: superclass init_table position */},
-  {(bigint) parser___ReduceAction306___init},
+  {(bigint) 2 /* 49: ReduceAction9 < ReduceAction9: superclass init_table position */},
+  {(bigint) parser___ReduceAction9___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction306(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction306;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction306(val_t self, char *from) {
-}
-val_t NEW_ReduceAction306_parser___ReduceAction306___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction306();
-  parser___ReduceAction306___init(self, init_table);
-  CHECKNEW_ReduceAction306(self, "parser::ReduceAction306::init for ReduceAction306");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction9::_goto */
+void INIT_ATTRIBUTES__ReduceAction9(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction9;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction307[48] = {
-  {(bigint) 2255 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction307 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction307 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2255 /* 3: ReduceAction307 < ReduceAction307: superclass typecheck marker */},
+val_t NEW_ReduceAction9(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction9;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction9(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction9;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction9____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction9_parser___ReduceAction9___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1205;
+  fra.me.meth = LOCATE_NEW_ReduceAction9_parser___ReduceAction9___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1205 */
+  fra.me.REG[0] = NEW_ReduceAction9();
+  INIT_ATTRIBUTES__ReduceAction9(fra.me.REG[0]);
+  parser___ReduceAction9___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction9(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction10[51] = {
+  {(bigint) 1827 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction10 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction10 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1827 /* 4: ReduceAction10 < ReduceAction10: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69231,14 +75321,9 @@ const classtable_elt_t VFT_ReduceAction307[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction307 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction10 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69246,7 +75331,6 @@ const classtable_elt_t VFT_ReduceAction307[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69254,41 +75338,93 @@ const classtable_elt_t VFT_ReduceAction307[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction307 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction307___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction10 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction10___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction307 < ReduceAction307: superclass init_table position */},
-  {(bigint) parser___ReduceAction307___init},
+  {(bigint) 2 /* 49: ReduceAction10 < ReduceAction10: superclass init_table position */},
+  {(bigint) parser___ReduceAction10___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction307(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction307;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction307(val_t self, char *from) {
-}
-val_t NEW_ReduceAction307_parser___ReduceAction307___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction307();
-  parser___ReduceAction307___init(self, init_table);
-  CHECKNEW_ReduceAction307(self, "parser::ReduceAction307::init for ReduceAction307");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction10::_goto */
+void INIT_ATTRIBUTES__ReduceAction10(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction10;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction308[48] = {
-  {(bigint) 2251 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction308 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction308 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2251 /* 3: ReduceAction308 < ReduceAction308: superclass typecheck marker */},
+val_t NEW_ReduceAction10(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction10;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction10(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction10;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction10____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction10_parser___ReduceAction10___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1238;
+  fra.me.meth = LOCATE_NEW_ReduceAction10_parser___ReduceAction10___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1238 */
+  fra.me.REG[0] = NEW_ReduceAction10();
+  INIT_ATTRIBUTES__ReduceAction10(fra.me.REG[0]);
+  parser___ReduceAction10___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction10(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction11[51] = {
+  {(bigint) 1783 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction11 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction11 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1783 /* 4: ReduceAction11 < ReduceAction11: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69301,14 +75437,9 @@ const classtable_elt_t VFT_ReduceAction308[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction308 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction11 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69316,7 +75447,6 @@ const classtable_elt_t VFT_ReduceAction308[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69324,41 +75454,93 @@ const classtable_elt_t VFT_ReduceAction308[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction308 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction308___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction11 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction11___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction308 < ReduceAction308: superclass init_table position */},
-  {(bigint) parser___ReduceAction308___init},
+  {(bigint) 2 /* 49: ReduceAction11 < ReduceAction11: superclass init_table position */},
+  {(bigint) parser___ReduceAction11___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction308(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction308;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction308(val_t self, char *from) {
-}
-val_t NEW_ReduceAction308_parser___ReduceAction308___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction308();
-  parser___ReduceAction308___init(self, init_table);
-  CHECKNEW_ReduceAction308(self, "parser::ReduceAction308::init for ReduceAction308");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction11::_goto */
+void INIT_ATTRIBUTES__ReduceAction11(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction11;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction309[48] = {
-  {(bigint) 2247 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction309 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction309 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2247 /* 3: ReduceAction309 < ReduceAction309: superclass typecheck marker */},
+val_t NEW_ReduceAction11(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction11;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction11(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction11;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction11____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction11_parser___ReduceAction11___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1274;
+  fra.me.meth = LOCATE_NEW_ReduceAction11_parser___ReduceAction11___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1274 */
+  fra.me.REG[0] = NEW_ReduceAction11();
+  INIT_ATTRIBUTES__ReduceAction11(fra.me.REG[0]);
+  parser___ReduceAction11___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction11(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction12[51] = {
+  {(bigint) 1739 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction12 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction12 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1739 /* 4: ReduceAction12 < ReduceAction12: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69371,14 +75553,9 @@ const classtable_elt_t VFT_ReduceAction309[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction309 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction12 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69386,7 +75563,6 @@ const classtable_elt_t VFT_ReduceAction309[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69394,41 +75570,93 @@ const classtable_elt_t VFT_ReduceAction309[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction309 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction309___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction12 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction12___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction309 < ReduceAction309: superclass init_table position */},
-  {(bigint) parser___ReduceAction309___init},
+  {(bigint) 2 /* 49: ReduceAction12 < ReduceAction12: superclass init_table position */},
+  {(bigint) parser___ReduceAction12___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction309(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction309;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction309(val_t self, char *from) {
-}
-val_t NEW_ReduceAction309_parser___ReduceAction309___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction309();
-  parser___ReduceAction309___init(self, init_table);
-  CHECKNEW_ReduceAction309(self, "parser::ReduceAction309::init for ReduceAction309");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction12::_goto */
+void INIT_ATTRIBUTES__ReduceAction12(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction12;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction310[48] = {
-  {(bigint) 2239 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction310 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction310 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2239 /* 3: ReduceAction310 < ReduceAction310: superclass typecheck marker */},
+val_t NEW_ReduceAction12(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction12;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction12(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction12;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction12____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction12_parser___ReduceAction12___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1307;
+  fra.me.meth = LOCATE_NEW_ReduceAction12_parser___ReduceAction12___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1307 */
+  fra.me.REG[0] = NEW_ReduceAction12();
+  INIT_ATTRIBUTES__ReduceAction12(fra.me.REG[0]);
+  parser___ReduceAction12___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction12(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction13[51] = {
+  {(bigint) 1695 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction13 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction13 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1695 /* 4: ReduceAction13 < ReduceAction13: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69441,14 +75669,9 @@ const classtable_elt_t VFT_ReduceAction310[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction310 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction13 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69456,7 +75679,6 @@ const classtable_elt_t VFT_ReduceAction310[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69464,41 +75686,93 @@ const classtable_elt_t VFT_ReduceAction310[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction310 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction310___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction13 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction13___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction310 < ReduceAction310: superclass init_table position */},
-  {(bigint) parser___ReduceAction310___init},
+  {(bigint) 2 /* 49: ReduceAction13 < ReduceAction13: superclass init_table position */},
+  {(bigint) parser___ReduceAction13___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction310(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction310;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction310(val_t self, char *from) {
-}
-val_t NEW_ReduceAction310_parser___ReduceAction310___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction310();
-  parser___ReduceAction310___init(self, init_table);
-  CHECKNEW_ReduceAction310(self, "parser::ReduceAction310::init for ReduceAction310");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction13::_goto */
+void INIT_ATTRIBUTES__ReduceAction13(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction13;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction311[48] = {
-  {(bigint) 2235 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction311 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction311 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2235 /* 3: ReduceAction311 < ReduceAction311: superclass typecheck marker */},
+val_t NEW_ReduceAction13(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction13;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction13(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction13;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction13____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction13_parser___ReduceAction13___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1343;
+  fra.me.meth = LOCATE_NEW_ReduceAction13_parser___ReduceAction13___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1343 */
+  fra.me.REG[0] = NEW_ReduceAction13();
+  INIT_ATTRIBUTES__ReduceAction13(fra.me.REG[0]);
+  parser___ReduceAction13___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction13(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction14[51] = {
+  {(bigint) 1651 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction14 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction14 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1651 /* 4: ReduceAction14 < ReduceAction14: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69511,14 +75785,9 @@ const classtable_elt_t VFT_ReduceAction311[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction311 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction14 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69526,7 +75795,6 @@ const classtable_elt_t VFT_ReduceAction311[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69534,41 +75802,93 @@ const classtable_elt_t VFT_ReduceAction311[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction311 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction311___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction14 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction14___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction311 < ReduceAction311: superclass init_table position */},
-  {(bigint) parser___ReduceAction311___init},
+  {(bigint) 2 /* 49: ReduceAction14 < ReduceAction14: superclass init_table position */},
+  {(bigint) parser___ReduceAction14___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction311(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction311;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction311(val_t self, char *from) {
-}
-val_t NEW_ReduceAction311_parser___ReduceAction311___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction311();
-  parser___ReduceAction311___init(self, init_table);
-  CHECKNEW_ReduceAction311(self, "parser::ReduceAction311::init for ReduceAction311");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction14::_goto */
+void INIT_ATTRIBUTES__ReduceAction14(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction14;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction312[48] = {
-  {(bigint) 2231 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction312 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction312 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2231 /* 3: ReduceAction312 < ReduceAction312: superclass typecheck marker */},
+val_t NEW_ReduceAction14(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction14;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction14(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction14;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction14____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction14_parser___ReduceAction14___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1380;
+  fra.me.meth = LOCATE_NEW_ReduceAction14_parser___ReduceAction14___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1380 */
+  fra.me.REG[0] = NEW_ReduceAction14();
+  INIT_ATTRIBUTES__ReduceAction14(fra.me.REG[0]);
+  parser___ReduceAction14___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction14(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction15[51] = {
+  {(bigint) 1607 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction15 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction15 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1607 /* 4: ReduceAction15 < ReduceAction15: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69581,14 +75901,9 @@ const classtable_elt_t VFT_ReduceAction312[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction312 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction15 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69596,7 +75911,6 @@ const classtable_elt_t VFT_ReduceAction312[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69604,41 +75918,93 @@ const classtable_elt_t VFT_ReduceAction312[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction312 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction312___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction15 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction15___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction312 < ReduceAction312: superclass init_table position */},
-  {(bigint) parser___ReduceAction312___init},
+  {(bigint) 2 /* 49: ReduceAction15 < ReduceAction15: superclass init_table position */},
+  {(bigint) parser___ReduceAction15___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction312(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction312;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction312(val_t self, char *from) {
-}
-val_t NEW_ReduceAction312_parser___ReduceAction312___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction312();
-  parser___ReduceAction312___init(self, init_table);
-  CHECKNEW_ReduceAction312(self, "parser::ReduceAction312::init for ReduceAction312");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction15::_goto */
+void INIT_ATTRIBUTES__ReduceAction15(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction15;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction313[48] = {
-  {(bigint) 2227 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction313 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction313 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2227 /* 3: ReduceAction313 < ReduceAction313: superclass typecheck marker */},
+val_t NEW_ReduceAction15(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction15;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction15(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction15;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction15____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction15_parser___ReduceAction15___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1420;
+  fra.me.meth = LOCATE_NEW_ReduceAction15_parser___ReduceAction15___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1420 */
+  fra.me.REG[0] = NEW_ReduceAction15();
+  INIT_ATTRIBUTES__ReduceAction15(fra.me.REG[0]);
+  parser___ReduceAction15___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction15(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction16[51] = {
+  {(bigint) 1563 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction16 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction16 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1563 /* 4: ReduceAction16 < ReduceAction16: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69651,14 +76017,9 @@ const classtable_elt_t VFT_ReduceAction313[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction313 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction16 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69666,7 +76027,6 @@ const classtable_elt_t VFT_ReduceAction313[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69674,41 +76034,93 @@ const classtable_elt_t VFT_ReduceAction313[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction313 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction313___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction16 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction16___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction313 < ReduceAction313: superclass init_table position */},
-  {(bigint) parser___ReduceAction313___init},
+  {(bigint) 2 /* 49: ReduceAction16 < ReduceAction16: superclass init_table position */},
+  {(bigint) parser___ReduceAction16___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction313(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction313;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction313(val_t self, char *from) {
-}
-val_t NEW_ReduceAction313_parser___ReduceAction313___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction313();
-  parser___ReduceAction313___init(self, init_table);
-  CHECKNEW_ReduceAction313(self, "parser::ReduceAction313::init for ReduceAction313");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction16::_goto */
+void INIT_ATTRIBUTES__ReduceAction16(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction16;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction314[48] = {
-  {(bigint) 2223 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction314 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction314 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2223 /* 3: ReduceAction314 < ReduceAction314: superclass typecheck marker */},
+val_t NEW_ReduceAction16(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction16;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction16(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction16;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction16____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction16_parser___ReduceAction16___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1444;
+  fra.me.meth = LOCATE_NEW_ReduceAction16_parser___ReduceAction16___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1444 */
+  fra.me.REG[0] = NEW_ReduceAction16();
+  INIT_ATTRIBUTES__ReduceAction16(fra.me.REG[0]);
+  parser___ReduceAction16___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction16(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction17[51] = {
+  {(bigint) 1519 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction17 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction17 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1519 /* 4: ReduceAction17 < ReduceAction17: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69721,14 +76133,9 @@ const classtable_elt_t VFT_ReduceAction314[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction314 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction17 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69736,7 +76143,6 @@ const classtable_elt_t VFT_ReduceAction314[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69744,41 +76150,93 @@ const classtable_elt_t VFT_ReduceAction314[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction314 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction314___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction17 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction17___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction314 < ReduceAction314: superclass init_table position */},
-  {(bigint) parser___ReduceAction314___init},
+  {(bigint) 2 /* 49: ReduceAction17 < ReduceAction17: superclass init_table position */},
+  {(bigint) parser___ReduceAction17___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction314(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction314;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction314(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction17::_goto */
+void INIT_ATTRIBUTES__ReduceAction17(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction17;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction314_parser___ReduceAction314___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction314();
-  parser___ReduceAction314___init(self, init_table);
-  CHECKNEW_ReduceAction314(self, "parser::ReduceAction314::init for ReduceAction314");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction315[48] = {
-  {(bigint) 2219 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction315 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction315 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2219 /* 3: ReduceAction315 < ReduceAction315: superclass typecheck marker */},
+val_t NEW_ReduceAction17(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction17;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction17(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction17;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction17____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction17_parser___ReduceAction17___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1471;
+  fra.me.meth = LOCATE_NEW_ReduceAction17_parser___ReduceAction17___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1471 */
+  fra.me.REG[0] = NEW_ReduceAction17();
+  INIT_ATTRIBUTES__ReduceAction17(fra.me.REG[0]);
+  parser___ReduceAction17___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction17(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction18[51] = {
+  {(bigint) 1475 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction18 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction18 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1475 /* 4: ReduceAction18 < ReduceAction18: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69791,14 +76249,9 @@ const classtable_elt_t VFT_ReduceAction315[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction315 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction18 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69806,7 +76259,6 @@ const classtable_elt_t VFT_ReduceAction315[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69814,41 +76266,93 @@ const classtable_elt_t VFT_ReduceAction315[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction315 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction315___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction18 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction18___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction315 < ReduceAction315: superclass init_table position */},
-  {(bigint) parser___ReduceAction315___init},
+  {(bigint) 2 /* 49: ReduceAction18 < ReduceAction18: superclass init_table position */},
+  {(bigint) parser___ReduceAction18___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction315(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction315;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction315(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction18::_goto */
+void INIT_ATTRIBUTES__ReduceAction18(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction18;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction315_parser___ReduceAction315___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction315();
-  parser___ReduceAction315___init(self, init_table);
-  CHECKNEW_ReduceAction315(self, "parser::ReduceAction315::init for ReduceAction315");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction316[48] = {
-  {(bigint) 2215 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction316 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction316 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2215 /* 3: ReduceAction316 < ReduceAction316: superclass typecheck marker */},
+val_t NEW_ReduceAction18(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction18;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction18(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction18;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction18____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction18_parser___ReduceAction18___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1499;
+  fra.me.meth = LOCATE_NEW_ReduceAction18_parser___ReduceAction18___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1499 */
+  fra.me.REG[0] = NEW_ReduceAction18();
+  INIT_ATTRIBUTES__ReduceAction18(fra.me.REG[0]);
+  parser___ReduceAction18___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction18(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction19[51] = {
+  {(bigint) 1431 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction19 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction19 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1431 /* 4: ReduceAction19 < ReduceAction19: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69861,14 +76365,9 @@ const classtable_elt_t VFT_ReduceAction316[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction316 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction19 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69876,7 +76375,6 @@ const classtable_elt_t VFT_ReduceAction316[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69884,41 +76382,93 @@ const classtable_elt_t VFT_ReduceAction316[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction316 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction316___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction19 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction19___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction316 < ReduceAction316: superclass init_table position */},
-  {(bigint) parser___ReduceAction316___init},
+  {(bigint) 2 /* 49: ReduceAction19 < ReduceAction19: superclass init_table position */},
+  {(bigint) parser___ReduceAction19___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction316(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction316;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction316(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction19::_goto */
+void INIT_ATTRIBUTES__ReduceAction19(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction19;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction316_parser___ReduceAction316___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction316();
-  parser___ReduceAction316___init(self, init_table);
-  CHECKNEW_ReduceAction316(self, "parser::ReduceAction316::init for ReduceAction316");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction317[48] = {
-  {(bigint) 2211 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction317 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction317 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2211 /* 3: ReduceAction317 < ReduceAction317: superclass typecheck marker */},
+val_t NEW_ReduceAction19(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction19;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction19(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction19;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction19____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction19_parser___ReduceAction19___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1530;
+  fra.me.meth = LOCATE_NEW_ReduceAction19_parser___ReduceAction19___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1530 */
+  fra.me.REG[0] = NEW_ReduceAction19();
+  INIT_ATTRIBUTES__ReduceAction19(fra.me.REG[0]);
+  parser___ReduceAction19___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction19(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction20[51] = {
+  {(bigint) 1383 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction20 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction20 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1383 /* 4: ReduceAction20 < ReduceAction20: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -69931,14 +76481,9 @@ const classtable_elt_t VFT_ReduceAction317[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction317 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction20 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -69946,7 +76491,6 @@ const classtable_elt_t VFT_ReduceAction317[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -69954,41 +76498,93 @@ const classtable_elt_t VFT_ReduceAction317[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction317 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction317___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction20 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction20___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction317 < ReduceAction317: superclass init_table position */},
-  {(bigint) parser___ReduceAction317___init},
+  {(bigint) 2 /* 49: ReduceAction20 < ReduceAction20: superclass init_table position */},
+  {(bigint) parser___ReduceAction20___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction317(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction317;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction20::_goto */
+void INIT_ATTRIBUTES__ReduceAction20(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction20;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction317(val_t self, char *from) {
-}
-val_t NEW_ReduceAction317_parser___ReduceAction317___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction317();
-  parser___ReduceAction317___init(self, init_table);
-  CHECKNEW_ReduceAction317(self, "parser::ReduceAction317::init for ReduceAction317");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction318[48] = {
-  {(bigint) 2207 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction318 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction318 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2207 /* 3: ReduceAction318 < ReduceAction318: superclass typecheck marker */},
+val_t NEW_ReduceAction20(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction20;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction20(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction20;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction20____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction20_parser___ReduceAction20___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1558;
+  fra.me.meth = LOCATE_NEW_ReduceAction20_parser___ReduceAction20___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1558 */
+  fra.me.REG[0] = NEW_ReduceAction20();
+  INIT_ATTRIBUTES__ReduceAction20(fra.me.REG[0]);
+  parser___ReduceAction20___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction20(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction21[51] = {
+  {(bigint) 1343 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction21 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction21 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1343 /* 4: ReduceAction21 < ReduceAction21: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70001,14 +76597,9 @@ const classtable_elt_t VFT_ReduceAction318[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction318 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction21 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70016,7 +76607,6 @@ const classtable_elt_t VFT_ReduceAction318[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70024,41 +76614,93 @@ const classtable_elt_t VFT_ReduceAction318[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction318 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction318___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction21 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction21___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction318 < ReduceAction318: superclass init_table position */},
-  {(bigint) parser___ReduceAction318___init},
+  {(bigint) 2 /* 49: ReduceAction21 < ReduceAction21: superclass init_table position */},
+  {(bigint) parser___ReduceAction21___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction318(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction318;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction21::_goto */
+void INIT_ATTRIBUTES__ReduceAction21(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction21;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction318(val_t self, char *from) {
-}
-val_t NEW_ReduceAction318_parser___ReduceAction318___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction318();
-  parser___ReduceAction318___init(self, init_table);
-  CHECKNEW_ReduceAction318(self, "parser::ReduceAction318::init for ReduceAction318");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction319[48] = {
-  {(bigint) 2203 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction319 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction319 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2203 /* 3: ReduceAction319 < ReduceAction319: superclass typecheck marker */},
+val_t NEW_ReduceAction21(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction21;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction21(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction21;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction21____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction21_parser___ReduceAction21___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1589;
+  fra.me.meth = LOCATE_NEW_ReduceAction21_parser___ReduceAction21___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1589 */
+  fra.me.REG[0] = NEW_ReduceAction21();
+  INIT_ATTRIBUTES__ReduceAction21(fra.me.REG[0]);
+  parser___ReduceAction21___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction21(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction22[51] = {
+  {(bigint) 1307 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction22 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction22 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1307 /* 4: ReduceAction22 < ReduceAction22: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70071,14 +76713,9 @@ const classtable_elt_t VFT_ReduceAction319[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction319 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction22 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70086,7 +76723,6 @@ const classtable_elt_t VFT_ReduceAction319[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70094,41 +76730,93 @@ const classtable_elt_t VFT_ReduceAction319[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction319 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction319___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction22 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction22___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction319 < ReduceAction319: superclass init_table position */},
-  {(bigint) parser___ReduceAction319___init},
+  {(bigint) 2 /* 49: ReduceAction22 < ReduceAction22: superclass init_table position */},
+  {(bigint) parser___ReduceAction22___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction319(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction319;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction22::_goto */
+void INIT_ATTRIBUTES__ReduceAction22(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction22;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction319(val_t self, char *from) {
-}
-val_t NEW_ReduceAction319_parser___ReduceAction319___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction319();
-  parser___ReduceAction319___init(self, init_table);
-  CHECKNEW_ReduceAction319(self, "parser::ReduceAction319::init for ReduceAction319");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction320[48] = {
-  {(bigint) 2195 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction320 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction320 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2195 /* 3: ReduceAction320 < ReduceAction320: superclass typecheck marker */},
+val_t NEW_ReduceAction22(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction22;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction22(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction22;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction22____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction22_parser___ReduceAction22___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1621;
+  fra.me.meth = LOCATE_NEW_ReduceAction22_parser___ReduceAction22___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1621 */
+  fra.me.REG[0] = NEW_ReduceAction22();
+  INIT_ATTRIBUTES__ReduceAction22(fra.me.REG[0]);
+  parser___ReduceAction22___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction22(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction23[51] = {
+  {(bigint) 1287 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction23 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction23 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1287 /* 4: ReduceAction23 < ReduceAction23: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70141,14 +76829,9 @@ const classtable_elt_t VFT_ReduceAction320[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction320 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction23 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70156,7 +76839,6 @@ const classtable_elt_t VFT_ReduceAction320[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70164,41 +76846,93 @@ const classtable_elt_t VFT_ReduceAction320[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction320 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction320___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction23 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction23___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction320 < ReduceAction320: superclass init_table position */},
-  {(bigint) parser___ReduceAction320___init},
+  {(bigint) 2 /* 49: ReduceAction23 < ReduceAction23: superclass init_table position */},
+  {(bigint) parser___ReduceAction23___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction320(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction320;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction23::_goto */
+void INIT_ATTRIBUTES__ReduceAction23(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction23;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction320(val_t self, char *from) {
-}
-val_t NEW_ReduceAction320_parser___ReduceAction320___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction320();
-  parser___ReduceAction320___init(self, init_table);
-  CHECKNEW_ReduceAction320(self, "parser::ReduceAction320::init for ReduceAction320");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction321[48] = {
-  {(bigint) 2191 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction321 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction321 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2191 /* 3: ReduceAction321 < ReduceAction321: superclass typecheck marker */},
+val_t NEW_ReduceAction23(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction23;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction23(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction23;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction23____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction23_parser___ReduceAction23___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1656;
+  fra.me.meth = LOCATE_NEW_ReduceAction23_parser___ReduceAction23___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1656 */
+  fra.me.REG[0] = NEW_ReduceAction23();
+  INIT_ATTRIBUTES__ReduceAction23(fra.me.REG[0]);
+  parser___ReduceAction23___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction23(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction24[51] = {
+  {(bigint) 1243 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction24 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction24 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1243 /* 4: ReduceAction24 < ReduceAction24: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70211,14 +76945,9 @@ const classtable_elt_t VFT_ReduceAction321[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction321 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction24 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70226,7 +76955,6 @@ const classtable_elt_t VFT_ReduceAction321[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70234,41 +76962,93 @@ const classtable_elt_t VFT_ReduceAction321[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction321 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction321___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction24 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction24___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction321 < ReduceAction321: superclass init_table position */},
-  {(bigint) parser___ReduceAction321___init},
+  {(bigint) 2 /* 49: ReduceAction24 < ReduceAction24: superclass init_table position */},
+  {(bigint) parser___ReduceAction24___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction321(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction321;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction321(val_t self, char *from) {
-}
-val_t NEW_ReduceAction321_parser___ReduceAction321___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction321();
-  parser___ReduceAction321___init(self, init_table);
-  CHECKNEW_ReduceAction321(self, "parser::ReduceAction321::init for ReduceAction321");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction24::_goto */
+void INIT_ATTRIBUTES__ReduceAction24(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction24;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction322[48] = {
-  {(bigint) 2187 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction322 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction322 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2187 /* 3: ReduceAction322 < ReduceAction322: superclass typecheck marker */},
+val_t NEW_ReduceAction24(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction24;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction24(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction24;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction24____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction24_parser___ReduceAction24___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1691;
+  fra.me.meth = LOCATE_NEW_ReduceAction24_parser___ReduceAction24___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1691 */
+  fra.me.REG[0] = NEW_ReduceAction24();
+  INIT_ATTRIBUTES__ReduceAction24(fra.me.REG[0]);
+  parser___ReduceAction24___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction24(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction25[51] = {
+  {(bigint) 1199 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction25 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction25 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1199 /* 4: ReduceAction25 < ReduceAction25: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70281,14 +77061,9 @@ const classtable_elt_t VFT_ReduceAction322[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction322 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction25 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70296,7 +77071,6 @@ const classtable_elt_t VFT_ReduceAction322[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70304,41 +77078,93 @@ const classtable_elt_t VFT_ReduceAction322[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction322 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction322___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction25 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction25___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction322 < ReduceAction322: superclass init_table position */},
-  {(bigint) parser___ReduceAction322___init},
+  {(bigint) 2 /* 49: ReduceAction25 < ReduceAction25: superclass init_table position */},
+  {(bigint) parser___ReduceAction25___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction322(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction322;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction322(val_t self, char *from) {
-}
-val_t NEW_ReduceAction322_parser___ReduceAction322___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction322();
-  parser___ReduceAction322___init(self, init_table);
-  CHECKNEW_ReduceAction322(self, "parser::ReduceAction322::init for ReduceAction322");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction25::_goto */
+void INIT_ATTRIBUTES__ReduceAction25(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction25;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction323[48] = {
-  {(bigint) 2183 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction323 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction323 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2183 /* 3: ReduceAction323 < ReduceAction323: superclass typecheck marker */},
+val_t NEW_ReduceAction25(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction25;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction25(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction25;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction25____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction25_parser___ReduceAction25___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1729;
+  fra.me.meth = LOCATE_NEW_ReduceAction25_parser___ReduceAction25___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1729 */
+  fra.me.REG[0] = NEW_ReduceAction25();
+  INIT_ATTRIBUTES__ReduceAction25(fra.me.REG[0]);
+  parser___ReduceAction25___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction25(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction26[51] = {
+  {(bigint) 1155 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction26 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction26 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1155 /* 4: ReduceAction26 < ReduceAction26: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70351,14 +77177,9 @@ const classtable_elt_t VFT_ReduceAction323[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction323 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction26 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70366,7 +77187,6 @@ const classtable_elt_t VFT_ReduceAction323[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70374,41 +77194,93 @@ const classtable_elt_t VFT_ReduceAction323[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction323 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction323___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction26 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction26___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction323 < ReduceAction323: superclass init_table position */},
-  {(bigint) parser___ReduceAction323___init},
+  {(bigint) 2 /* 49: ReduceAction26 < ReduceAction26: superclass init_table position */},
+  {(bigint) parser___ReduceAction26___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction323(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction323;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction323(val_t self, char *from) {
-}
-val_t NEW_ReduceAction323_parser___ReduceAction323___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction323();
-  parser___ReduceAction323___init(self, init_table);
-  CHECKNEW_ReduceAction323(self, "parser::ReduceAction323::init for ReduceAction323");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction26::_goto */
+void INIT_ATTRIBUTES__ReduceAction26(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction26;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction324[48] = {
-  {(bigint) 2179 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction324 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction324 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2179 /* 3: ReduceAction324 < ReduceAction324: superclass typecheck marker */},
+val_t NEW_ReduceAction26(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction26;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction26(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction26;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction26____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction26_parser___ReduceAction26___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1768;
+  fra.me.meth = LOCATE_NEW_ReduceAction26_parser___ReduceAction26___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1768 */
+  fra.me.REG[0] = NEW_ReduceAction26();
+  INIT_ATTRIBUTES__ReduceAction26(fra.me.REG[0]);
+  parser___ReduceAction26___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction26(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction27[51] = {
+  {(bigint) 1111 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction27 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction27 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1111 /* 4: ReduceAction27 < ReduceAction27: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70421,14 +77293,9 @@ const classtable_elt_t VFT_ReduceAction324[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction324 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction27 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70436,7 +77303,6 @@ const classtable_elt_t VFT_ReduceAction324[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70444,41 +77310,93 @@ const classtable_elt_t VFT_ReduceAction324[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction324 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction324___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction27 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction27___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction324 < ReduceAction324: superclass init_table position */},
-  {(bigint) parser___ReduceAction324___init},
+  {(bigint) 2 /* 49: ReduceAction27 < ReduceAction27: superclass init_table position */},
+  {(bigint) parser___ReduceAction27___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction324(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction324;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction324(val_t self, char *from) {
-}
-val_t NEW_ReduceAction324_parser___ReduceAction324___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction324();
-  parser___ReduceAction324___init(self, init_table);
-  CHECKNEW_ReduceAction324(self, "parser::ReduceAction324::init for ReduceAction324");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction27::_goto */
+void INIT_ATTRIBUTES__ReduceAction27(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction27;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction325[48] = {
-  {(bigint) 2175 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction325 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction325 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2175 /* 3: ReduceAction325 < ReduceAction325: superclass typecheck marker */},
+val_t NEW_ReduceAction27(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction27;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction27(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction27;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction27____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction27_parser___ReduceAction27___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1810;
+  fra.me.meth = LOCATE_NEW_ReduceAction27_parser___ReduceAction27___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1810 */
+  fra.me.REG[0] = NEW_ReduceAction27();
+  INIT_ATTRIBUTES__ReduceAction27(fra.me.REG[0]);
+  parser___ReduceAction27___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction27(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction28[51] = {
+  {(bigint) 1075 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction28 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction28 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1075 /* 4: ReduceAction28 < ReduceAction28: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70491,14 +77409,9 @@ const classtable_elt_t VFT_ReduceAction325[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction325 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction28 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70506,7 +77419,6 @@ const classtable_elt_t VFT_ReduceAction325[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70514,41 +77426,93 @@ const classtable_elt_t VFT_ReduceAction325[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction325 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction325___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction28 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction28___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction325 < ReduceAction325: superclass init_table position */},
-  {(bigint) parser___ReduceAction325___init},
+  {(bigint) 2 /* 49: ReduceAction28 < ReduceAction28: superclass init_table position */},
+  {(bigint) parser___ReduceAction28___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction325(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction325;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction325(val_t self, char *from) {
-}
-val_t NEW_ReduceAction325_parser___ReduceAction325___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction325();
-  parser___ReduceAction325___init(self, init_table);
-  CHECKNEW_ReduceAction325(self, "parser::ReduceAction325::init for ReduceAction325");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction28::_goto */
+void INIT_ATTRIBUTES__ReduceAction28(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction28;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction326[48] = {
-  {(bigint) 2171 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction326 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction326 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2171 /* 3: ReduceAction326 < ReduceAction326: superclass typecheck marker */},
+val_t NEW_ReduceAction28(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction28;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction28(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction28;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction28____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction28_parser___ReduceAction28___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1849;
+  fra.me.meth = LOCATE_NEW_ReduceAction28_parser___ReduceAction28___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1849 */
+  fra.me.REG[0] = NEW_ReduceAction28();
+  INIT_ATTRIBUTES__ReduceAction28(fra.me.REG[0]);
+  parser___ReduceAction28___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction28(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction29[51] = {
+  {(bigint) 1031 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction29 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction29 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1031 /* 4: ReduceAction29 < ReduceAction29: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70561,14 +77525,9 @@ const classtable_elt_t VFT_ReduceAction326[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction326 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction29 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70576,7 +77535,6 @@ const classtable_elt_t VFT_ReduceAction326[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70584,41 +77542,93 @@ const classtable_elt_t VFT_ReduceAction326[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction326 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction326___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction29 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction29___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction326 < ReduceAction326: superclass init_table position */},
-  {(bigint) parser___ReduceAction326___init},
+  {(bigint) 2 /* 49: ReduceAction29 < ReduceAction29: superclass init_table position */},
+  {(bigint) parser___ReduceAction29___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction326(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction326;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction326(val_t self, char *from) {
-}
-val_t NEW_ReduceAction326_parser___ReduceAction326___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction326();
-  parser___ReduceAction326___init(self, init_table);
-  CHECKNEW_ReduceAction326(self, "parser::ReduceAction326::init for ReduceAction326");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction29::_goto */
+void INIT_ATTRIBUTES__ReduceAction29(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction29;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction327[48] = {
-  {(bigint) 2167 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction327 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction327 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2167 /* 3: ReduceAction327 < ReduceAction327: superclass typecheck marker */},
+val_t NEW_ReduceAction29(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction29;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction29(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction29;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction29____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction29_parser___ReduceAction29___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1891;
+  fra.me.meth = LOCATE_NEW_ReduceAction29_parser___ReduceAction29___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1891 */
+  fra.me.REG[0] = NEW_ReduceAction29();
+  INIT_ATTRIBUTES__ReduceAction29(fra.me.REG[0]);
+  parser___ReduceAction29___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction29(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction30[51] = {
+  {(bigint) 1003 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction30 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction30 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1003 /* 4: ReduceAction30 < ReduceAction30: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70631,14 +77641,9 @@ const classtable_elt_t VFT_ReduceAction327[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction327 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction30 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70646,7 +77651,6 @@ const classtable_elt_t VFT_ReduceAction327[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70654,41 +77658,93 @@ const classtable_elt_t VFT_ReduceAction327[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction327 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction327___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction30 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction30___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction327 < ReduceAction327: superclass init_table position */},
-  {(bigint) parser___ReduceAction327___init},
+  {(bigint) 2 /* 49: ReduceAction30 < ReduceAction30: superclass init_table position */},
+  {(bigint) parser___ReduceAction30___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction327(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction327;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction327(val_t self, char *from) {
-}
-val_t NEW_ReduceAction327_parser___ReduceAction327___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction327();
-  parser___ReduceAction327___init(self, init_table);
-  CHECKNEW_ReduceAction327(self, "parser::ReduceAction327::init for ReduceAction327");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction30::_goto */
+void INIT_ATTRIBUTES__ReduceAction30(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction30;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction328[48] = {
-  {(bigint) 2163 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction328 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction328 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2163 /* 3: ReduceAction328 < ReduceAction328: superclass typecheck marker */},
+val_t NEW_ReduceAction30(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction30;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction30(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction30;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction30____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction30_parser___ReduceAction30___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1934;
+  fra.me.meth = LOCATE_NEW_ReduceAction30_parser___ReduceAction30___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1934 */
+  fra.me.REG[0] = NEW_ReduceAction30();
+  INIT_ATTRIBUTES__ReduceAction30(fra.me.REG[0]);
+  parser___ReduceAction30___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction30(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction31[51] = {
+  {(bigint) 967 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction31 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction31 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 967 /* 4: ReduceAction31 < ReduceAction31: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70701,14 +77757,9 @@ const classtable_elt_t VFT_ReduceAction328[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction328 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction31 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70716,7 +77767,6 @@ const classtable_elt_t VFT_ReduceAction328[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70724,41 +77774,93 @@ const classtable_elt_t VFT_ReduceAction328[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction328 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction328___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction31 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction31___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction328 < ReduceAction328: superclass init_table position */},
-  {(bigint) parser___ReduceAction328___init},
+  {(bigint) 2 /* 49: ReduceAction31 < ReduceAction31: superclass init_table position */},
+  {(bigint) parser___ReduceAction31___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction328(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction328;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction328(val_t self, char *from) {
-}
-val_t NEW_ReduceAction328_parser___ReduceAction328___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction328();
-  parser___ReduceAction328___init(self, init_table);
-  CHECKNEW_ReduceAction328(self, "parser::ReduceAction328::init for ReduceAction328");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction31::_goto */
+void INIT_ATTRIBUTES__ReduceAction31(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction31;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction329[48] = {
-  {(bigint) 2159 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction329 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction329 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2159 /* 3: ReduceAction329 < ReduceAction329: superclass typecheck marker */},
+val_t NEW_ReduceAction31(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction31;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction31(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction31;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction31____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction31_parser___ReduceAction31___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 1980;
+  fra.me.meth = LOCATE_NEW_ReduceAction31_parser___ReduceAction31___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:1980 */
+  fra.me.REG[0] = NEW_ReduceAction31();
+  INIT_ATTRIBUTES__ReduceAction31(fra.me.REG[0]);
+  parser___ReduceAction31___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction31(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction32[51] = {
+  {(bigint) 931 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction32 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction32 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 931 /* 4: ReduceAction32 < ReduceAction32: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70771,14 +77873,9 @@ const classtable_elt_t VFT_ReduceAction329[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction329 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction32 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70786,7 +77883,6 @@ const classtable_elt_t VFT_ReduceAction329[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70794,41 +77890,93 @@ const classtable_elt_t VFT_ReduceAction329[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction329 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction329___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction32 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction32___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction329 < ReduceAction329: superclass init_table position */},
-  {(bigint) parser___ReduceAction329___init},
+  {(bigint) 2 /* 49: ReduceAction32 < ReduceAction32: superclass init_table position */},
+  {(bigint) parser___ReduceAction32___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction329(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction329;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction329(val_t self, char *from) {
-}
-val_t NEW_ReduceAction329_parser___ReduceAction329___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction329();
-  parser___ReduceAction329___init(self, init_table);
-  CHECKNEW_ReduceAction329(self, "parser::ReduceAction329::init for ReduceAction329");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction32::_goto */
+void INIT_ATTRIBUTES__ReduceAction32(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction32;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction330[48] = {
-  {(bigint) 2151 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction330 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction330 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2151 /* 3: ReduceAction330 < ReduceAction330: superclass typecheck marker */},
+val_t NEW_ReduceAction32(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction32;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction32(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction32;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction32____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction32_parser___ReduceAction32___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2007;
+  fra.me.meth = LOCATE_NEW_ReduceAction32_parser___ReduceAction32___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2007 */
+  fra.me.REG[0] = NEW_ReduceAction32();
+  INIT_ATTRIBUTES__ReduceAction32(fra.me.REG[0]);
+  parser___ReduceAction32___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction32(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction33[51] = {
+  {(bigint) 895 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction33 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction33 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 895 /* 4: ReduceAction33 < ReduceAction33: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70841,14 +77989,9 @@ const classtable_elt_t VFT_ReduceAction330[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction330 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction33 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70856,7 +77999,6 @@ const classtable_elt_t VFT_ReduceAction330[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70864,41 +78006,93 @@ const classtable_elt_t VFT_ReduceAction330[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction330 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction330___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction33 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction33___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction330 < ReduceAction330: superclass init_table position */},
-  {(bigint) parser___ReduceAction330___init},
+  {(bigint) 2 /* 49: ReduceAction33 < ReduceAction33: superclass init_table position */},
+  {(bigint) parser___ReduceAction33___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction330(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction330;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction330(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction33::_goto */
+void INIT_ATTRIBUTES__ReduceAction33(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction33;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction330_parser___ReduceAction330___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction330();
-  parser___ReduceAction330___init(self, init_table);
-  CHECKNEW_ReduceAction330(self, "parser::ReduceAction330::init for ReduceAction330");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction331[48] = {
-  {(bigint) 2147 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction331 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction331 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2147 /* 3: ReduceAction331 < ReduceAction331: superclass typecheck marker */},
+val_t NEW_ReduceAction33(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction33;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction33(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction33;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction33____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction33_parser___ReduceAction33___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2035;
+  fra.me.meth = LOCATE_NEW_ReduceAction33_parser___ReduceAction33___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2035 */
+  fra.me.REG[0] = NEW_ReduceAction33();
+  INIT_ATTRIBUTES__ReduceAction33(fra.me.REG[0]);
+  parser___ReduceAction33___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction33(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction34[51] = {
+  {(bigint) 875 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction34 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction34 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 875 /* 4: ReduceAction34 < ReduceAction34: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70911,14 +78105,9 @@ const classtable_elt_t VFT_ReduceAction331[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction331 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction34 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70926,7 +78115,6 @@ const classtable_elt_t VFT_ReduceAction331[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -70934,41 +78122,93 @@ const classtable_elt_t VFT_ReduceAction331[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction331 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction331___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction34 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction34___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction331 < ReduceAction331: superclass init_table position */},
-  {(bigint) parser___ReduceAction331___init},
+  {(bigint) 2 /* 49: ReduceAction34 < ReduceAction34: superclass init_table position */},
+  {(bigint) parser___ReduceAction34___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction331(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction331;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction34::_goto */
+void INIT_ATTRIBUTES__ReduceAction34(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction34;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction331(val_t self, char *from) {
-}
-val_t NEW_ReduceAction331_parser___ReduceAction331___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction331();
-  parser___ReduceAction331___init(self, init_table);
-  CHECKNEW_ReduceAction331(self, "parser::ReduceAction331::init for ReduceAction331");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction332[48] = {
-  {(bigint) 2143 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction332 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction332 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2143 /* 3: ReduceAction332 < ReduceAction332: superclass typecheck marker */},
+val_t NEW_ReduceAction34(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction34;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction34(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction34;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction34____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction34_parser___ReduceAction34___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2063;
+  fra.me.meth = LOCATE_NEW_ReduceAction34_parser___ReduceAction34___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2063 */
+  fra.me.REG[0] = NEW_ReduceAction34();
+  INIT_ATTRIBUTES__ReduceAction34(fra.me.REG[0]);
+  parser___ReduceAction34___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction34(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction35[51] = {
+  {(bigint) 835 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction35 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction35 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 835 /* 4: ReduceAction35 < ReduceAction35: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70981,14 +78221,9 @@ const classtable_elt_t VFT_ReduceAction332[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction332 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction35 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -70996,7 +78231,6 @@ const classtable_elt_t VFT_ReduceAction332[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71004,41 +78238,93 @@ const classtable_elt_t VFT_ReduceAction332[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction332 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction332___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction35 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction35___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction332 < ReduceAction332: superclass init_table position */},
-  {(bigint) parser___ReduceAction332___init},
+  {(bigint) 2 /* 49: ReduceAction35 < ReduceAction35: superclass init_table position */},
+  {(bigint) parser___ReduceAction35___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction332(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction332;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction332(val_t self, char *from) {
-}
-val_t NEW_ReduceAction332_parser___ReduceAction332___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction332();
-  parser___ReduceAction332___init(self, init_table);
-  CHECKNEW_ReduceAction332(self, "parser::ReduceAction332::init for ReduceAction332");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction35::_goto */
+void INIT_ATTRIBUTES__ReduceAction35(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction35;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction333[48] = {
-  {(bigint) 2139 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction333 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction333 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2139 /* 3: ReduceAction333 < ReduceAction333: superclass typecheck marker */},
+val_t NEW_ReduceAction35(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction35;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction35(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction35;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction35____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction35_parser___ReduceAction35___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2084;
+  fra.me.meth = LOCATE_NEW_ReduceAction35_parser___ReduceAction35___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2084 */
+  fra.me.REG[0] = NEW_ReduceAction35();
+  INIT_ATTRIBUTES__ReduceAction35(fra.me.REG[0]);
+  parser___ReduceAction35___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction35(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction36[51] = {
+  {(bigint) 799 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction36 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction36 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 799 /* 4: ReduceAction36 < ReduceAction36: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71051,14 +78337,9 @@ const classtable_elt_t VFT_ReduceAction333[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction333 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction36 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71066,7 +78347,6 @@ const classtable_elt_t VFT_ReduceAction333[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71074,41 +78354,93 @@ const classtable_elt_t VFT_ReduceAction333[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction333 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction333___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction36 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction36___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction333 < ReduceAction333: superclass init_table position */},
-  {(bigint) parser___ReduceAction333___init},
+  {(bigint) 2 /* 49: ReduceAction36 < ReduceAction36: superclass init_table position */},
+  {(bigint) parser___ReduceAction36___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction333(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction333;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction333(val_t self, char *from) {
-}
-val_t NEW_ReduceAction333_parser___ReduceAction333___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction333();
-  parser___ReduceAction333___init(self, init_table);
-  CHECKNEW_ReduceAction333(self, "parser::ReduceAction333::init for ReduceAction333");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction36::_goto */
+void INIT_ATTRIBUTES__ReduceAction36(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction36;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction334[48] = {
-  {(bigint) 2135 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction334 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction334 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2135 /* 3: ReduceAction334 < ReduceAction334: superclass typecheck marker */},
+val_t NEW_ReduceAction36(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction36;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction36(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction36;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction36____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction36_parser___ReduceAction36___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2096;
+  fra.me.meth = LOCATE_NEW_ReduceAction36_parser___ReduceAction36___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2096 */
+  fra.me.REG[0] = NEW_ReduceAction36();
+  INIT_ATTRIBUTES__ReduceAction36(fra.me.REG[0]);
+  parser___ReduceAction36___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction36(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction37[51] = {
+  {(bigint) 779 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction37 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction37 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 779 /* 4: ReduceAction37 < ReduceAction37: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71121,14 +78453,9 @@ const classtable_elt_t VFT_ReduceAction334[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction334 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction37 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71136,7 +78463,6 @@ const classtable_elt_t VFT_ReduceAction334[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71144,41 +78470,93 @@ const classtable_elt_t VFT_ReduceAction334[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction334 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction334___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction37 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction37___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction334 < ReduceAction334: superclass init_table position */},
-  {(bigint) parser___ReduceAction334___init},
+  {(bigint) 2 /* 49: ReduceAction37 < ReduceAction37: superclass init_table position */},
+  {(bigint) parser___ReduceAction37___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction334(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction334;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction334(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction37::_goto */
+void INIT_ATTRIBUTES__ReduceAction37(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction37;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction334_parser___ReduceAction334___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction334();
-  parser___ReduceAction334___init(self, init_table);
-  CHECKNEW_ReduceAction334(self, "parser::ReduceAction334::init for ReduceAction334");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction335[48] = {
-  {(bigint) 2131 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction335 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction335 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2131 /* 3: ReduceAction335 < ReduceAction335: superclass typecheck marker */},
+val_t NEW_ReduceAction37(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction37;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction37(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction37;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction37____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction37_parser___ReduceAction37___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2115;
+  fra.me.meth = LOCATE_NEW_ReduceAction37_parser___ReduceAction37___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2115 */
+  fra.me.REG[0] = NEW_ReduceAction37();
+  INIT_ATTRIBUTES__ReduceAction37(fra.me.REG[0]);
+  parser___ReduceAction37___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction37(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction39[51] = {
+  {(bigint) 707 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction39 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction39 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 707 /* 4: ReduceAction39 < ReduceAction39: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71191,14 +78569,9 @@ const classtable_elt_t VFT_ReduceAction335[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction335 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction39 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71206,7 +78579,6 @@ const classtable_elt_t VFT_ReduceAction335[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71214,41 +78586,93 @@ const classtable_elt_t VFT_ReduceAction335[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction335 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction335___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction39 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction39___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction335 < ReduceAction335: superclass init_table position */},
-  {(bigint) parser___ReduceAction335___init},
+  {(bigint) 2 /* 49: ReduceAction39 < ReduceAction39: superclass init_table position */},
+  {(bigint) parser___ReduceAction39___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction335(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction335;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction39::_goto */
+void INIT_ATTRIBUTES__ReduceAction39(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction39;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction335(val_t self, char *from) {
-}
-val_t NEW_ReduceAction335_parser___ReduceAction335___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction335();
-  parser___ReduceAction335___init(self, init_table);
-  CHECKNEW_ReduceAction335(self, "parser::ReduceAction335::init for ReduceAction335");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction336[48] = {
-  {(bigint) 2127 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction336 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction336 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2127 /* 3: ReduceAction336 < ReduceAction336: superclass typecheck marker */},
+val_t NEW_ReduceAction39(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction39;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction39(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction39;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction39____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction39_parser___ReduceAction39___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2154;
+  fra.me.meth = LOCATE_NEW_ReduceAction39_parser___ReduceAction39___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2154 */
+  fra.me.REG[0] = NEW_ReduceAction39();
+  INIT_ATTRIBUTES__ReduceAction39(fra.me.REG[0]);
+  parser___ReduceAction39___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction39(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction40[51] = {
+  {(bigint) 699 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction40 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction40 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 699 /* 4: ReduceAction40 < ReduceAction40: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71261,14 +78685,9 @@ const classtable_elt_t VFT_ReduceAction336[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction336 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction40 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71276,7 +78695,6 @@ const classtable_elt_t VFT_ReduceAction336[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71284,41 +78702,93 @@ const classtable_elt_t VFT_ReduceAction336[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction336 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction336___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction40 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction40___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction336 < ReduceAction336: superclass init_table position */},
-  {(bigint) parser___ReduceAction336___init},
+  {(bigint) 2 /* 49: ReduceAction40 < ReduceAction40: superclass init_table position */},
+  {(bigint) parser___ReduceAction40___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction336(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction336;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction40::_goto */
+void INIT_ATTRIBUTES__ReduceAction40(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction40;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction336(val_t self, char *from) {
-}
-val_t NEW_ReduceAction336_parser___ReduceAction336___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction336();
-  parser___ReduceAction336___init(self, init_table);
-  CHECKNEW_ReduceAction336(self, "parser::ReduceAction336::init for ReduceAction336");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction337[48] = {
-  {(bigint) 2123 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction337 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction337 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2123 /* 3: ReduceAction337 < ReduceAction337: superclass typecheck marker */},
+val_t NEW_ReduceAction40(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction40;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction40(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction40;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction40____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction40_parser___ReduceAction40___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2196;
+  fra.me.meth = LOCATE_NEW_ReduceAction40_parser___ReduceAction40___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2196 */
+  fra.me.REG[0] = NEW_ReduceAction40();
+  INIT_ATTRIBUTES__ReduceAction40(fra.me.REG[0]);
+  parser___ReduceAction40___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction40(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction41[51] = {
+  {(bigint) 695 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction41 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction41 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 695 /* 4: ReduceAction41 < ReduceAction41: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71331,14 +78801,9 @@ const classtable_elt_t VFT_ReduceAction337[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction337 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction41 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71346,7 +78811,6 @@ const classtable_elt_t VFT_ReduceAction337[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71354,41 +78818,93 @@ const classtable_elt_t VFT_ReduceAction337[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction337 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction337___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction41 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction41___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction337 < ReduceAction337: superclass init_table position */},
-  {(bigint) parser___ReduceAction337___init},
+  {(bigint) 2 /* 49: ReduceAction41 < ReduceAction41: superclass init_table position */},
+  {(bigint) parser___ReduceAction41___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction337(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction337;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction41::_goto */
+void INIT_ATTRIBUTES__ReduceAction41(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction41;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction337(val_t self, char *from) {
-}
-val_t NEW_ReduceAction337_parser___ReduceAction337___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction337();
-  parser___ReduceAction337___init(self, init_table);
-  CHECKNEW_ReduceAction337(self, "parser::ReduceAction337::init for ReduceAction337");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction338[48] = {
-  {(bigint) 2119 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction338 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction338 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2119 /* 3: ReduceAction338 < ReduceAction338: superclass typecheck marker */},
+val_t NEW_ReduceAction41(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction41;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction41(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction41;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction41____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction41_parser___ReduceAction41___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2239;
+  fra.me.meth = LOCATE_NEW_ReduceAction41_parser___ReduceAction41___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2239 */
+  fra.me.REG[0] = NEW_ReduceAction41();
+  INIT_ATTRIBUTES__ReduceAction41(fra.me.REG[0]);
+  parser___ReduceAction41___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction41(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction42[51] = {
+  {(bigint) 691 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction42 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction42 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 691 /* 4: ReduceAction42 < ReduceAction42: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71401,14 +78917,9 @@ const classtable_elt_t VFT_ReduceAction338[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction338 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction42 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71416,7 +78927,6 @@ const classtable_elt_t VFT_ReduceAction338[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71424,41 +78934,93 @@ const classtable_elt_t VFT_ReduceAction338[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction338 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction338___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction42 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction42___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction338 < ReduceAction338: superclass init_table position */},
-  {(bigint) parser___ReduceAction338___init},
+  {(bigint) 2 /* 49: ReduceAction42 < ReduceAction42: superclass init_table position */},
+  {(bigint) parser___ReduceAction42___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction338(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction338;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction42::_goto */
+void INIT_ATTRIBUTES__ReduceAction42(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction42;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction338(val_t self, char *from) {
-}
-val_t NEW_ReduceAction338_parser___ReduceAction338___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction338();
-  parser___ReduceAction338___init(self, init_table);
-  CHECKNEW_ReduceAction338(self, "parser::ReduceAction338::init for ReduceAction338");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction339[48] = {
-  {(bigint) 2115 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction339 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction339 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2115 /* 3: ReduceAction339 < ReduceAction339: superclass typecheck marker */},
+val_t NEW_ReduceAction42(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction42;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction42(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction42;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction42____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction42_parser___ReduceAction42___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2285;
+  fra.me.meth = LOCATE_NEW_ReduceAction42_parser___ReduceAction42___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2285 */
+  fra.me.REG[0] = NEW_ReduceAction42();
+  INIT_ATTRIBUTES__ReduceAction42(fra.me.REG[0]);
+  parser___ReduceAction42___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction42(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction43[51] = {
+  {(bigint) 687 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction43 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction43 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 687 /* 4: ReduceAction43 < ReduceAction43: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71471,14 +79033,9 @@ const classtable_elt_t VFT_ReduceAction339[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction339 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction43 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71486,7 +79043,6 @@ const classtable_elt_t VFT_ReduceAction339[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71494,41 +79050,93 @@ const classtable_elt_t VFT_ReduceAction339[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction339 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction339___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction43 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction43___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction339 < ReduceAction339: superclass init_table position */},
-  {(bigint) parser___ReduceAction339___init},
+  {(bigint) 2 /* 49: ReduceAction43 < ReduceAction43: superclass init_table position */},
+  {(bigint) parser___ReduceAction43___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction339(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction339;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction43::_goto */
+void INIT_ATTRIBUTES__ReduceAction43(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction43;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction339(val_t self, char *from) {
-}
-val_t NEW_ReduceAction339_parser___ReduceAction339___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction339();
-  parser___ReduceAction339___init(self, init_table);
-  CHECKNEW_ReduceAction339(self, "parser::ReduceAction339::init for ReduceAction339");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction340[48] = {
-  {(bigint) 2107 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction340 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction340 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2107 /* 3: ReduceAction340 < ReduceAction340: superclass typecheck marker */},
+val_t NEW_ReduceAction43(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction43;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction43(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction43;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction43____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction43_parser___ReduceAction43___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2328;
+  fra.me.meth = LOCATE_NEW_ReduceAction43_parser___ReduceAction43___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2328 */
+  fra.me.REG[0] = NEW_ReduceAction43();
+  INIT_ATTRIBUTES__ReduceAction43(fra.me.REG[0]);
+  parser___ReduceAction43___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction43(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction44[51] = {
+  {(bigint) 683 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction44 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction44 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 683 /* 4: ReduceAction44 < ReduceAction44: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71541,14 +79149,9 @@ const classtable_elt_t VFT_ReduceAction340[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction340 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction44 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71556,7 +79159,6 @@ const classtable_elt_t VFT_ReduceAction340[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71564,41 +79166,93 @@ const classtable_elt_t VFT_ReduceAction340[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction340 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction340___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction44 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction44___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction340 < ReduceAction340: superclass init_table position */},
-  {(bigint) parser___ReduceAction340___init},
+  {(bigint) 2 /* 49: ReduceAction44 < ReduceAction44: superclass init_table position */},
+  {(bigint) parser___ReduceAction44___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction340(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction340;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction44::_goto */
+void INIT_ATTRIBUTES__ReduceAction44(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction44;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction340(val_t self, char *from) {
-}
-val_t NEW_ReduceAction340_parser___ReduceAction340___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction340();
-  parser___ReduceAction340___init(self, init_table);
-  CHECKNEW_ReduceAction340(self, "parser::ReduceAction340::init for ReduceAction340");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction341[48] = {
-  {(bigint) 2103 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction341 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction341 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2103 /* 3: ReduceAction341 < ReduceAction341: superclass typecheck marker */},
+val_t NEW_ReduceAction44(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction44;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction44(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction44;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction44____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction44_parser___ReduceAction44___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2374;
+  fra.me.meth = LOCATE_NEW_ReduceAction44_parser___ReduceAction44___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2374 */
+  fra.me.REG[0] = NEW_ReduceAction44();
+  INIT_ATTRIBUTES__ReduceAction44(fra.me.REG[0]);
+  parser___ReduceAction44___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction44(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction45[51] = {
+  {(bigint) 679 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction45 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction45 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 679 /* 4: ReduceAction45 < ReduceAction45: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71611,14 +79265,9 @@ const classtable_elt_t VFT_ReduceAction341[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction341 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction45 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71626,7 +79275,6 @@ const classtable_elt_t VFT_ReduceAction341[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71634,41 +79282,93 @@ const classtable_elt_t VFT_ReduceAction341[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction341 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction341___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction45 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction45___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction341 < ReduceAction341: superclass init_table position */},
-  {(bigint) parser___ReduceAction341___init},
+  {(bigint) 2 /* 49: ReduceAction45 < ReduceAction45: superclass init_table position */},
+  {(bigint) parser___ReduceAction45___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction341(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction341;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction45::_goto */
+void INIT_ATTRIBUTES__ReduceAction45(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction45;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction341(val_t self, char *from) {
-}
-val_t NEW_ReduceAction341_parser___ReduceAction341___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction341();
-  parser___ReduceAction341___init(self, init_table);
-  CHECKNEW_ReduceAction341(self, "parser::ReduceAction341::init for ReduceAction341");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction342[48] = {
-  {(bigint) 2099 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction342 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction342 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2099 /* 3: ReduceAction342 < ReduceAction342: superclass typecheck marker */},
+val_t NEW_ReduceAction45(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction45;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction45(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction45;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction45____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction45_parser___ReduceAction45___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2421;
+  fra.me.meth = LOCATE_NEW_ReduceAction45_parser___ReduceAction45___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2421 */
+  fra.me.REG[0] = NEW_ReduceAction45();
+  INIT_ATTRIBUTES__ReduceAction45(fra.me.REG[0]);
+  parser___ReduceAction45___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction45(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction46[51] = {
+  {(bigint) 675 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction46 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction46 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 675 /* 4: ReduceAction46 < ReduceAction46: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71681,14 +79381,9 @@ const classtable_elt_t VFT_ReduceAction342[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction342 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction46 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71696,7 +79391,6 @@ const classtable_elt_t VFT_ReduceAction342[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71704,41 +79398,93 @@ const classtable_elt_t VFT_ReduceAction342[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction342 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction342___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction46 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction46___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction342 < ReduceAction342: superclass init_table position */},
-  {(bigint) parser___ReduceAction342___init},
+  {(bigint) 2 /* 49: ReduceAction46 < ReduceAction46: superclass init_table position */},
+  {(bigint) parser___ReduceAction46___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction342(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction342;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction46::_goto */
+void INIT_ATTRIBUTES__ReduceAction46(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction46;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction342(val_t self, char *from) {
-}
-val_t NEW_ReduceAction342_parser___ReduceAction342___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction342();
-  parser___ReduceAction342___init(self, init_table);
-  CHECKNEW_ReduceAction342(self, "parser::ReduceAction342::init for ReduceAction342");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction343[48] = {
-  {(bigint) 2095 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction343 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction343 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2095 /* 3: ReduceAction343 < ReduceAction343: superclass typecheck marker */},
+val_t NEW_ReduceAction46(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction46;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction46(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction46;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction46____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction46_parser___ReduceAction46___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2471;
+  fra.me.meth = LOCATE_NEW_ReduceAction46_parser___ReduceAction46___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2471 */
+  fra.me.REG[0] = NEW_ReduceAction46();
+  INIT_ATTRIBUTES__ReduceAction46(fra.me.REG[0]);
+  parser___ReduceAction46___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction46(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction47[51] = {
+  {(bigint) 671 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction47 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction47 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 671 /* 4: ReduceAction47 < ReduceAction47: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71751,14 +79497,9 @@ const classtable_elt_t VFT_ReduceAction343[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction343 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction47 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71766,7 +79507,6 @@ const classtable_elt_t VFT_ReduceAction343[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71774,41 +79514,93 @@ const classtable_elt_t VFT_ReduceAction343[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction343 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction343___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction47 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction47___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction343 < ReduceAction343: superclass init_table position */},
-  {(bigint) parser___ReduceAction343___init},
+  {(bigint) 2 /* 49: ReduceAction47 < ReduceAction47: superclass init_table position */},
+  {(bigint) parser___ReduceAction47___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction343(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction343;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction47::_goto */
+void INIT_ATTRIBUTES__ReduceAction47(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction47;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction343(val_t self, char *from) {
-}
-val_t NEW_ReduceAction343_parser___ReduceAction343___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction343();
-  parser___ReduceAction343___init(self, init_table);
-  CHECKNEW_ReduceAction343(self, "parser::ReduceAction343::init for ReduceAction343");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction344[48] = {
-  {(bigint) 2091 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction344 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction344 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2091 /* 3: ReduceAction344 < ReduceAction344: superclass typecheck marker */},
+val_t NEW_ReduceAction47(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction47;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction47(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction47;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction47____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction47_parser___ReduceAction47___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2514;
+  fra.me.meth = LOCATE_NEW_ReduceAction47_parser___ReduceAction47___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2514 */
+  fra.me.REG[0] = NEW_ReduceAction47();
+  INIT_ATTRIBUTES__ReduceAction47(fra.me.REG[0]);
+  parser___ReduceAction47___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction47(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction48[51] = {
+  {(bigint) 667 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction48 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction48 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 667 /* 4: ReduceAction48 < ReduceAction48: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71821,14 +79613,9 @@ const classtable_elt_t VFT_ReduceAction344[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction344 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction48 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71836,7 +79623,6 @@ const classtable_elt_t VFT_ReduceAction344[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71844,41 +79630,93 @@ const classtable_elt_t VFT_ReduceAction344[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction344 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction344___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction48 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction48___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction344 < ReduceAction344: superclass init_table position */},
-  {(bigint) parser___ReduceAction344___init},
+  {(bigint) 2 /* 49: ReduceAction48 < ReduceAction48: superclass init_table position */},
+  {(bigint) parser___ReduceAction48___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction344(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction344;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction48::_goto */
+void INIT_ATTRIBUTES__ReduceAction48(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction48;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction344(val_t self, char *from) {
-}
-val_t NEW_ReduceAction344_parser___ReduceAction344___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction344();
-  parser___ReduceAction344___init(self, init_table);
-  CHECKNEW_ReduceAction344(self, "parser::ReduceAction344::init for ReduceAction344");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction345[48] = {
-  {(bigint) 2087 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction345 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction345 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2087 /* 3: ReduceAction345 < ReduceAction345: superclass typecheck marker */},
+val_t NEW_ReduceAction48(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction48;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction48(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction48;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction48____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction48_parser___ReduceAction48___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2560;
+  fra.me.meth = LOCATE_NEW_ReduceAction48_parser___ReduceAction48___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2560 */
+  fra.me.REG[0] = NEW_ReduceAction48();
+  INIT_ATTRIBUTES__ReduceAction48(fra.me.REG[0]);
+  parser___ReduceAction48___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction48(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction49[51] = {
+  {(bigint) 663 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction49 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction49 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 663 /* 4: ReduceAction49 < ReduceAction49: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71891,14 +79729,9 @@ const classtable_elt_t VFT_ReduceAction345[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction345 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction49 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71906,7 +79739,6 @@ const classtable_elt_t VFT_ReduceAction345[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71914,41 +79746,93 @@ const classtable_elt_t VFT_ReduceAction345[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction345 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction345___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction49 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction49___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction345 < ReduceAction345: superclass init_table position */},
-  {(bigint) parser___ReduceAction345___init},
+  {(bigint) 2 /* 49: ReduceAction49 < ReduceAction49: superclass init_table position */},
+  {(bigint) parser___ReduceAction49___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction345(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction345;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction49::_goto */
+void INIT_ATTRIBUTES__ReduceAction49(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction49;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction345(val_t self, char *from) {
-}
-val_t NEW_ReduceAction345_parser___ReduceAction345___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction345();
-  parser___ReduceAction345___init(self, init_table);
-  CHECKNEW_ReduceAction345(self, "parser::ReduceAction345::init for ReduceAction345");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction346[48] = {
-  {(bigint) 2083 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction346 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction346 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2083 /* 3: ReduceAction346 < ReduceAction346: superclass typecheck marker */},
+val_t NEW_ReduceAction49(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction49;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction49(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction49;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction49____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction49_parser___ReduceAction49___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2607;
+  fra.me.meth = LOCATE_NEW_ReduceAction49_parser___ReduceAction49___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2607 */
+  fra.me.REG[0] = NEW_ReduceAction49();
+  INIT_ATTRIBUTES__ReduceAction49(fra.me.REG[0]);
+  parser___ReduceAction49___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction49(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction50[51] = {
+  {(bigint) 655 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction50 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction50 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 655 /* 4: ReduceAction50 < ReduceAction50: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71961,14 +79845,9 @@ const classtable_elt_t VFT_ReduceAction346[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction346 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction50 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -71976,7 +79855,6 @@ const classtable_elt_t VFT_ReduceAction346[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -71984,41 +79862,93 @@ const classtable_elt_t VFT_ReduceAction346[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction346 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction346___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction50 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction50___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction346 < ReduceAction346: superclass init_table position */},
-  {(bigint) parser___ReduceAction346___init},
+  {(bigint) 2 /* 49: ReduceAction50 < ReduceAction50: superclass init_table position */},
+  {(bigint) parser___ReduceAction50___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction346(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction346;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction50::_goto */
+void INIT_ATTRIBUTES__ReduceAction50(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction50;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction346(val_t self, char *from) {
-}
-val_t NEW_ReduceAction346_parser___ReduceAction346___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction346();
-  parser___ReduceAction346___init(self, init_table);
-  CHECKNEW_ReduceAction346(self, "parser::ReduceAction346::init for ReduceAction346");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction347[48] = {
-  {(bigint) 2079 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction347 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction347 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2079 /* 3: ReduceAction347 < ReduceAction347: superclass typecheck marker */},
+val_t NEW_ReduceAction50(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction50;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction50(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction50;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction50____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction50_parser___ReduceAction50___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2657;
+  fra.me.meth = LOCATE_NEW_ReduceAction50_parser___ReduceAction50___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2657 */
+  fra.me.REG[0] = NEW_ReduceAction50();
+  INIT_ATTRIBUTES__ReduceAction50(fra.me.REG[0]);
+  parser___ReduceAction50___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction50(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction51[51] = {
+  {(bigint) 651 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction51 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction51 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 651 /* 4: ReduceAction51 < ReduceAction51: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72031,14 +79961,9 @@ const classtable_elt_t VFT_ReduceAction347[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction347 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction51 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72046,7 +79971,6 @@ const classtable_elt_t VFT_ReduceAction347[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72054,41 +79978,93 @@ const classtable_elt_t VFT_ReduceAction347[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction347 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction347___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction51 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction51___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction347 < ReduceAction347: superclass init_table position */},
-  {(bigint) parser___ReduceAction347___init},
+  {(bigint) 2 /* 49: ReduceAction51 < ReduceAction51: superclass init_table position */},
+  {(bigint) parser___ReduceAction51___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction347(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction347;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction51::_goto */
+void INIT_ATTRIBUTES__ReduceAction51(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction51;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction347(val_t self, char *from) {
-}
-val_t NEW_ReduceAction347_parser___ReduceAction347___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction347();
-  parser___ReduceAction347___init(self, init_table);
-  CHECKNEW_ReduceAction347(self, "parser::ReduceAction347::init for ReduceAction347");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction348[48] = {
-  {(bigint) 2075 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction348 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction348 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2075 /* 3: ReduceAction348 < ReduceAction348: superclass typecheck marker */},
+val_t NEW_ReduceAction51(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction51;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction51(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction51;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction51____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction51_parser___ReduceAction51___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2704;
+  fra.me.meth = LOCATE_NEW_ReduceAction51_parser___ReduceAction51___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2704 */
+  fra.me.REG[0] = NEW_ReduceAction51();
+  INIT_ATTRIBUTES__ReduceAction51(fra.me.REG[0]);
+  parser___ReduceAction51___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction51(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction52[51] = {
+  {(bigint) 647 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction52 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction52 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 647 /* 4: ReduceAction52 < ReduceAction52: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72101,14 +80077,9 @@ const classtable_elt_t VFT_ReduceAction348[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction348 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction52 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72116,7 +80087,6 @@ const classtable_elt_t VFT_ReduceAction348[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72124,41 +80094,93 @@ const classtable_elt_t VFT_ReduceAction348[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction348 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction348___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction52 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction52___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction348 < ReduceAction348: superclass init_table position */},
-  {(bigint) parser___ReduceAction348___init},
+  {(bigint) 2 /* 49: ReduceAction52 < ReduceAction52: superclass init_table position */},
+  {(bigint) parser___ReduceAction52___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction348(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction348;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction52::_goto */
+void INIT_ATTRIBUTES__ReduceAction52(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction52;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction348(val_t self, char *from) {
-}
-val_t NEW_ReduceAction348_parser___ReduceAction348___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction348();
-  parser___ReduceAction348___init(self, init_table);
-  CHECKNEW_ReduceAction348(self, "parser::ReduceAction348::init for ReduceAction348");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction349[48] = {
-  {(bigint) 2071 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction349 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction349 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2071 /* 3: ReduceAction349 < ReduceAction349: superclass typecheck marker */},
+val_t NEW_ReduceAction52(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction52;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction52(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction52;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction52____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction52_parser___ReduceAction52___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2754;
+  fra.me.meth = LOCATE_NEW_ReduceAction52_parser___ReduceAction52___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2754 */
+  fra.me.REG[0] = NEW_ReduceAction52();
+  INIT_ATTRIBUTES__ReduceAction52(fra.me.REG[0]);
+  parser___ReduceAction52___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction52(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction53[51] = {
+  {(bigint) 643 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction53 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction53 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 643 /* 4: ReduceAction53 < ReduceAction53: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72171,14 +80193,9 @@ const classtable_elt_t VFT_ReduceAction349[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction349 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction53 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72186,7 +80203,6 @@ const classtable_elt_t VFT_ReduceAction349[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72194,41 +80210,93 @@ const classtable_elt_t VFT_ReduceAction349[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction349 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction349___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction53 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction53___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction349 < ReduceAction349: superclass init_table position */},
-  {(bigint) parser___ReduceAction349___init},
+  {(bigint) 2 /* 49: ReduceAction53 < ReduceAction53: superclass init_table position */},
+  {(bigint) parser___ReduceAction53___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction349(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction349;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction349(val_t self, char *from) {
-}
-val_t NEW_ReduceAction349_parser___ReduceAction349___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction349();
-  parser___ReduceAction349___init(self, init_table);
-  CHECKNEW_ReduceAction349(self, "parser::ReduceAction349::init for ReduceAction349");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction53::_goto */
+void INIT_ATTRIBUTES__ReduceAction53(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction53;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction350[48] = {
-  {(bigint) 2063 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction350 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction350 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2063 /* 3: ReduceAction350 < ReduceAction350: superclass typecheck marker */},
+val_t NEW_ReduceAction53(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction53;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction53(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction53;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction53____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction53_parser___ReduceAction53___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2805;
+  fra.me.meth = LOCATE_NEW_ReduceAction53_parser___ReduceAction53___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2805 */
+  fra.me.REG[0] = NEW_ReduceAction53();
+  INIT_ATTRIBUTES__ReduceAction53(fra.me.REG[0]);
+  parser___ReduceAction53___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction53(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction54[51] = {
+  {(bigint) 639 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction54 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction54 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 639 /* 4: ReduceAction54 < ReduceAction54: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72241,14 +80309,9 @@ const classtable_elt_t VFT_ReduceAction350[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction350 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction54 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72256,7 +80319,6 @@ const classtable_elt_t VFT_ReduceAction350[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72264,41 +80326,93 @@ const classtable_elt_t VFT_ReduceAction350[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction350 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction350___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction54 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction54___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction350 < ReduceAction350: superclass init_table position */},
-  {(bigint) parser___ReduceAction350___init},
+  {(bigint) 2 /* 49: ReduceAction54 < ReduceAction54: superclass init_table position */},
+  {(bigint) parser___ReduceAction54___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction350(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction350;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction350(val_t self, char *from) {
-}
-val_t NEW_ReduceAction350_parser___ReduceAction350___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction350();
-  parser___ReduceAction350___init(self, init_table);
-  CHECKNEW_ReduceAction350(self, "parser::ReduceAction350::init for ReduceAction350");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction54::_goto */
+void INIT_ATTRIBUTES__ReduceAction54(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction54;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction351[48] = {
-  {(bigint) 2059 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction351 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction351 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2059 /* 3: ReduceAction351 < ReduceAction351: superclass typecheck marker */},
+val_t NEW_ReduceAction54(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction54;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction54(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction54;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction54____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction54_parser___ReduceAction54___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2859;
+  fra.me.meth = LOCATE_NEW_ReduceAction54_parser___ReduceAction54___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2859 */
+  fra.me.REG[0] = NEW_ReduceAction54();
+  INIT_ATTRIBUTES__ReduceAction54(fra.me.REG[0]);
+  parser___ReduceAction54___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction54(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction55[51] = {
+  {(bigint) 635 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction55 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction55 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 635 /* 4: ReduceAction55 < ReduceAction55: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72311,14 +80425,9 @@ const classtable_elt_t VFT_ReduceAction351[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction351 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction55 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72326,7 +80435,6 @@ const classtable_elt_t VFT_ReduceAction351[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72334,41 +80442,93 @@ const classtable_elt_t VFT_ReduceAction351[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction351 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction351___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction55 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction55___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction351 < ReduceAction351: superclass init_table position */},
-  {(bigint) parser___ReduceAction351___init},
+  {(bigint) 2 /* 49: ReduceAction55 < ReduceAction55: superclass init_table position */},
+  {(bigint) parser___ReduceAction55___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction351(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction351;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction351(val_t self, char *from) {
-}
-val_t NEW_ReduceAction351_parser___ReduceAction351___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction351();
-  parser___ReduceAction351___init(self, init_table);
-  CHECKNEW_ReduceAction351(self, "parser::ReduceAction351::init for ReduceAction351");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction55::_goto */
+void INIT_ATTRIBUTES__ReduceAction55(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction55;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction352[48] = {
-  {(bigint) 2055 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction352 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction352 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2055 /* 3: ReduceAction352 < ReduceAction352: superclass typecheck marker */},
+val_t NEW_ReduceAction55(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction55;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction55(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction55;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction55____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction55_parser___ReduceAction55___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2876;
+  fra.me.meth = LOCATE_NEW_ReduceAction55_parser___ReduceAction55___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2876 */
+  fra.me.REG[0] = NEW_ReduceAction55();
+  INIT_ATTRIBUTES__ReduceAction55(fra.me.REG[0]);
+  parser___ReduceAction55___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction55(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction56[51] = {
+  {(bigint) 631 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction56 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction56 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 631 /* 4: ReduceAction56 < ReduceAction56: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72381,14 +80541,9 @@ const classtable_elt_t VFT_ReduceAction352[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction352 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction56 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72396,7 +80551,6 @@ const classtable_elt_t VFT_ReduceAction352[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72404,41 +80558,93 @@ const classtable_elt_t VFT_ReduceAction352[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction352 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction352___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction56 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction56___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction352 < ReduceAction352: superclass init_table position */},
-  {(bigint) parser___ReduceAction352___init},
+  {(bigint) 2 /* 49: ReduceAction56 < ReduceAction56: superclass init_table position */},
+  {(bigint) parser___ReduceAction56___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction352(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction352;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction352(val_t self, char *from) {
-}
-val_t NEW_ReduceAction352_parser___ReduceAction352___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction352();
-  parser___ReduceAction352___init(self, init_table);
-  CHECKNEW_ReduceAction352(self, "parser::ReduceAction352::init for ReduceAction352");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction56::_goto */
+void INIT_ATTRIBUTES__ReduceAction56(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction56;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction353[48] = {
-  {(bigint) 2051 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction353 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction353 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2051 /* 3: ReduceAction353 < ReduceAction353: superclass typecheck marker */},
+val_t NEW_ReduceAction56(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction56;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction56(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction56;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction56____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction56_parser___ReduceAction56___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2897;
+  fra.me.meth = LOCATE_NEW_ReduceAction56_parser___ReduceAction56___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2897 */
+  fra.me.REG[0] = NEW_ReduceAction56();
+  INIT_ATTRIBUTES__ReduceAction56(fra.me.REG[0]);
+  parser___ReduceAction56___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction56(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction57[51] = {
+  {(bigint) 627 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction57 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction57 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 627 /* 4: ReduceAction57 < ReduceAction57: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72451,14 +80657,9 @@ const classtable_elt_t VFT_ReduceAction353[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction353 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction57 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72466,7 +80667,6 @@ const classtable_elt_t VFT_ReduceAction353[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72474,41 +80674,93 @@ const classtable_elt_t VFT_ReduceAction353[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction353 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction353___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction57 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction57___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction353 < ReduceAction353: superclass init_table position */},
-  {(bigint) parser___ReduceAction353___init},
+  {(bigint) 2 /* 49: ReduceAction57 < ReduceAction57: superclass init_table position */},
+  {(bigint) parser___ReduceAction57___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction353(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction353;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction353(val_t self, char *from) {
-}
-val_t NEW_ReduceAction353_parser___ReduceAction353___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction353();
-  parser___ReduceAction353___init(self, init_table);
-  CHECKNEW_ReduceAction353(self, "parser::ReduceAction353::init for ReduceAction353");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction57::_goto */
+void INIT_ATTRIBUTES__ReduceAction57(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction57;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction354[48] = {
-  {(bigint) 2047 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction354 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction354 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2047 /* 3: ReduceAction354 < ReduceAction354: superclass typecheck marker */},
+val_t NEW_ReduceAction57(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction57;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction57(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction57;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction57____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction57_parser___ReduceAction57___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2914;
+  fra.me.meth = LOCATE_NEW_ReduceAction57_parser___ReduceAction57___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2914 */
+  fra.me.REG[0] = NEW_ReduceAction57();
+  INIT_ATTRIBUTES__ReduceAction57(fra.me.REG[0]);
+  parser___ReduceAction57___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction57(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction58[51] = {
+  {(bigint) 623 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction58 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction58 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 623 /* 4: ReduceAction58 < ReduceAction58: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72521,14 +80773,9 @@ const classtable_elt_t VFT_ReduceAction354[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction354 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction58 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72536,7 +80783,6 @@ const classtable_elt_t VFT_ReduceAction354[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72544,41 +80790,93 @@ const classtable_elt_t VFT_ReduceAction354[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction354 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction354___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction58 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction58___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction354 < ReduceAction354: superclass init_table position */},
-  {(bigint) parser___ReduceAction354___init},
+  {(bigint) 2 /* 49: ReduceAction58 < ReduceAction58: superclass init_table position */},
+  {(bigint) parser___ReduceAction58___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction354(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction354;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction354(val_t self, char *from) {
-}
-val_t NEW_ReduceAction354_parser___ReduceAction354___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction354();
-  parser___ReduceAction354___init(self, init_table);
-  CHECKNEW_ReduceAction354(self, "parser::ReduceAction354::init for ReduceAction354");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction58::_goto */
+void INIT_ATTRIBUTES__ReduceAction58(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction58;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction355[48] = {
-  {(bigint) 2043 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction355 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction355 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2043 /* 3: ReduceAction355 < ReduceAction355: superclass typecheck marker */},
+val_t NEW_ReduceAction58(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction58;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction58(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction58;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction58____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction58_parser___ReduceAction58___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2931;
+  fra.me.meth = LOCATE_NEW_ReduceAction58_parser___ReduceAction58___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2931 */
+  fra.me.REG[0] = NEW_ReduceAction58();
+  INIT_ATTRIBUTES__ReduceAction58(fra.me.REG[0]);
+  parser___ReduceAction58___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction58(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction59[51] = {
+  {(bigint) 619 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction59 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction59 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 619 /* 4: ReduceAction59 < ReduceAction59: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72591,14 +80889,9 @@ const classtable_elt_t VFT_ReduceAction355[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction355 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction59 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72606,7 +80899,6 @@ const classtable_elt_t VFT_ReduceAction355[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72614,41 +80906,93 @@ const classtable_elt_t VFT_ReduceAction355[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction355 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction355___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction59 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction59___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction355 < ReduceAction355: superclass init_table position */},
-  {(bigint) parser___ReduceAction355___init},
+  {(bigint) 2 /* 49: ReduceAction59 < ReduceAction59: superclass init_table position */},
+  {(bigint) parser___ReduceAction59___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction355(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction355;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction355(val_t self, char *from) {
-}
-val_t NEW_ReduceAction355_parser___ReduceAction355___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction355();
-  parser___ReduceAction355___init(self, init_table);
-  CHECKNEW_ReduceAction355(self, "parser::ReduceAction355::init for ReduceAction355");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction59::_goto */
+void INIT_ATTRIBUTES__ReduceAction59(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction59;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction356[48] = {
-  {(bigint) 2039 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction356 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction356 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2039 /* 3: ReduceAction356 < ReduceAction356: superclass typecheck marker */},
+val_t NEW_ReduceAction59(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction59;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction59(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction59;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction59____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction59_parser___ReduceAction59___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2952;
+  fra.me.meth = LOCATE_NEW_ReduceAction59_parser___ReduceAction59___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2952 */
+  fra.me.REG[0] = NEW_ReduceAction59();
+  INIT_ATTRIBUTES__ReduceAction59(fra.me.REG[0]);
+  parser___ReduceAction59___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction59(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction60[51] = {
+  {(bigint) 611 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction60 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction60 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 611 /* 4: ReduceAction60 < ReduceAction60: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72661,14 +81005,9 @@ const classtable_elt_t VFT_ReduceAction356[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction356 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction60 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72676,7 +81015,6 @@ const classtable_elt_t VFT_ReduceAction356[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72684,41 +81022,93 @@ const classtable_elt_t VFT_ReduceAction356[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction356 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction356___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction60 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction60___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction356 < ReduceAction356: superclass init_table position */},
-  {(bigint) parser___ReduceAction356___init},
+  {(bigint) 2 /* 49: ReduceAction60 < ReduceAction60: superclass init_table position */},
+  {(bigint) parser___ReduceAction60___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction356(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction356;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction356(val_t self, char *from) {
-}
-val_t NEW_ReduceAction356_parser___ReduceAction356___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction356();
-  parser___ReduceAction356___init(self, init_table);
-  CHECKNEW_ReduceAction356(self, "parser::ReduceAction356::init for ReduceAction356");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction60::_goto */
+void INIT_ATTRIBUTES__ReduceAction60(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction60;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction357[48] = {
-  {(bigint) 2035 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction357 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction357 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2035 /* 3: ReduceAction357 < ReduceAction357: superclass typecheck marker */},
+val_t NEW_ReduceAction60(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction60;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction60(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction60;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction60____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction60_parser___ReduceAction60___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2977;
+  fra.me.meth = LOCATE_NEW_ReduceAction60_parser___ReduceAction60___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2977 */
+  fra.me.REG[0] = NEW_ReduceAction60();
+  INIT_ATTRIBUTES__ReduceAction60(fra.me.REG[0]);
+  parser___ReduceAction60___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction60(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction61[51] = {
+  {(bigint) 607 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction61 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction61 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 607 /* 4: ReduceAction61 < ReduceAction61: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72731,14 +81121,9 @@ const classtable_elt_t VFT_ReduceAction357[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction357 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction61 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72746,7 +81131,6 @@ const classtable_elt_t VFT_ReduceAction357[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72754,41 +81138,93 @@ const classtable_elt_t VFT_ReduceAction357[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction357 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction357___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction61 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction61___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction357 < ReduceAction357: superclass init_table position */},
-  {(bigint) parser___ReduceAction357___init},
+  {(bigint) 2 /* 49: ReduceAction61 < ReduceAction61: superclass init_table position */},
+  {(bigint) parser___ReduceAction61___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction357(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction357;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction357(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction61::_goto */
+void INIT_ATTRIBUTES__ReduceAction61(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction61;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction357_parser___ReduceAction357___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction357();
-  parser___ReduceAction357___init(self, init_table);
-  CHECKNEW_ReduceAction357(self, "parser::ReduceAction357::init for ReduceAction357");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction358[48] = {
-  {(bigint) 2031 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction358 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction358 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2031 /* 3: ReduceAction358 < ReduceAction358: superclass typecheck marker */},
+val_t NEW_ReduceAction61(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction61;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction61(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction61;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction61____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction61_parser___ReduceAction61___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 2992;
+  fra.me.meth = LOCATE_NEW_ReduceAction61_parser___ReduceAction61___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:2992 */
+  fra.me.REG[0] = NEW_ReduceAction61();
+  INIT_ATTRIBUTES__ReduceAction61(fra.me.REG[0]);
+  parser___ReduceAction61___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction61(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction62[51] = {
+  {(bigint) 603 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction62 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction62 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 603 /* 4: ReduceAction62 < ReduceAction62: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72801,14 +81237,9 @@ const classtable_elt_t VFT_ReduceAction358[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction358 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction62 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72816,7 +81247,6 @@ const classtable_elt_t VFT_ReduceAction358[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72824,41 +81254,93 @@ const classtable_elt_t VFT_ReduceAction358[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction358 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction358___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction62 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction62___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction358 < ReduceAction358: superclass init_table position */},
-  {(bigint) parser___ReduceAction358___init},
+  {(bigint) 2 /* 49: ReduceAction62 < ReduceAction62: superclass init_table position */},
+  {(bigint) parser___ReduceAction62___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction358(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction358;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction358(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction62::_goto */
+void INIT_ATTRIBUTES__ReduceAction62(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction62;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction358_parser___ReduceAction358___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction358();
-  parser___ReduceAction358___init(self, init_table);
-  CHECKNEW_ReduceAction358(self, "parser::ReduceAction358::init for ReduceAction358");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction359[48] = {
-  {(bigint) 2027 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction359 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction359 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2027 /* 3: ReduceAction359 < ReduceAction359: superclass typecheck marker */},
+val_t NEW_ReduceAction62(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction62;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction62(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction62;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction62____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction62_parser___ReduceAction62___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3010;
+  fra.me.meth = LOCATE_NEW_ReduceAction62_parser___ReduceAction62___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3010 */
+  fra.me.REG[0] = NEW_ReduceAction62();
+  INIT_ATTRIBUTES__ReduceAction62(fra.me.REG[0]);
+  parser___ReduceAction62___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction62(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction63[51] = {
+  {(bigint) 599 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction63 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction63 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 599 /* 4: ReduceAction63 < ReduceAction63: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72871,14 +81353,9 @@ const classtable_elt_t VFT_ReduceAction359[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction359 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction63 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72886,7 +81363,6 @@ const classtable_elt_t VFT_ReduceAction359[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72894,41 +81370,93 @@ const classtable_elt_t VFT_ReduceAction359[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction359 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction359___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction63 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction63___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction359 < ReduceAction359: superclass init_table position */},
-  {(bigint) parser___ReduceAction359___init},
+  {(bigint) 2 /* 49: ReduceAction63 < ReduceAction63: superclass init_table position */},
+  {(bigint) parser___ReduceAction63___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction359(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction359;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction359(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction63::_goto */
+void INIT_ATTRIBUTES__ReduceAction63(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction63;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction359_parser___ReduceAction359___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction359();
-  parser___ReduceAction359___init(self, init_table);
-  CHECKNEW_ReduceAction359(self, "parser::ReduceAction359::init for ReduceAction359");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction360[48] = {
-  {(bigint) 2019 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction360 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction360 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2019 /* 3: ReduceAction360 < ReduceAction360: superclass typecheck marker */},
+val_t NEW_ReduceAction63(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction63;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction63(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction63;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction63____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction63_parser___ReduceAction63___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3031;
+  fra.me.meth = LOCATE_NEW_ReduceAction63_parser___ReduceAction63___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3031 */
+  fra.me.REG[0] = NEW_ReduceAction63();
+  INIT_ATTRIBUTES__ReduceAction63(fra.me.REG[0]);
+  parser___ReduceAction63___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction63(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction64[51] = {
+  {(bigint) 583 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction64 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction64 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 583 /* 4: ReduceAction64 < ReduceAction64: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72941,14 +81469,9 @@ const classtable_elt_t VFT_ReduceAction360[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction360 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction64 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -72956,7 +81479,6 @@ const classtable_elt_t VFT_ReduceAction360[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -72964,41 +81486,93 @@ const classtable_elt_t VFT_ReduceAction360[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction360 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction360___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction64 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction64___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction360 < ReduceAction360: superclass init_table position */},
-  {(bigint) parser___ReduceAction360___init},
+  {(bigint) 2 /* 49: ReduceAction64 < ReduceAction64: superclass init_table position */},
+  {(bigint) parser___ReduceAction64___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction360(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction360;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction360(val_t self, char *from) {
-}
-val_t NEW_ReduceAction360_parser___ReduceAction360___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction360();
-  parser___ReduceAction360___init(self, init_table);
-  CHECKNEW_ReduceAction360(self, "parser::ReduceAction360::init for ReduceAction360");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction64::_goto */
+void INIT_ATTRIBUTES__ReduceAction64(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction64;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction361[48] = {
-  {(bigint) 2015 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction361 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction361 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2015 /* 3: ReduceAction361 < ReduceAction361: superclass typecheck marker */},
+val_t NEW_ReduceAction64(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction64;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction64(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction64;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction64____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction64_parser___ReduceAction64___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3055;
+  fra.me.meth = LOCATE_NEW_ReduceAction64_parser___ReduceAction64___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3055 */
+  fra.me.REG[0] = NEW_ReduceAction64();
+  INIT_ATTRIBUTES__ReduceAction64(fra.me.REG[0]);
+  parser___ReduceAction64___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction64(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction65[51] = {
+  {(bigint) 575 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction65 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction65 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 575 /* 4: ReduceAction65 < ReduceAction65: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73011,14 +81585,9 @@ const classtable_elt_t VFT_ReduceAction361[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction361 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction65 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73026,7 +81595,6 @@ const classtable_elt_t VFT_ReduceAction361[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73034,41 +81602,93 @@ const classtable_elt_t VFT_ReduceAction361[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction361 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction361___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction65 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction65___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction361 < ReduceAction361: superclass init_table position */},
-  {(bigint) parser___ReduceAction361___init},
+  {(bigint) 2 /* 49: ReduceAction65 < ReduceAction65: superclass init_table position */},
+  {(bigint) parser___ReduceAction65___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction361(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction361;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction361(val_t self, char *from) {
-}
-val_t NEW_ReduceAction361_parser___ReduceAction361___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction361();
-  parser___ReduceAction361___init(self, init_table);
-  CHECKNEW_ReduceAction361(self, "parser::ReduceAction361::init for ReduceAction361");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction65::_goto */
+void INIT_ATTRIBUTES__ReduceAction65(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction65;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction362[48] = {
-  {(bigint) 2011 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction362 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction362 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2011 /* 3: ReduceAction362 < ReduceAction362: superclass typecheck marker */},
+val_t NEW_ReduceAction65(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction65;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction65(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction65;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction65____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction65_parser___ReduceAction65___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3079;
+  fra.me.meth = LOCATE_NEW_ReduceAction65_parser___ReduceAction65___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3079 */
+  fra.me.REG[0] = NEW_ReduceAction65();
+  INIT_ATTRIBUTES__ReduceAction65(fra.me.REG[0]);
+  parser___ReduceAction65___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction65(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction66[51] = {
+  {(bigint) 563 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction66 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction66 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 563 /* 4: ReduceAction66 < ReduceAction66: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73081,14 +81701,9 @@ const classtable_elt_t VFT_ReduceAction362[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction362 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction66 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73096,7 +81711,6 @@ const classtable_elt_t VFT_ReduceAction362[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73104,41 +81718,93 @@ const classtable_elt_t VFT_ReduceAction362[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction362 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction362___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction66 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction66___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction362 < ReduceAction362: superclass init_table position */},
-  {(bigint) parser___ReduceAction362___init},
+  {(bigint) 2 /* 49: ReduceAction66 < ReduceAction66: superclass init_table position */},
+  {(bigint) parser___ReduceAction66___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction362(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction362;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction362(val_t self, char *from) {
-}
-val_t NEW_ReduceAction362_parser___ReduceAction362___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction362();
-  parser___ReduceAction362___init(self, init_table);
-  CHECKNEW_ReduceAction362(self, "parser::ReduceAction362::init for ReduceAction362");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction66::_goto */
+void INIT_ATTRIBUTES__ReduceAction66(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction66;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction363[48] = {
-  {(bigint) 2007 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction363 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction363 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2007 /* 3: ReduceAction363 < ReduceAction363: superclass typecheck marker */},
+val_t NEW_ReduceAction66(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction66;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction66(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction66;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction66____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction66_parser___ReduceAction66___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3093;
+  fra.me.meth = LOCATE_NEW_ReduceAction66_parser___ReduceAction66___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3093 */
+  fra.me.REG[0] = NEW_ReduceAction66();
+  INIT_ATTRIBUTES__ReduceAction66(fra.me.REG[0]);
+  parser___ReduceAction66___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction66(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction67[51] = {
+  {(bigint) 531 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction67 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction67 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 531 /* 4: ReduceAction67 < ReduceAction67: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73151,14 +81817,9 @@ const classtable_elt_t VFT_ReduceAction363[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction363 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction67 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73166,7 +81827,6 @@ const classtable_elt_t VFT_ReduceAction363[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73174,41 +81834,93 @@ const classtable_elt_t VFT_ReduceAction363[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction363 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction363___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction67 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction67___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction363 < ReduceAction363: superclass init_table position */},
-  {(bigint) parser___ReduceAction363___init},
+  {(bigint) 2 /* 49: ReduceAction67 < ReduceAction67: superclass init_table position */},
+  {(bigint) parser___ReduceAction67___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction363(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction363;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction363(val_t self, char *from) {
-}
-val_t NEW_ReduceAction363_parser___ReduceAction363___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction363();
-  parser___ReduceAction363___init(self, init_table);
-  CHECKNEW_ReduceAction363(self, "parser::ReduceAction363::init for ReduceAction363");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction67::_goto */
+void INIT_ATTRIBUTES__ReduceAction67(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction67;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction364[48] = {
-  {(bigint) 2003 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction364 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction364 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2003 /* 3: ReduceAction364 < ReduceAction364: superclass typecheck marker */},
+val_t NEW_ReduceAction67(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction67;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction67(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction67;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction67____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction67_parser___ReduceAction67___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3132;
+  fra.me.meth = LOCATE_NEW_ReduceAction67_parser___ReduceAction67___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3132 */
+  fra.me.REG[0] = NEW_ReduceAction67();
+  INIT_ATTRIBUTES__ReduceAction67(fra.me.REG[0]);
+  parser___ReduceAction67___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction67(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction68[51] = {
+  {(bigint) 499 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction68 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction68 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 499 /* 4: ReduceAction68 < ReduceAction68: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73221,14 +81933,9 @@ const classtable_elt_t VFT_ReduceAction364[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction364 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction68 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73236,7 +81943,6 @@ const classtable_elt_t VFT_ReduceAction364[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73244,41 +81950,93 @@ const classtable_elt_t VFT_ReduceAction364[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction364 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction364___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction68 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction68___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction364 < ReduceAction364: superclass init_table position */},
-  {(bigint) parser___ReduceAction364___init},
+  {(bigint) 2 /* 49: ReduceAction68 < ReduceAction68: superclass init_table position */},
+  {(bigint) parser___ReduceAction68___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction364(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction364;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction364(val_t self, char *from) {
-}
-val_t NEW_ReduceAction364_parser___ReduceAction364___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction364();
-  parser___ReduceAction364___init(self, init_table);
-  CHECKNEW_ReduceAction364(self, "parser::ReduceAction364::init for ReduceAction364");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction68::_goto */
+void INIT_ATTRIBUTES__ReduceAction68(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction68;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction365[48] = {
-  {(bigint) 1999 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction365 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction365 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1999 /* 3: ReduceAction365 < ReduceAction365: superclass typecheck marker */},
+val_t NEW_ReduceAction68(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction68;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction68(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction68;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction68____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction68_parser___ReduceAction68___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3174;
+  fra.me.meth = LOCATE_NEW_ReduceAction68_parser___ReduceAction68___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3174 */
+  fra.me.REG[0] = NEW_ReduceAction68();
+  INIT_ATTRIBUTES__ReduceAction68(fra.me.REG[0]);
+  parser___ReduceAction68___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction68(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction69[51] = {
+  {(bigint) 475 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction69 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction69 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 475 /* 4: ReduceAction69 < ReduceAction69: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73291,14 +82049,9 @@ const classtable_elt_t VFT_ReduceAction365[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction365 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction69 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73306,7 +82059,6 @@ const classtable_elt_t VFT_ReduceAction365[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73314,41 +82066,93 @@ const classtable_elt_t VFT_ReduceAction365[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction365 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction365___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction69 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction69___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction365 < ReduceAction365: superclass init_table position */},
-  {(bigint) parser___ReduceAction365___init},
+  {(bigint) 2 /* 49: ReduceAction69 < ReduceAction69: superclass init_table position */},
+  {(bigint) parser___ReduceAction69___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction365(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction365;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction365(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction69::_goto */
+void INIT_ATTRIBUTES__ReduceAction69(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction69;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction365_parser___ReduceAction365___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction365();
-  parser___ReduceAction365___init(self, init_table);
-  CHECKNEW_ReduceAction365(self, "parser::ReduceAction365::init for ReduceAction365");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction366[48] = {
-  {(bigint) 1995 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction366 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction366 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1995 /* 3: ReduceAction366 < ReduceAction366: superclass typecheck marker */},
+val_t NEW_ReduceAction69(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction69;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction69(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction69;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction69____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction69_parser___ReduceAction69___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3214;
+  fra.me.meth = LOCATE_NEW_ReduceAction69_parser___ReduceAction69___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3214 */
+  fra.me.REG[0] = NEW_ReduceAction69();
+  INIT_ATTRIBUTES__ReduceAction69(fra.me.REG[0]);
+  parser___ReduceAction69___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction69(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction70[51] = {
+  {(bigint) 455 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction70 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction70 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 455 /* 4: ReduceAction70 < ReduceAction70: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73361,14 +82165,9 @@ const classtable_elt_t VFT_ReduceAction366[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction366 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction70 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73376,7 +82175,6 @@ const classtable_elt_t VFT_ReduceAction366[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73384,41 +82182,93 @@ const classtable_elt_t VFT_ReduceAction366[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction366 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction366___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction70 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction70___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction366 < ReduceAction366: superclass init_table position */},
-  {(bigint) parser___ReduceAction366___init},
+  {(bigint) 2 /* 49: ReduceAction70 < ReduceAction70: superclass init_table position */},
+  {(bigint) parser___ReduceAction70___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction366(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction366;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction366(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction70::_goto */
+void INIT_ATTRIBUTES__ReduceAction70(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction70;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction366_parser___ReduceAction366___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction366();
-  parser___ReduceAction366___init(self, init_table);
-  CHECKNEW_ReduceAction366(self, "parser::ReduceAction366::init for ReduceAction366");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction367[48] = {
-  {(bigint) 1991 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction367 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction367 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1991 /* 3: ReduceAction367 < ReduceAction367: superclass typecheck marker */},
+val_t NEW_ReduceAction70(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction70;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction70(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction70;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction70____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction70_parser___ReduceAction70___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3257;
+  fra.me.meth = LOCATE_NEW_ReduceAction70_parser___ReduceAction70___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3257 */
+  fra.me.REG[0] = NEW_ReduceAction70();
+  INIT_ATTRIBUTES__ReduceAction70(fra.me.REG[0]);
+  parser___ReduceAction70___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction70(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction71[51] = {
+  {(bigint) 451 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction71 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction71 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 451 /* 4: ReduceAction71 < ReduceAction71: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73431,14 +82281,9 @@ const classtable_elt_t VFT_ReduceAction367[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction367 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction71 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73446,7 +82291,6 @@ const classtable_elt_t VFT_ReduceAction367[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73454,41 +82298,93 @@ const classtable_elt_t VFT_ReduceAction367[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction367 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction367___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction71 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction71___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction367 < ReduceAction367: superclass init_table position */},
-  {(bigint) parser___ReduceAction367___init},
+  {(bigint) 2 /* 49: ReduceAction71 < ReduceAction71: superclass init_table position */},
+  {(bigint) parser___ReduceAction71___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction367(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction367;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction71::_goto */
+void INIT_ATTRIBUTES__ReduceAction71(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction71;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction367(val_t self, char *from) {
-}
-val_t NEW_ReduceAction367_parser___ReduceAction367___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction367();
-  parser___ReduceAction367___init(self, init_table);
-  CHECKNEW_ReduceAction367(self, "parser::ReduceAction367::init for ReduceAction367");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction368[48] = {
-  {(bigint) 1987 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction368 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction368 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1987 /* 3: ReduceAction368 < ReduceAction368: superclass typecheck marker */},
+val_t NEW_ReduceAction71(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction71;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction71(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction71;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction71____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction71_parser___ReduceAction71___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3297;
+  fra.me.meth = LOCATE_NEW_ReduceAction71_parser___ReduceAction71___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3297 */
+  fra.me.REG[0] = NEW_ReduceAction71();
+  INIT_ATTRIBUTES__ReduceAction71(fra.me.REG[0]);
+  parser___ReduceAction71___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction71(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction72[51] = {
+  {(bigint) 447 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction72 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction72 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 447 /* 4: ReduceAction72 < ReduceAction72: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73501,14 +82397,9 @@ const classtable_elt_t VFT_ReduceAction368[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction368 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction72 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73516,7 +82407,6 @@ const classtable_elt_t VFT_ReduceAction368[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73524,41 +82414,93 @@ const classtable_elt_t VFT_ReduceAction368[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction368 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction368___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction72 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction72___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction368 < ReduceAction368: superclass init_table position */},
-  {(bigint) parser___ReduceAction368___init},
+  {(bigint) 2 /* 49: ReduceAction72 < ReduceAction72: superclass init_table position */},
+  {(bigint) parser___ReduceAction72___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction368(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction368;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction368(val_t self, char *from) {
-}
-val_t NEW_ReduceAction368_parser___ReduceAction368___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction368();
-  parser___ReduceAction368___init(self, init_table);
-  CHECKNEW_ReduceAction368(self, "parser::ReduceAction368::init for ReduceAction368");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction72::_goto */
+void INIT_ATTRIBUTES__ReduceAction72(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction72;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction369[48] = {
-  {(bigint) 1983 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction369 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction369 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1983 /* 3: ReduceAction369 < ReduceAction369: superclass typecheck marker */},
+val_t NEW_ReduceAction72(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction72;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction72(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction72;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction72____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction72_parser___ReduceAction72___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3340;
+  fra.me.meth = LOCATE_NEW_ReduceAction72_parser___ReduceAction72___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3340 */
+  fra.me.REG[0] = NEW_ReduceAction72();
+  INIT_ATTRIBUTES__ReduceAction72(fra.me.REG[0]);
+  parser___ReduceAction72___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction72(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction73[51] = {
+  {(bigint) 443 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction73 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction73 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 443 /* 4: ReduceAction73 < ReduceAction73: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73571,14 +82513,9 @@ const classtable_elt_t VFT_ReduceAction369[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction369 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction73 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73586,7 +82523,6 @@ const classtable_elt_t VFT_ReduceAction369[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73594,41 +82530,93 @@ const classtable_elt_t VFT_ReduceAction369[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction369 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction369___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction73 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction73___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction369 < ReduceAction369: superclass init_table position */},
-  {(bigint) parser___ReduceAction369___init},
+  {(bigint) 2 /* 49: ReduceAction73 < ReduceAction73: superclass init_table position */},
+  {(bigint) parser___ReduceAction73___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction369(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction369;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction369(val_t self, char *from) {
-}
-val_t NEW_ReduceAction369_parser___ReduceAction369___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction369();
-  parser___ReduceAction369___init(self, init_table);
-  CHECKNEW_ReduceAction369(self, "parser::ReduceAction369::init for ReduceAction369");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction73::_goto */
+void INIT_ATTRIBUTES__ReduceAction73(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction73;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction370[48] = {
-  {(bigint) 1975 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction370 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction370 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1975 /* 3: ReduceAction370 < ReduceAction370: superclass typecheck marker */},
+val_t NEW_ReduceAction73(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction73;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction73(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction73;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction73____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction73_parser___ReduceAction73___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3376;
+  fra.me.meth = LOCATE_NEW_ReduceAction73_parser___ReduceAction73___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3376 */
+  fra.me.REG[0] = NEW_ReduceAction73();
+  INIT_ATTRIBUTES__ReduceAction73(fra.me.REG[0]);
+  parser___ReduceAction73___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction73(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction74[51] = {
+  {(bigint) 439 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction74 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction74 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 439 /* 4: ReduceAction74 < ReduceAction74: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73641,14 +82629,9 @@ const classtable_elt_t VFT_ReduceAction370[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction370 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction74 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73656,7 +82639,6 @@ const classtable_elt_t VFT_ReduceAction370[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73664,41 +82646,93 @@ const classtable_elt_t VFT_ReduceAction370[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction370 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction370___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction74 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction74___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction370 < ReduceAction370: superclass init_table position */},
-  {(bigint) parser___ReduceAction370___init},
+  {(bigint) 2 /* 49: ReduceAction74 < ReduceAction74: superclass init_table position */},
+  {(bigint) parser___ReduceAction74___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction370(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction370;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction370(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction74::_goto */
+void INIT_ATTRIBUTES__ReduceAction74(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction74;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction370_parser___ReduceAction370___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction370();
-  parser___ReduceAction370___init(self, init_table);
-  CHECKNEW_ReduceAction370(self, "parser::ReduceAction370::init for ReduceAction370");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction371[48] = {
-  {(bigint) 1971 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction371 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction371 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1971 /* 3: ReduceAction371 < ReduceAction371: superclass typecheck marker */},
+val_t NEW_ReduceAction74(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction74;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction74(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction74;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction74____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction74_parser___ReduceAction74___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3415;
+  fra.me.meth = LOCATE_NEW_ReduceAction74_parser___ReduceAction74___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3415 */
+  fra.me.REG[0] = NEW_ReduceAction74();
+  INIT_ATTRIBUTES__ReduceAction74(fra.me.REG[0]);
+  parser___ReduceAction74___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction74(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction75[51] = {
+  {(bigint) 435 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction75 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction75 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 435 /* 4: ReduceAction75 < ReduceAction75: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73711,14 +82745,9 @@ const classtable_elt_t VFT_ReduceAction371[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction371 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction75 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73726,7 +82755,6 @@ const classtable_elt_t VFT_ReduceAction371[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73734,41 +82762,93 @@ const classtable_elt_t VFT_ReduceAction371[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction371 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction371___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction75 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction75___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction371 < ReduceAction371: superclass init_table position */},
-  {(bigint) parser___ReduceAction371___init},
+  {(bigint) 2 /* 49: ReduceAction75 < ReduceAction75: superclass init_table position */},
+  {(bigint) parser___ReduceAction75___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction371(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction371;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction371(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction75::_goto */
+void INIT_ATTRIBUTES__ReduceAction75(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction75;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction371_parser___ReduceAction371___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction371();
-  parser___ReduceAction371___init(self, init_table);
-  CHECKNEW_ReduceAction371(self, "parser::ReduceAction371::init for ReduceAction371");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction372[48] = {
-  {(bigint) 1967 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction372 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction372 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1967 /* 3: ReduceAction372 < ReduceAction372: superclass typecheck marker */},
+val_t NEW_ReduceAction75(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction75;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction75(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction75;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction75____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction75_parser___ReduceAction75___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3451;
+  fra.me.meth = LOCATE_NEW_ReduceAction75_parser___ReduceAction75___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3451 */
+  fra.me.REG[0] = NEW_ReduceAction75();
+  INIT_ATTRIBUTES__ReduceAction75(fra.me.REG[0]);
+  parser___ReduceAction75___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction75(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction76[51] = {
+  {(bigint) 431 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction76 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction76 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 431 /* 4: ReduceAction76 < ReduceAction76: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73781,14 +82861,9 @@ const classtable_elt_t VFT_ReduceAction372[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction372 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction76 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73796,7 +82871,6 @@ const classtable_elt_t VFT_ReduceAction372[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73804,41 +82878,93 @@ const classtable_elt_t VFT_ReduceAction372[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction372 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction372___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction76 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction76___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction372 < ReduceAction372: superclass init_table position */},
-  {(bigint) parser___ReduceAction372___init},
+  {(bigint) 2 /* 49: ReduceAction76 < ReduceAction76: superclass init_table position */},
+  {(bigint) parser___ReduceAction76___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction372(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction372;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction372(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction76::_goto */
+void INIT_ATTRIBUTES__ReduceAction76(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction76;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction372_parser___ReduceAction372___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction372();
-  parser___ReduceAction372___init(self, init_table);
-  CHECKNEW_ReduceAction372(self, "parser::ReduceAction372::init for ReduceAction372");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction373[48] = {
-  {(bigint) 1963 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction373 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction373 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1963 /* 3: ReduceAction373 < ReduceAction373: superclass typecheck marker */},
+val_t NEW_ReduceAction76(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction76;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction76(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction76;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction76____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction76_parser___ReduceAction76___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3490;
+  fra.me.meth = LOCATE_NEW_ReduceAction76_parser___ReduceAction76___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3490 */
+  fra.me.REG[0] = NEW_ReduceAction76();
+  INIT_ATTRIBUTES__ReduceAction76(fra.me.REG[0]);
+  parser___ReduceAction76___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction76(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction77[51] = {
+  {(bigint) 427 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction77 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction77 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 427 /* 4: ReduceAction77 < ReduceAction77: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73851,14 +82977,9 @@ const classtable_elt_t VFT_ReduceAction373[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction373 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction77 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73866,7 +82987,6 @@ const classtable_elt_t VFT_ReduceAction373[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73874,41 +82994,93 @@ const classtable_elt_t VFT_ReduceAction373[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction373 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction373___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction77 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction77___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction373 < ReduceAction373: superclass init_table position */},
-  {(bigint) parser___ReduceAction373___init},
+  {(bigint) 2 /* 49: ReduceAction77 < ReduceAction77: superclass init_table position */},
+  {(bigint) parser___ReduceAction77___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction373(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction373;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction373(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction77::_goto */
+void INIT_ATTRIBUTES__ReduceAction77(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction77;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction373_parser___ReduceAction373___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction373();
-  parser___ReduceAction373___init(self, init_table);
-  CHECKNEW_ReduceAction373(self, "parser::ReduceAction373::init for ReduceAction373");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction374[48] = {
-  {(bigint) 1959 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction374 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction374 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1959 /* 3: ReduceAction374 < ReduceAction374: superclass typecheck marker */},
+val_t NEW_ReduceAction77(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction77;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction77(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction77;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction77____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction77_parser___ReduceAction77___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3527;
+  fra.me.meth = LOCATE_NEW_ReduceAction77_parser___ReduceAction77___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3527 */
+  fra.me.REG[0] = NEW_ReduceAction77();
+  INIT_ATTRIBUTES__ReduceAction77(fra.me.REG[0]);
+  parser___ReduceAction77___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction77(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction78[51] = {
+  {(bigint) 423 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction78 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction78 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 423 /* 4: ReduceAction78 < ReduceAction78: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73921,14 +83093,9 @@ const classtable_elt_t VFT_ReduceAction374[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction374 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction78 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -73936,7 +83103,6 @@ const classtable_elt_t VFT_ReduceAction374[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -73944,41 +83110,93 @@ const classtable_elt_t VFT_ReduceAction374[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction374 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction374___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction78 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction78___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction374 < ReduceAction374: superclass init_table position */},
-  {(bigint) parser___ReduceAction374___init},
+  {(bigint) 2 /* 49: ReduceAction78 < ReduceAction78: superclass init_table position */},
+  {(bigint) parser___ReduceAction78___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction374(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction374;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction374(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction78::_goto */
+void INIT_ATTRIBUTES__ReduceAction78(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction78;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction374_parser___ReduceAction374___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction374();
-  parser___ReduceAction374___init(self, init_table);
-  CHECKNEW_ReduceAction374(self, "parser::ReduceAction374::init for ReduceAction374");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction375[48] = {
-  {(bigint) 1955 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction375 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction375 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1955 /* 3: ReduceAction375 < ReduceAction375: superclass typecheck marker */},
+val_t NEW_ReduceAction78(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction78;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction78(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction78;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction78____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction78_parser___ReduceAction78___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3567;
+  fra.me.meth = LOCATE_NEW_ReduceAction78_parser___ReduceAction78___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3567 */
+  fra.me.REG[0] = NEW_ReduceAction78();
+  INIT_ATTRIBUTES__ReduceAction78(fra.me.REG[0]);
+  parser___ReduceAction78___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction78(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction79[51] = {
+  {(bigint) 419 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction79 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction79 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 419 /* 4: ReduceAction79 < ReduceAction79: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73991,14 +83209,9 @@ const classtable_elt_t VFT_ReduceAction375[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction375 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction79 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74006,7 +83219,6 @@ const classtable_elt_t VFT_ReduceAction375[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74014,41 +83226,93 @@ const classtable_elt_t VFT_ReduceAction375[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction375 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction375___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction79 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction79___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction375 < ReduceAction375: superclass init_table position */},
-  {(bigint) parser___ReduceAction375___init},
+  {(bigint) 2 /* 49: ReduceAction79 < ReduceAction79: superclass init_table position */},
+  {(bigint) parser___ReduceAction79___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction375(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction375;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction375(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction79::_goto */
+void INIT_ATTRIBUTES__ReduceAction79(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction79;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction375_parser___ReduceAction375___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction375();
-  parser___ReduceAction375___init(self, init_table);
-  CHECKNEW_ReduceAction375(self, "parser::ReduceAction375::init for ReduceAction375");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction376[48] = {
-  {(bigint) 1951 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction376 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction376 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1951 /* 3: ReduceAction376 < ReduceAction376: superclass typecheck marker */},
+val_t NEW_ReduceAction79(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction79;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction79(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction79;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction79____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction79_parser___ReduceAction79___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3607;
+  fra.me.meth = LOCATE_NEW_ReduceAction79_parser___ReduceAction79___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3607 */
+  fra.me.REG[0] = NEW_ReduceAction79();
+  INIT_ATTRIBUTES__ReduceAction79(fra.me.REG[0]);
+  parser___ReduceAction79___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction79(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction80[51] = {
+  {(bigint) 411 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction80 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction80 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 411 /* 4: ReduceAction80 < ReduceAction80: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74061,14 +83325,9 @@ const classtable_elt_t VFT_ReduceAction376[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction376 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction80 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74076,7 +83335,6 @@ const classtable_elt_t VFT_ReduceAction376[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74084,41 +83342,93 @@ const classtable_elt_t VFT_ReduceAction376[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction376 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction376___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction80 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction80___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction376 < ReduceAction376: superclass init_table position */},
-  {(bigint) parser___ReduceAction376___init},
+  {(bigint) 2 /* 49: ReduceAction80 < ReduceAction80: superclass init_table position */},
+  {(bigint) parser___ReduceAction80___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction376(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction376;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction376(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction80::_goto */
+void INIT_ATTRIBUTES__ReduceAction80(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction80;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction376_parser___ReduceAction376___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction376();
-  parser___ReduceAction376___init(self, init_table);
-  CHECKNEW_ReduceAction376(self, "parser::ReduceAction376::init for ReduceAction376");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction377[48] = {
-  {(bigint) 1947 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction377 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction377 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1947 /* 3: ReduceAction377 < ReduceAction377: superclass typecheck marker */},
+val_t NEW_ReduceAction80(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction80;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction80(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction80;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction80____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction80_parser___ReduceAction80___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3650;
+  fra.me.meth = LOCATE_NEW_ReduceAction80_parser___ReduceAction80___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3650 */
+  fra.me.REG[0] = NEW_ReduceAction80();
+  INIT_ATTRIBUTES__ReduceAction80(fra.me.REG[0]);
+  parser___ReduceAction80___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction80(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction81[51] = {
+  {(bigint) 407 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction81 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction81 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 407 /* 4: ReduceAction81 < ReduceAction81: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74131,14 +83441,9 @@ const classtable_elt_t VFT_ReduceAction377[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction377 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction81 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74146,7 +83451,6 @@ const classtable_elt_t VFT_ReduceAction377[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74154,41 +83458,93 @@ const classtable_elt_t VFT_ReduceAction377[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction377 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction377___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction81 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction81___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction377 < ReduceAction377: superclass init_table position */},
-  {(bigint) parser___ReduceAction377___init},
+  {(bigint) 2 /* 49: ReduceAction81 < ReduceAction81: superclass init_table position */},
+  {(bigint) parser___ReduceAction81___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction377(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction377;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction377(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction81::_goto */
+void INIT_ATTRIBUTES__ReduceAction81(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction81;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction377_parser___ReduceAction377___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction377();
-  parser___ReduceAction377___init(self, init_table);
-  CHECKNEW_ReduceAction377(self, "parser::ReduceAction377::init for ReduceAction377");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction378[48] = {
-  {(bigint) 1943 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction378 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction378 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1943 /* 3: ReduceAction378 < ReduceAction378: superclass typecheck marker */},
+val_t NEW_ReduceAction81(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction81;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction81(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction81;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction81____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction81_parser___ReduceAction81___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3685;
+  fra.me.meth = LOCATE_NEW_ReduceAction81_parser___ReduceAction81___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3685 */
+  fra.me.REG[0] = NEW_ReduceAction81();
+  INIT_ATTRIBUTES__ReduceAction81(fra.me.REG[0]);
+  parser___ReduceAction81___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction81(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction82[51] = {
+  {(bigint) 403 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction82 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction82 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 403 /* 4: ReduceAction82 < ReduceAction82: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74201,14 +83557,9 @@ const classtable_elt_t VFT_ReduceAction378[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction378 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction82 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74216,7 +83567,6 @@ const classtable_elt_t VFT_ReduceAction378[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74224,41 +83574,93 @@ const classtable_elt_t VFT_ReduceAction378[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction378 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction378___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction82 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction82___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction378 < ReduceAction378: superclass init_table position */},
-  {(bigint) parser___ReduceAction378___init},
+  {(bigint) 2 /* 49: ReduceAction82 < ReduceAction82: superclass init_table position */},
+  {(bigint) parser___ReduceAction82___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction378(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction378;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction378(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction82::_goto */
+void INIT_ATTRIBUTES__ReduceAction82(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction82;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction378_parser___ReduceAction378___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction378();
-  parser___ReduceAction378___init(self, init_table);
-  CHECKNEW_ReduceAction378(self, "parser::ReduceAction378::init for ReduceAction378");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction379[48] = {
-  {(bigint) 1939 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction379 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction379 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1939 /* 3: ReduceAction379 < ReduceAction379: superclass typecheck marker */},
+val_t NEW_ReduceAction82(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction82;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction82(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction82;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction82____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction82_parser___ReduceAction82___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3723;
+  fra.me.meth = LOCATE_NEW_ReduceAction82_parser___ReduceAction82___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3723 */
+  fra.me.REG[0] = NEW_ReduceAction82();
+  INIT_ATTRIBUTES__ReduceAction82(fra.me.REG[0]);
+  parser___ReduceAction82___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction82(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction83[51] = {
+  {(bigint) 399 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction83 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction83 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 399 /* 4: ReduceAction83 < ReduceAction83: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74271,14 +83673,9 @@ const classtable_elt_t VFT_ReduceAction379[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction379 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction83 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74286,7 +83683,6 @@ const classtable_elt_t VFT_ReduceAction379[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74294,41 +83690,93 @@ const classtable_elt_t VFT_ReduceAction379[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction379 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction379___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction379 < ReduceAction379: superclass init_table position */},
-  {(bigint) parser___ReduceAction379___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction379(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction379;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction379(val_t self, char *from) {
-}
-val_t NEW_ReduceAction379_parser___ReduceAction379___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction379();
-  parser___ReduceAction379___init(self, init_table);
-  CHECKNEW_ReduceAction379(self, "parser::ReduceAction379::init for ReduceAction379");
-  return self;
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction83 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction83___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 49: ReduceAction83 < ReduceAction83: superclass init_table position */},
+  {(bigint) parser___ReduceAction83___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction83::_goto */
+void INIT_ATTRIBUTES__ReduceAction83(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction83;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction380[48] = {
-  {(bigint) 1931 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction380 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction380 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1931 /* 3: ReduceAction380 < ReduceAction380: superclass typecheck marker */},
+val_t NEW_ReduceAction83(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction83;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction83(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction83;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction83____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction83_parser___ReduceAction83___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3761;
+  fra.me.meth = LOCATE_NEW_ReduceAction83_parser___ReduceAction83___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3761 */
+  fra.me.REG[0] = NEW_ReduceAction83();
+  INIT_ATTRIBUTES__ReduceAction83(fra.me.REG[0]);
+  parser___ReduceAction83___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction83(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction84[51] = {
+  {(bigint) 395 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction84 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction84 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 395 /* 4: ReduceAction84 < ReduceAction84: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74341,14 +83789,9 @@ const classtable_elt_t VFT_ReduceAction380[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction380 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction84 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74356,7 +83799,6 @@ const classtable_elt_t VFT_ReduceAction380[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74364,41 +83806,93 @@ const classtable_elt_t VFT_ReduceAction380[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction380 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction380___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction84 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction84___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction380 < ReduceAction380: superclass init_table position */},
-  {(bigint) parser___ReduceAction380___init},
+  {(bigint) 2 /* 49: ReduceAction84 < ReduceAction84: superclass init_table position */},
+  {(bigint) parser___ReduceAction84___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction380(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction380;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction380(val_t self, char *from) {
-}
-val_t NEW_ReduceAction380_parser___ReduceAction380___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction380();
-  parser___ReduceAction380___init(self, init_table);
-  CHECKNEW_ReduceAction380(self, "parser::ReduceAction380::init for ReduceAction380");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction84::_goto */
+void INIT_ATTRIBUTES__ReduceAction84(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction84;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction381[48] = {
-  {(bigint) 1927 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction381 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction381 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1927 /* 3: ReduceAction381 < ReduceAction381: superclass typecheck marker */},
+val_t NEW_ReduceAction84(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction84;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction84(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction84;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction84____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction84_parser___ReduceAction84___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3802;
+  fra.me.meth = LOCATE_NEW_ReduceAction84_parser___ReduceAction84___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3802 */
+  fra.me.REG[0] = NEW_ReduceAction84();
+  INIT_ATTRIBUTES__ReduceAction84(fra.me.REG[0]);
+  parser___ReduceAction84___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction84(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction85[51] = {
+  {(bigint) 391 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction85 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction85 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 391 /* 4: ReduceAction85 < ReduceAction85: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74411,14 +83905,9 @@ const classtable_elt_t VFT_ReduceAction381[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction381 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction85 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74426,7 +83915,6 @@ const classtable_elt_t VFT_ReduceAction381[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74434,41 +83922,93 @@ const classtable_elt_t VFT_ReduceAction381[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction381 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction381___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction85 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction85___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction381 < ReduceAction381: superclass init_table position */},
-  {(bigint) parser___ReduceAction381___init},
+  {(bigint) 2 /* 49: ReduceAction85 < ReduceAction85: superclass init_table position */},
+  {(bigint) parser___ReduceAction85___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction381(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction381;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction381(val_t self, char *from) {
-}
-val_t NEW_ReduceAction381_parser___ReduceAction381___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction381();
-  parser___ReduceAction381___init(self, init_table);
-  CHECKNEW_ReduceAction381(self, "parser::ReduceAction381::init for ReduceAction381");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction85::_goto */
+void INIT_ATTRIBUTES__ReduceAction85(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction85;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction382[48] = {
-  {(bigint) 1923 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction382 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction382 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1923 /* 3: ReduceAction382 < ReduceAction382: superclass typecheck marker */},
+val_t NEW_ReduceAction85(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction85;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction85(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction85;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction85____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction85_parser___ReduceAction85___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3840;
+  fra.me.meth = LOCATE_NEW_ReduceAction85_parser___ReduceAction85___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3840 */
+  fra.me.REG[0] = NEW_ReduceAction85();
+  INIT_ATTRIBUTES__ReduceAction85(fra.me.REG[0]);
+  parser___ReduceAction85___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction85(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction86[51] = {
+  {(bigint) 387 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction86 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction86 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 387 /* 4: ReduceAction86 < ReduceAction86: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74481,14 +84021,9 @@ const classtable_elt_t VFT_ReduceAction382[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction382 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction86 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74496,7 +84031,6 @@ const classtable_elt_t VFT_ReduceAction382[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74504,41 +84038,93 @@ const classtable_elt_t VFT_ReduceAction382[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction382 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction382___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction86 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction86___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction382 < ReduceAction382: superclass init_table position */},
-  {(bigint) parser___ReduceAction382___init},
+  {(bigint) 2 /* 49: ReduceAction86 < ReduceAction86: superclass init_table position */},
+  {(bigint) parser___ReduceAction86___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction382(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction382;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction382(val_t self, char *from) {
-}
-val_t NEW_ReduceAction382_parser___ReduceAction382___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction382();
-  parser___ReduceAction382___init(self, init_table);
-  CHECKNEW_ReduceAction382(self, "parser::ReduceAction382::init for ReduceAction382");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction86::_goto */
+void INIT_ATTRIBUTES__ReduceAction86(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction86;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction383[48] = {
-  {(bigint) 1919 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction383 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction383 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1919 /* 3: ReduceAction383 < ReduceAction383: superclass typecheck marker */},
+val_t NEW_ReduceAction86(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction86;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction86(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction86;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction86____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction86_parser___ReduceAction86___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3881;
+  fra.me.meth = LOCATE_NEW_ReduceAction86_parser___ReduceAction86___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3881 */
+  fra.me.REG[0] = NEW_ReduceAction86();
+  INIT_ATTRIBUTES__ReduceAction86(fra.me.REG[0]);
+  parser___ReduceAction86___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction86(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction87[51] = {
+  {(bigint) 383 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction87 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction87 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 383 /* 4: ReduceAction87 < ReduceAction87: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74551,14 +84137,9 @@ const classtable_elt_t VFT_ReduceAction383[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction383 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction87 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74566,7 +84147,6 @@ const classtable_elt_t VFT_ReduceAction383[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74574,41 +84154,93 @@ const classtable_elt_t VFT_ReduceAction383[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction383 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction383___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction87 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction87___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction383 < ReduceAction383: superclass init_table position */},
-  {(bigint) parser___ReduceAction383___init},
+  {(bigint) 2 /* 49: ReduceAction87 < ReduceAction87: superclass init_table position */},
+  {(bigint) parser___ReduceAction87___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction383(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction383;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction383(val_t self, char *from) {
-}
-val_t NEW_ReduceAction383_parser___ReduceAction383___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction383();
-  parser___ReduceAction383___init(self, init_table);
-  CHECKNEW_ReduceAction383(self, "parser::ReduceAction383::init for ReduceAction383");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction87::_goto */
+void INIT_ATTRIBUTES__ReduceAction87(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction87;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction384[48] = {
-  {(bigint) 1915 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction384 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction384 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1915 /* 3: ReduceAction384 < ReduceAction384: superclass typecheck marker */},
+val_t NEW_ReduceAction87(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction87;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction87(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction87;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction87____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction87_parser___ReduceAction87___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3922;
+  fra.me.meth = LOCATE_NEW_ReduceAction87_parser___ReduceAction87___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3922 */
+  fra.me.REG[0] = NEW_ReduceAction87();
+  INIT_ATTRIBUTES__ReduceAction87(fra.me.REG[0]);
+  parser___ReduceAction87___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction87(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction88[51] = {
+  {(bigint) 379 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction88 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction88 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 379 /* 4: ReduceAction88 < ReduceAction88: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74621,14 +84253,9 @@ const classtable_elt_t VFT_ReduceAction384[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction384 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction88 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74636,7 +84263,6 @@ const classtable_elt_t VFT_ReduceAction384[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74644,41 +84270,93 @@ const classtable_elt_t VFT_ReduceAction384[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction384 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction384___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction88 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction88___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction384 < ReduceAction384: superclass init_table position */},
-  {(bigint) parser___ReduceAction384___init},
+  {(bigint) 2 /* 49: ReduceAction88 < ReduceAction88: superclass init_table position */},
+  {(bigint) parser___ReduceAction88___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction384(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction384;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction88::_goto */
+void INIT_ATTRIBUTES__ReduceAction88(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction88;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction384(val_t self, char *from) {
-}
-val_t NEW_ReduceAction384_parser___ReduceAction384___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction384();
-  parser___ReduceAction384___init(self, init_table);
-  CHECKNEW_ReduceAction384(self, "parser::ReduceAction384::init for ReduceAction384");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction385[48] = {
-  {(bigint) 1911 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction385 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction385 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1911 /* 3: ReduceAction385 < ReduceAction385: superclass typecheck marker */},
+val_t NEW_ReduceAction88(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction88;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction88(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction88;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction88____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction88_parser___ReduceAction88___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 3966;
+  fra.me.meth = LOCATE_NEW_ReduceAction88_parser___ReduceAction88___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:3966 */
+  fra.me.REG[0] = NEW_ReduceAction88();
+  INIT_ATTRIBUTES__ReduceAction88(fra.me.REG[0]);
+  parser___ReduceAction88___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction88(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction89[51] = {
+  {(bigint) 375 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction89 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction89 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 375 /* 4: ReduceAction89 < ReduceAction89: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74691,14 +84369,9 @@ const classtable_elt_t VFT_ReduceAction385[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction385 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction89 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74706,7 +84379,6 @@ const classtable_elt_t VFT_ReduceAction385[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74714,41 +84386,93 @@ const classtable_elt_t VFT_ReduceAction385[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction385 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction385___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction89 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction89___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction385 < ReduceAction385: superclass init_table position */},
-  {(bigint) parser___ReduceAction385___init},
+  {(bigint) 2 /* 49: ReduceAction89 < ReduceAction89: superclass init_table position */},
+  {(bigint) parser___ReduceAction89___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction385(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction385;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction385(val_t self, char *from) {
-}
-val_t NEW_ReduceAction385_parser___ReduceAction385___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction385();
-  parser___ReduceAction385___init(self, init_table);
-  CHECKNEW_ReduceAction385(self, "parser::ReduceAction385::init for ReduceAction385");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction89::_goto */
+void INIT_ATTRIBUTES__ReduceAction89(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction89;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction386[48] = {
-  {(bigint) 1907 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction386 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction386 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1907 /* 3: ReduceAction386 < ReduceAction386: superclass typecheck marker */},
+val_t NEW_ReduceAction89(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction89;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction89(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction89;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction89____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction89_parser___ReduceAction89___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4004;
+  fra.me.meth = LOCATE_NEW_ReduceAction89_parser___ReduceAction89___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4004 */
+  fra.me.REG[0] = NEW_ReduceAction89();
+  INIT_ATTRIBUTES__ReduceAction89(fra.me.REG[0]);
+  parser___ReduceAction89___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction89(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction90[51] = {
+  {(bigint) 367 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction90 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction90 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 367 /* 4: ReduceAction90 < ReduceAction90: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74761,14 +84485,9 @@ const classtable_elt_t VFT_ReduceAction386[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction386 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction90 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74776,7 +84495,6 @@ const classtable_elt_t VFT_ReduceAction386[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74784,41 +84502,93 @@ const classtable_elt_t VFT_ReduceAction386[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction386 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction386___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction90 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction90___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction386 < ReduceAction386: superclass init_table position */},
-  {(bigint) parser___ReduceAction386___init},
+  {(bigint) 2 /* 49: ReduceAction90 < ReduceAction90: superclass init_table position */},
+  {(bigint) parser___ReduceAction90___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction386(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction386;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction386(val_t self, char *from) {
-}
-val_t NEW_ReduceAction386_parser___ReduceAction386___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction386();
-  parser___ReduceAction386___init(self, init_table);
-  CHECKNEW_ReduceAction386(self, "parser::ReduceAction386::init for ReduceAction386");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction90::_goto */
+void INIT_ATTRIBUTES__ReduceAction90(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction90;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction387[48] = {
-  {(bigint) 1903 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction387 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction387 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1903 /* 3: ReduceAction387 < ReduceAction387: superclass typecheck marker */},
+val_t NEW_ReduceAction90(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction90;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction90(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction90;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction90____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction90_parser___ReduceAction90___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4045;
+  fra.me.meth = LOCATE_NEW_ReduceAction90_parser___ReduceAction90___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4045 */
+  fra.me.REG[0] = NEW_ReduceAction90();
+  INIT_ATTRIBUTES__ReduceAction90(fra.me.REG[0]);
+  parser___ReduceAction90___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction90(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction91[51] = {
+  {(bigint) 363 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction91 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction91 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 363 /* 4: ReduceAction91 < ReduceAction91: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74831,14 +84601,9 @@ const classtable_elt_t VFT_ReduceAction387[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction387 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction91 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74846,7 +84611,6 @@ const classtable_elt_t VFT_ReduceAction387[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74854,41 +84618,93 @@ const classtable_elt_t VFT_ReduceAction387[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction387 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction387___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction91 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction91___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction387 < ReduceAction387: superclass init_table position */},
-  {(bigint) parser___ReduceAction387___init},
+  {(bigint) 2 /* 49: ReduceAction91 < ReduceAction91: superclass init_table position */},
+  {(bigint) parser___ReduceAction91___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction387(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction387;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction387(val_t self, char *from) {
-}
-val_t NEW_ReduceAction387_parser___ReduceAction387___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction387();
-  parser___ReduceAction387___init(self, init_table);
-  CHECKNEW_ReduceAction387(self, "parser::ReduceAction387::init for ReduceAction387");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction91::_goto */
+void INIT_ATTRIBUTES__ReduceAction91(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction91;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction388[48] = {
-  {(bigint) 1899 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction388 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction388 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1899 /* 3: ReduceAction388 < ReduceAction388: superclass typecheck marker */},
+val_t NEW_ReduceAction91(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction91;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction91(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction91;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction91____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction91_parser___ReduceAction91___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4086;
+  fra.me.meth = LOCATE_NEW_ReduceAction91_parser___ReduceAction91___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4086 */
+  fra.me.REG[0] = NEW_ReduceAction91();
+  INIT_ATTRIBUTES__ReduceAction91(fra.me.REG[0]);
+  parser___ReduceAction91___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction91(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction92[51] = {
+  {(bigint) 359 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction92 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction92 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 359 /* 4: ReduceAction92 < ReduceAction92: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74901,14 +84717,9 @@ const classtable_elt_t VFT_ReduceAction388[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction388 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction92 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74916,7 +84727,6 @@ const classtable_elt_t VFT_ReduceAction388[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74924,41 +84734,93 @@ const classtable_elt_t VFT_ReduceAction388[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction388 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction388___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction92 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction92___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction388 < ReduceAction388: superclass init_table position */},
-  {(bigint) parser___ReduceAction388___init},
+  {(bigint) 2 /* 49: ReduceAction92 < ReduceAction92: superclass init_table position */},
+  {(bigint) parser___ReduceAction92___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction388(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction388;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction92::_goto */
+void INIT_ATTRIBUTES__ReduceAction92(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction92;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction388(val_t self, char *from) {
-}
-val_t NEW_ReduceAction388_parser___ReduceAction388___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction388();
-  parser___ReduceAction388___init(self, init_table);
-  CHECKNEW_ReduceAction388(self, "parser::ReduceAction388::init for ReduceAction388");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction389[48] = {
-  {(bigint) 1895 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction389 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction389 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1895 /* 3: ReduceAction389 < ReduceAction389: superclass typecheck marker */},
+val_t NEW_ReduceAction92(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction92;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction92(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction92;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction92____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction92_parser___ReduceAction92___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4130;
+  fra.me.meth = LOCATE_NEW_ReduceAction92_parser___ReduceAction92___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4130 */
+  fra.me.REG[0] = NEW_ReduceAction92();
+  INIT_ATTRIBUTES__ReduceAction92(fra.me.REG[0]);
+  parser___ReduceAction92___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction92(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction93[51] = {
+  {(bigint) 355 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction93 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction93 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 355 /* 4: ReduceAction93 < ReduceAction93: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74971,14 +84833,9 @@ const classtable_elt_t VFT_ReduceAction389[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction389 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction93 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -74986,7 +84843,6 @@ const classtable_elt_t VFT_ReduceAction389[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -74994,41 +84850,93 @@ const classtable_elt_t VFT_ReduceAction389[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction389 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction389___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction93 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction93___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction389 < ReduceAction389: superclass init_table position */},
-  {(bigint) parser___ReduceAction389___init},
+  {(bigint) 2 /* 49: ReduceAction93 < ReduceAction93: superclass init_table position */},
+  {(bigint) parser___ReduceAction93___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction389(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction389;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction389(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction93::_goto */
+void INIT_ATTRIBUTES__ReduceAction93(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction93;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction389_parser___ReduceAction389___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction389();
-  parser___ReduceAction389___init(self, init_table);
-  CHECKNEW_ReduceAction389(self, "parser::ReduceAction389::init for ReduceAction389");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction390[48] = {
-  {(bigint) 1887 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction390 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction390 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1887 /* 3: ReduceAction390 < ReduceAction390: superclass typecheck marker */},
+val_t NEW_ReduceAction93(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction93;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction93(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction93;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction93____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction93_parser___ReduceAction93___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4171;
+  fra.me.meth = LOCATE_NEW_ReduceAction93_parser___ReduceAction93___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4171 */
+  fra.me.REG[0] = NEW_ReduceAction93();
+  INIT_ATTRIBUTES__ReduceAction93(fra.me.REG[0]);
+  parser___ReduceAction93___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction93(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction94[51] = {
+  {(bigint) 351 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction94 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction94 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 351 /* 4: ReduceAction94 < ReduceAction94: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75041,14 +84949,9 @@ const classtable_elt_t VFT_ReduceAction390[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction390 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction94 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75056,7 +84959,6 @@ const classtable_elt_t VFT_ReduceAction390[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75064,41 +84966,93 @@ const classtable_elt_t VFT_ReduceAction390[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction390 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction390___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction94 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction94___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction390 < ReduceAction390: superclass init_table position */},
-  {(bigint) parser___ReduceAction390___init},
+  {(bigint) 2 /* 49: ReduceAction94 < ReduceAction94: superclass init_table position */},
+  {(bigint) parser___ReduceAction94___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction390(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction390;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction94::_goto */
+void INIT_ATTRIBUTES__ReduceAction94(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction94;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction390(val_t self, char *from) {
-}
-val_t NEW_ReduceAction390_parser___ReduceAction390___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction390();
-  parser___ReduceAction390___init(self, init_table);
-  CHECKNEW_ReduceAction390(self, "parser::ReduceAction390::init for ReduceAction390");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction391[48] = {
-  {(bigint) 1883 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction391 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction391 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1883 /* 3: ReduceAction391 < ReduceAction391: superclass typecheck marker */},
+val_t NEW_ReduceAction94(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction94;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction94(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction94;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction94____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction94_parser___ReduceAction94___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4215;
+  fra.me.meth = LOCATE_NEW_ReduceAction94_parser___ReduceAction94___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4215 */
+  fra.me.REG[0] = NEW_ReduceAction94();
+  INIT_ATTRIBUTES__ReduceAction94(fra.me.REG[0]);
+  parser___ReduceAction94___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction94(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction95[51] = {
+  {(bigint) 347 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction95 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction95 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 347 /* 4: ReduceAction95 < ReduceAction95: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75111,14 +85065,9 @@ const classtable_elt_t VFT_ReduceAction391[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction391 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction95 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75126,7 +85075,6 @@ const classtable_elt_t VFT_ReduceAction391[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75134,41 +85082,93 @@ const classtable_elt_t VFT_ReduceAction391[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction391 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction391___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction95 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction95___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction391 < ReduceAction391: superclass init_table position */},
-  {(bigint) parser___ReduceAction391___init},
+  {(bigint) 2 /* 49: ReduceAction95 < ReduceAction95: superclass init_table position */},
+  {(bigint) parser___ReduceAction95___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction391(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction391;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction391(val_t self, char *from) {
-}
-val_t NEW_ReduceAction391_parser___ReduceAction391___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction391();
-  parser___ReduceAction391___init(self, init_table);
-  CHECKNEW_ReduceAction391(self, "parser::ReduceAction391::init for ReduceAction391");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction95::_goto */
+void INIT_ATTRIBUTES__ReduceAction95(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction95;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction392[48] = {
-  {(bigint) 1879 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction392 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction392 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1879 /* 3: ReduceAction392 < ReduceAction392: superclass typecheck marker */},
+val_t NEW_ReduceAction95(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction95;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction95(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction95;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction95____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction95_parser___ReduceAction95___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4259;
+  fra.me.meth = LOCATE_NEW_ReduceAction95_parser___ReduceAction95___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4259 */
+  fra.me.REG[0] = NEW_ReduceAction95();
+  INIT_ATTRIBUTES__ReduceAction95(fra.me.REG[0]);
+  parser___ReduceAction95___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction95(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction96[51] = {
+  {(bigint) 343 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction96 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction96 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 343 /* 4: ReduceAction96 < ReduceAction96: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75181,14 +85181,9 @@ const classtable_elt_t VFT_ReduceAction392[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction392 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction96 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75196,7 +85191,6 @@ const classtable_elt_t VFT_ReduceAction392[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75204,41 +85198,93 @@ const classtable_elt_t VFT_ReduceAction392[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction392 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction392___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction96 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction96___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction392 < ReduceAction392: superclass init_table position */},
-  {(bigint) parser___ReduceAction392___init},
+  {(bigint) 2 /* 49: ReduceAction96 < ReduceAction96: superclass init_table position */},
+  {(bigint) parser___ReduceAction96___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction392(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction392;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction392(val_t self, char *from) {
-}
-val_t NEW_ReduceAction392_parser___ReduceAction392___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction392();
-  parser___ReduceAction392___init(self, init_table);
-  CHECKNEW_ReduceAction392(self, "parser::ReduceAction392::init for ReduceAction392");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction96::_goto */
+void INIT_ATTRIBUTES__ReduceAction96(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction96;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction393[48] = {
-  {(bigint) 1875 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction393 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction393 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1875 /* 3: ReduceAction393 < ReduceAction393: superclass typecheck marker */},
+val_t NEW_ReduceAction96(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction96;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction96(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction96;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction96____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction96_parser___ReduceAction96___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4306;
+  fra.me.meth = LOCATE_NEW_ReduceAction96_parser___ReduceAction96___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4306 */
+  fra.me.REG[0] = NEW_ReduceAction96();
+  INIT_ATTRIBUTES__ReduceAction96(fra.me.REG[0]);
+  parser___ReduceAction96___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction96(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction97[51] = {
+  {(bigint) 339 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction97 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction97 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 339 /* 4: ReduceAction97 < ReduceAction97: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75251,14 +85297,9 @@ const classtable_elt_t VFT_ReduceAction393[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction393 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction97 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75266,7 +85307,6 @@ const classtable_elt_t VFT_ReduceAction393[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75274,41 +85314,93 @@ const classtable_elt_t VFT_ReduceAction393[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction393 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction393___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction97 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction97___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction393 < ReduceAction393: superclass init_table position */},
-  {(bigint) parser___ReduceAction393___init},
+  {(bigint) 2 /* 49: ReduceAction97 < ReduceAction97: superclass init_table position */},
+  {(bigint) parser___ReduceAction97___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction393(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction393;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction393(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction97::_goto */
+void INIT_ATTRIBUTES__ReduceAction97(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction97;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction393_parser___ReduceAction393___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction393();
-  parser___ReduceAction393___init(self, init_table);
-  CHECKNEW_ReduceAction393(self, "parser::ReduceAction393::init for ReduceAction393");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction394[48] = {
-  {(bigint) 1871 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction394 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction394 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1871 /* 3: ReduceAction394 < ReduceAction394: superclass typecheck marker */},
+val_t NEW_ReduceAction97(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction97;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction97(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction97;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction97____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction97_parser___ReduceAction97___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4346;
+  fra.me.meth = LOCATE_NEW_ReduceAction97_parser___ReduceAction97___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4346 */
+  fra.me.REG[0] = NEW_ReduceAction97();
+  INIT_ATTRIBUTES__ReduceAction97(fra.me.REG[0]);
+  parser___ReduceAction97___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction97(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction98[51] = {
+  {(bigint) 335 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction98 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction98 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 335 /* 4: ReduceAction98 < ReduceAction98: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75321,14 +85413,9 @@ const classtable_elt_t VFT_ReduceAction394[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction394 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction98 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75336,7 +85423,6 @@ const classtable_elt_t VFT_ReduceAction394[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75344,41 +85430,93 @@ const classtable_elt_t VFT_ReduceAction394[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction394 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction394___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction98 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction98___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction394 < ReduceAction394: superclass init_table position */},
-  {(bigint) parser___ReduceAction394___init},
+  {(bigint) 2 /* 49: ReduceAction98 < ReduceAction98: superclass init_table position */},
+  {(bigint) parser___ReduceAction98___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction394(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction394;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction98::_goto */
+void INIT_ATTRIBUTES__ReduceAction98(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction98;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction394(val_t self, char *from) {
-}
-val_t NEW_ReduceAction394_parser___ReduceAction394___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction394();
-  parser___ReduceAction394___init(self, init_table);
-  CHECKNEW_ReduceAction394(self, "parser::ReduceAction394::init for ReduceAction394");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction395[48] = {
-  {(bigint) 1867 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction395 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction395 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1867 /* 3: ReduceAction395 < ReduceAction395: superclass typecheck marker */},
+val_t NEW_ReduceAction98(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction98;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction98(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction98;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction98____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction98_parser___ReduceAction98___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4389;
+  fra.me.meth = LOCATE_NEW_ReduceAction98_parser___ReduceAction98___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4389 */
+  fra.me.REG[0] = NEW_ReduceAction98();
+  INIT_ATTRIBUTES__ReduceAction98(fra.me.REG[0]);
+  parser___ReduceAction98___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction98(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction99[51] = {
+  {(bigint) 331 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction99 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction99 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 331 /* 4: ReduceAction99 < ReduceAction99: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75391,14 +85529,9 @@ const classtable_elt_t VFT_ReduceAction395[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction395 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction99 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75406,7 +85539,6 @@ const classtable_elt_t VFT_ReduceAction395[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75414,41 +85546,93 @@ const classtable_elt_t VFT_ReduceAction395[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction395 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction395___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction99 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction99___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction395 < ReduceAction395: superclass init_table position */},
-  {(bigint) parser___ReduceAction395___init},
+  {(bigint) 2 /* 49: ReduceAction99 < ReduceAction99: superclass init_table position */},
+  {(bigint) parser___ReduceAction99___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction395(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction395;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction395(val_t self, char *from) {
-}
-val_t NEW_ReduceAction395_parser___ReduceAction395___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction395();
-  parser___ReduceAction395___init(self, init_table);
-  CHECKNEW_ReduceAction395(self, "parser::ReduceAction395::init for ReduceAction395");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction99::_goto */
+void INIT_ATTRIBUTES__ReduceAction99(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction99;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction396[48] = {
-  {(bigint) 1863 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction396 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction396 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1863 /* 3: ReduceAction396 < ReduceAction396: superclass typecheck marker */},
+val_t NEW_ReduceAction99(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction99;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction99(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction99;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction99____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction99_parser___ReduceAction99___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4432;
+  fra.me.meth = LOCATE_NEW_ReduceAction99_parser___ReduceAction99___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4432 */
+  fra.me.REG[0] = NEW_ReduceAction99();
+  INIT_ATTRIBUTES__ReduceAction99(fra.me.REG[0]);
+  parser___ReduceAction99___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction99(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction100[51] = {
+  {(bigint) 1823 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction100 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction100 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1823 /* 4: ReduceAction100 < ReduceAction100: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75461,14 +85645,9 @@ const classtable_elt_t VFT_ReduceAction396[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction396 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction100 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75476,7 +85655,6 @@ const classtable_elt_t VFT_ReduceAction396[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75484,41 +85662,93 @@ const classtable_elt_t VFT_ReduceAction396[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction396 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction396___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction100 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction100___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction396 < ReduceAction396: superclass init_table position */},
-  {(bigint) parser___ReduceAction396___init},
+  {(bigint) 2 /* 49: ReduceAction100 < ReduceAction100: superclass init_table position */},
+  {(bigint) parser___ReduceAction100___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction396(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction396;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction396(val_t self, char *from) {
-}
-val_t NEW_ReduceAction396_parser___ReduceAction396___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction396();
-  parser___ReduceAction396___init(self, init_table);
-  CHECKNEW_ReduceAction396(self, "parser::ReduceAction396::init for ReduceAction396");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction100::_goto */
+void INIT_ATTRIBUTES__ReduceAction100(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction100;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction397[48] = {
-  {(bigint) 1859 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction397 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction397 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1859 /* 3: ReduceAction397 < ReduceAction397: superclass typecheck marker */},
+val_t NEW_ReduceAction100(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction100;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction100(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction100;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction100____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction100_parser___ReduceAction100___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4478;
+  fra.me.meth = LOCATE_NEW_ReduceAction100_parser___ReduceAction100___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4478 */
+  fra.me.REG[0] = NEW_ReduceAction100();
+  INIT_ATTRIBUTES__ReduceAction100(fra.me.REG[0]);
+  parser___ReduceAction100___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction100(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction101[51] = {
+  {(bigint) 1819 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction101 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction101 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1819 /* 4: ReduceAction101 < ReduceAction101: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75531,14 +85761,9 @@ const classtable_elt_t VFT_ReduceAction397[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction397 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction101 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75546,7 +85771,6 @@ const classtable_elt_t VFT_ReduceAction397[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75554,41 +85778,93 @@ const classtable_elt_t VFT_ReduceAction397[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction397 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction397___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction101 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction101___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction397 < ReduceAction397: superclass init_table position */},
-  {(bigint) parser___ReduceAction397___init},
+  {(bigint) 2 /* 49: ReduceAction101 < ReduceAction101: superclass init_table position */},
+  {(bigint) parser___ReduceAction101___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction397(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction397;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction397(val_t self, char *from) {
-}
-val_t NEW_ReduceAction397_parser___ReduceAction397___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction397();
-  parser___ReduceAction397___init(self, init_table);
-  CHECKNEW_ReduceAction397(self, "parser::ReduceAction397::init for ReduceAction397");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction101::_goto */
+void INIT_ATTRIBUTES__ReduceAction101(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction101;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction398[48] = {
-  {(bigint) 1855 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction398 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction398 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1855 /* 3: ReduceAction398 < ReduceAction398: superclass typecheck marker */},
+val_t NEW_ReduceAction101(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction101;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction101(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction101;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction101____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction101_parser___ReduceAction101___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4521;
+  fra.me.meth = LOCATE_NEW_ReduceAction101_parser___ReduceAction101___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4521 */
+  fra.me.REG[0] = NEW_ReduceAction101();
+  INIT_ATTRIBUTES__ReduceAction101(fra.me.REG[0]);
+  parser___ReduceAction101___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction101(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction102[51] = {
+  {(bigint) 1815 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction102 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction102 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1815 /* 4: ReduceAction102 < ReduceAction102: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75601,14 +85877,9 @@ const classtable_elt_t VFT_ReduceAction398[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction398 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction102 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75616,7 +85887,6 @@ const classtable_elt_t VFT_ReduceAction398[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75624,41 +85894,93 @@ const classtable_elt_t VFT_ReduceAction398[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction398 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction398___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction102 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction102___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction398 < ReduceAction398: superclass init_table position */},
-  {(bigint) parser___ReduceAction398___init},
+  {(bigint) 2 /* 49: ReduceAction102 < ReduceAction102: superclass init_table position */},
+  {(bigint) parser___ReduceAction102___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction398(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction398;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction398(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction102::_goto */
+void INIT_ATTRIBUTES__ReduceAction102(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction102;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction398_parser___ReduceAction398___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction398();
-  parser___ReduceAction398___init(self, init_table);
-  CHECKNEW_ReduceAction398(self, "parser::ReduceAction398::init for ReduceAction398");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction399[48] = {
-  {(bigint) 1851 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction399 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction399 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1851 /* 3: ReduceAction399 < ReduceAction399: superclass typecheck marker */},
+val_t NEW_ReduceAction102(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction102;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction102(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction102;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction102____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction102_parser___ReduceAction102___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4567;
+  fra.me.meth = LOCATE_NEW_ReduceAction102_parser___ReduceAction102___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4567 */
+  fra.me.REG[0] = NEW_ReduceAction102();
+  INIT_ATTRIBUTES__ReduceAction102(fra.me.REG[0]);
+  parser___ReduceAction102___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction102(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction103[51] = {
+  {(bigint) 1811 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction103 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction103 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1811 /* 4: ReduceAction103 < ReduceAction103: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75671,14 +85993,9 @@ const classtable_elt_t VFT_ReduceAction399[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction399 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction103 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75686,7 +86003,6 @@ const classtable_elt_t VFT_ReduceAction399[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75694,41 +86010,93 @@ const classtable_elt_t VFT_ReduceAction399[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction399 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction399___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction103 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction103___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction399 < ReduceAction399: superclass init_table position */},
-  {(bigint) parser___ReduceAction399___init},
+  {(bigint) 2 /* 49: ReduceAction103 < ReduceAction103: superclass init_table position */},
+  {(bigint) parser___ReduceAction103___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction399(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction399;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction103::_goto */
+void INIT_ATTRIBUTES__ReduceAction103(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction103;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction399(val_t self, char *from) {
-}
-val_t NEW_ReduceAction399_parser___ReduceAction399___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction399();
-  parser___ReduceAction399___init(self, init_table);
-  CHECKNEW_ReduceAction399(self, "parser::ReduceAction399::init for ReduceAction399");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction400[48] = {
-  {(bigint) 1839 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction400 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction400 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1839 /* 3: ReduceAction400 < ReduceAction400: superclass typecheck marker */},
+val_t NEW_ReduceAction103(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction103;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction103(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction103;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction103____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction103_parser___ReduceAction103___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4613;
+  fra.me.meth = LOCATE_NEW_ReduceAction103_parser___ReduceAction103___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4613 */
+  fra.me.REG[0] = NEW_ReduceAction103();
+  INIT_ATTRIBUTES__ReduceAction103(fra.me.REG[0]);
+  parser___ReduceAction103___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction103(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction104[51] = {
+  {(bigint) 1807 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction104 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction104 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1807 /* 4: ReduceAction104 < ReduceAction104: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75741,14 +86109,9 @@ const classtable_elt_t VFT_ReduceAction400[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction400 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction104 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75756,7 +86119,6 @@ const classtable_elt_t VFT_ReduceAction400[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75764,41 +86126,93 @@ const classtable_elt_t VFT_ReduceAction400[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction400 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction400___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction104 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction104___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction400 < ReduceAction400: superclass init_table position */},
-  {(bigint) parser___ReduceAction400___init},
+  {(bigint) 2 /* 49: ReduceAction104 < ReduceAction104: superclass init_table position */},
+  {(bigint) parser___ReduceAction104___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction400(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction400;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction400(val_t self, char *from) {
-}
-val_t NEW_ReduceAction400_parser___ReduceAction400___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction400();
-  parser___ReduceAction400___init(self, init_table);
-  CHECKNEW_ReduceAction400(self, "parser::ReduceAction400::init for ReduceAction400");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction104::_goto */
+void INIT_ATTRIBUTES__ReduceAction104(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction104;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction401[48] = {
-  {(bigint) 1835 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction401 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction401 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1835 /* 3: ReduceAction401 < ReduceAction401: superclass typecheck marker */},
+val_t NEW_ReduceAction104(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction104;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction104(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction104;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction104____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction104_parser___ReduceAction104___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4662;
+  fra.me.meth = LOCATE_NEW_ReduceAction104_parser___ReduceAction104___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4662 */
+  fra.me.REG[0] = NEW_ReduceAction104();
+  INIT_ATTRIBUTES__ReduceAction104(fra.me.REG[0]);
+  parser___ReduceAction104___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction104(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction105[51] = {
+  {(bigint) 1803 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction105 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction105 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1803 /* 4: ReduceAction105 < ReduceAction105: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75811,14 +86225,9 @@ const classtable_elt_t VFT_ReduceAction401[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction401 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction105 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75826,7 +86235,6 @@ const classtable_elt_t VFT_ReduceAction401[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75834,41 +86242,93 @@ const classtable_elt_t VFT_ReduceAction401[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction401 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction401___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction105 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction105___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction401 < ReduceAction401: superclass init_table position */},
-  {(bigint) parser___ReduceAction401___init},
+  {(bigint) 2 /* 49: ReduceAction105 < ReduceAction105: superclass init_table position */},
+  {(bigint) parser___ReduceAction105___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction401(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction401;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction401(val_t self, char *from) {
-}
-val_t NEW_ReduceAction401_parser___ReduceAction401___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction401();
-  parser___ReduceAction401___init(self, init_table);
-  CHECKNEW_ReduceAction401(self, "parser::ReduceAction401::init for ReduceAction401");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction105::_goto */
+void INIT_ATTRIBUTES__ReduceAction105(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction105;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction402[48] = {
-  {(bigint) 1831 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction402 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction402 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1831 /* 3: ReduceAction402 < ReduceAction402: superclass typecheck marker */},
+val_t NEW_ReduceAction105(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction105;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction105(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction105;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction105____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction105_parser___ReduceAction105___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4705;
+  fra.me.meth = LOCATE_NEW_ReduceAction105_parser___ReduceAction105___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4705 */
+  fra.me.REG[0] = NEW_ReduceAction105();
+  INIT_ATTRIBUTES__ReduceAction105(fra.me.REG[0]);
+  parser___ReduceAction105___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction105(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction106[51] = {
+  {(bigint) 1799 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction106 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction106 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1799 /* 4: ReduceAction106 < ReduceAction106: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75881,14 +86341,9 @@ const classtable_elt_t VFT_ReduceAction402[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction402 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction106 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75896,7 +86351,6 @@ const classtable_elt_t VFT_ReduceAction402[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75904,41 +86358,93 @@ const classtable_elt_t VFT_ReduceAction402[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction402 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction402___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction106 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction106___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction402 < ReduceAction402: superclass init_table position */},
-  {(bigint) parser___ReduceAction402___init},
+  {(bigint) 2 /* 49: ReduceAction106 < ReduceAction106: superclass init_table position */},
+  {(bigint) parser___ReduceAction106___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction402(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction402;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction402(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction106::_goto */
+void INIT_ATTRIBUTES__ReduceAction106(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction106;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction402_parser___ReduceAction402___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction402();
-  parser___ReduceAction402___init(self, init_table);
-  CHECKNEW_ReduceAction402(self, "parser::ReduceAction402::init for ReduceAction402");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction403[48] = {
-  {(bigint) 1827 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction403 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction403 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1827 /* 3: ReduceAction403 < ReduceAction403: superclass typecheck marker */},
+val_t NEW_ReduceAction106(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction106;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction106(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction106;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction106____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction106_parser___ReduceAction106___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4751;
+  fra.me.meth = LOCATE_NEW_ReduceAction106_parser___ReduceAction106___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4751 */
+  fra.me.REG[0] = NEW_ReduceAction106();
+  INIT_ATTRIBUTES__ReduceAction106(fra.me.REG[0]);
+  parser___ReduceAction106___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction106(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction107[51] = {
+  {(bigint) 1795 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction107 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction107 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1795 /* 4: ReduceAction107 < ReduceAction107: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75951,14 +86457,9 @@ const classtable_elt_t VFT_ReduceAction403[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction403 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction107 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -75966,7 +86467,6 @@ const classtable_elt_t VFT_ReduceAction403[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -75974,41 +86474,93 @@ const classtable_elt_t VFT_ReduceAction403[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction403 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction403___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction107 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction107___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction403 < ReduceAction403: superclass init_table position */},
-  {(bigint) parser___ReduceAction403___init},
+  {(bigint) 2 /* 49: ReduceAction107 < ReduceAction107: superclass init_table position */},
+  {(bigint) parser___ReduceAction107___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction403(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction403;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction107::_goto */
+void INIT_ATTRIBUTES__ReduceAction107(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction107;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction403(val_t self, char *from) {
-}
-val_t NEW_ReduceAction403_parser___ReduceAction403___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction403();
-  parser___ReduceAction403___init(self, init_table);
-  CHECKNEW_ReduceAction403(self, "parser::ReduceAction403::init for ReduceAction403");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction404[48] = {
-  {(bigint) 1823 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction404 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction404 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1823 /* 3: ReduceAction404 < ReduceAction404: superclass typecheck marker */},
+val_t NEW_ReduceAction107(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction107;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction107(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction107;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction107____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction107_parser___ReduceAction107___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4797;
+  fra.me.meth = LOCATE_NEW_ReduceAction107_parser___ReduceAction107___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4797 */
+  fra.me.REG[0] = NEW_ReduceAction107();
+  INIT_ATTRIBUTES__ReduceAction107(fra.me.REG[0]);
+  parser___ReduceAction107___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction107(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction108[51] = {
+  {(bigint) 1791 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction108 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction108 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1791 /* 4: ReduceAction108 < ReduceAction108: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76021,14 +86573,9 @@ const classtable_elt_t VFT_ReduceAction404[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction404 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction108 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76036,7 +86583,6 @@ const classtable_elt_t VFT_ReduceAction404[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76044,41 +86590,93 @@ const classtable_elt_t VFT_ReduceAction404[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction404 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction404___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction108 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction108___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction404 < ReduceAction404: superclass init_table position */},
-  {(bigint) parser___ReduceAction404___init},
+  {(bigint) 2 /* 49: ReduceAction108 < ReduceAction108: superclass init_table position */},
+  {(bigint) parser___ReduceAction108___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction404(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction404;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction404(val_t self, char *from) {
-}
-val_t NEW_ReduceAction404_parser___ReduceAction404___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction404();
-  parser___ReduceAction404___init(self, init_table);
-  CHECKNEW_ReduceAction404(self, "parser::ReduceAction404::init for ReduceAction404");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction108::_goto */
+void INIT_ATTRIBUTES__ReduceAction108(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction108;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction405[48] = {
-  {(bigint) 1819 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction405 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction405 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1819 /* 3: ReduceAction405 < ReduceAction405: superclass typecheck marker */},
+val_t NEW_ReduceAction108(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction108;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction108(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction108;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction108____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction108_parser___ReduceAction108___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4846;
+  fra.me.meth = LOCATE_NEW_ReduceAction108_parser___ReduceAction108___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4846 */
+  fra.me.REG[0] = NEW_ReduceAction108();
+  INIT_ATTRIBUTES__ReduceAction108(fra.me.REG[0]);
+  parser___ReduceAction108___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction108(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction109[51] = {
+  {(bigint) 1787 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction109 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction109 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1787 /* 4: ReduceAction109 < ReduceAction109: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76091,14 +86689,9 @@ const classtable_elt_t VFT_ReduceAction405[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction405 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction109 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76106,7 +86699,6 @@ const classtable_elt_t VFT_ReduceAction405[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76114,41 +86706,93 @@ const classtable_elt_t VFT_ReduceAction405[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction405 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction405___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction109 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction109___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction405 < ReduceAction405: superclass init_table position */},
-  {(bigint) parser___ReduceAction405___init},
+  {(bigint) 2 /* 49: ReduceAction109 < ReduceAction109: superclass init_table position */},
+  {(bigint) parser___ReduceAction109___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction405(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction405;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction405(val_t self, char *from) {
-}
-val_t NEW_ReduceAction405_parser___ReduceAction405___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction405();
-  parser___ReduceAction405___init(self, init_table);
-  CHECKNEW_ReduceAction405(self, "parser::ReduceAction405::init for ReduceAction405");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction109::_goto */
+void INIT_ATTRIBUTES__ReduceAction109(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction109;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction406[48] = {
-  {(bigint) 1815 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction406 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction406 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1815 /* 3: ReduceAction406 < ReduceAction406: superclass typecheck marker */},
+val_t NEW_ReduceAction109(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction109;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction109(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction109;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction109____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction109_parser___ReduceAction109___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4892;
+  fra.me.meth = LOCATE_NEW_ReduceAction109_parser___ReduceAction109___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4892 */
+  fra.me.REG[0] = NEW_ReduceAction109();
+  INIT_ATTRIBUTES__ReduceAction109(fra.me.REG[0]);
+  parser___ReduceAction109___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction109(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction110[51] = {
+  {(bigint) 1779 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction110 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction110 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1779 /* 4: ReduceAction110 < ReduceAction110: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76161,14 +86805,9 @@ const classtable_elt_t VFT_ReduceAction406[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction406 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction110 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76176,7 +86815,6 @@ const classtable_elt_t VFT_ReduceAction406[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76184,41 +86822,93 @@ const classtable_elt_t VFT_ReduceAction406[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction406 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction406___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction110 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction110___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction406 < ReduceAction406: superclass init_table position */},
-  {(bigint) parser___ReduceAction406___init},
+  {(bigint) 2 /* 49: ReduceAction110 < ReduceAction110: superclass init_table position */},
+  {(bigint) parser___ReduceAction110___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction406(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction406;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction406(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction110::_goto */
+void INIT_ATTRIBUTES__ReduceAction110(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction110;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction406_parser___ReduceAction406___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction406();
-  parser___ReduceAction406___init(self, init_table);
-  CHECKNEW_ReduceAction406(self, "parser::ReduceAction406::init for ReduceAction406");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction407[48] = {
-  {(bigint) 1811 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction407 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction407 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1811 /* 3: ReduceAction407 < ReduceAction407: superclass typecheck marker */},
+val_t NEW_ReduceAction110(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction110;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction110(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction110;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction110____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction110_parser___ReduceAction110___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4941;
+  fra.me.meth = LOCATE_NEW_ReduceAction110_parser___ReduceAction110___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4941 */
+  fra.me.REG[0] = NEW_ReduceAction110();
+  INIT_ATTRIBUTES__ReduceAction110(fra.me.REG[0]);
+  parser___ReduceAction110___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction110(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction111[51] = {
+  {(bigint) 1775 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction111 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction111 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1775 /* 4: ReduceAction111 < ReduceAction111: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76231,14 +86921,9 @@ const classtable_elt_t VFT_ReduceAction407[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction407 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction111 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76246,7 +86931,6 @@ const classtable_elt_t VFT_ReduceAction407[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76254,41 +86938,93 @@ const classtable_elt_t VFT_ReduceAction407[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction407 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction407___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction111 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction111___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction407 < ReduceAction407: superclass init_table position */},
-  {(bigint) parser___ReduceAction407___init},
+  {(bigint) 2 /* 49: ReduceAction111 < ReduceAction111: superclass init_table position */},
+  {(bigint) parser___ReduceAction111___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction407(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction407;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction111::_goto */
+void INIT_ATTRIBUTES__ReduceAction111(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction111;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction407(val_t self, char *from) {
-}
-val_t NEW_ReduceAction407_parser___ReduceAction407___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction407();
-  parser___ReduceAction407___init(self, init_table);
-  CHECKNEW_ReduceAction407(self, "parser::ReduceAction407::init for ReduceAction407");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction408[48] = {
-  {(bigint) 1807 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction408 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction408 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1807 /* 3: ReduceAction408 < ReduceAction408: superclass typecheck marker */},
+val_t NEW_ReduceAction111(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction111;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction111(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction111;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction111____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction111_parser___ReduceAction111___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4990;
+  fra.me.meth = LOCATE_NEW_ReduceAction111_parser___ReduceAction111___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:4990 */
+  fra.me.REG[0] = NEW_ReduceAction111();
+  INIT_ATTRIBUTES__ReduceAction111(fra.me.REG[0]);
+  parser___ReduceAction111___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction111(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction112[51] = {
+  {(bigint) 1771 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction112 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction112 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1771 /* 4: ReduceAction112 < ReduceAction112: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76301,14 +87037,9 @@ const classtable_elt_t VFT_ReduceAction408[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction408 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction112 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76316,7 +87047,6 @@ const classtable_elt_t VFT_ReduceAction408[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76324,41 +87054,93 @@ const classtable_elt_t VFT_ReduceAction408[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction408 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction408___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction112 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction112___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction408 < ReduceAction408: superclass init_table position */},
-  {(bigint) parser___ReduceAction408___init},
+  {(bigint) 2 /* 49: ReduceAction112 < ReduceAction112: superclass init_table position */},
+  {(bigint) parser___ReduceAction112___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction408(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction408;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction408(val_t self, char *from) {
-}
-val_t NEW_ReduceAction408_parser___ReduceAction408___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction408();
-  parser___ReduceAction408___init(self, init_table);
-  CHECKNEW_ReduceAction408(self, "parser::ReduceAction408::init for ReduceAction408");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction112::_goto */
+void INIT_ATTRIBUTES__ReduceAction112(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction112;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction409[48] = {
-  {(bigint) 1803 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction409 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction409 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1803 /* 3: ReduceAction409 < ReduceAction409: superclass typecheck marker */},
+val_t NEW_ReduceAction112(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction112;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction112(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction112;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction112____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction112_parser___ReduceAction112___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5042;
+  fra.me.meth = LOCATE_NEW_ReduceAction112_parser___ReduceAction112___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5042 */
+  fra.me.REG[0] = NEW_ReduceAction112();
+  INIT_ATTRIBUTES__ReduceAction112(fra.me.REG[0]);
+  parser___ReduceAction112___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction112(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction113[51] = {
+  {(bigint) 1767 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction113 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction113 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1767 /* 4: ReduceAction113 < ReduceAction113: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76371,14 +87153,9 @@ const classtable_elt_t VFT_ReduceAction409[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction409 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction113 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76386,7 +87163,6 @@ const classtable_elt_t VFT_ReduceAction409[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76394,41 +87170,93 @@ const classtable_elt_t VFT_ReduceAction409[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction409 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction409___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction113 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction113___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction409 < ReduceAction409: superclass init_table position */},
-  {(bigint) parser___ReduceAction409___init},
+  {(bigint) 2 /* 49: ReduceAction113 < ReduceAction113: superclass init_table position */},
+  {(bigint) parser___ReduceAction113___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction409(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction409;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction409(val_t self, char *from) {
-}
-val_t NEW_ReduceAction409_parser___ReduceAction409___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction409();
-  parser___ReduceAction409___init(self, init_table);
-  CHECKNEW_ReduceAction409(self, "parser::ReduceAction409::init for ReduceAction409");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction113::_goto */
+void INIT_ATTRIBUTES__ReduceAction113(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction113;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction410[48] = {
-  {(bigint) 1795 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction410 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction410 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1795 /* 3: ReduceAction410 < ReduceAction410: superclass typecheck marker */},
+val_t NEW_ReduceAction113(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction113;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction113(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction113;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction113____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction113_parser___ReduceAction113___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5077;
+  fra.me.meth = LOCATE_NEW_ReduceAction113_parser___ReduceAction113___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5077 */
+  fra.me.REG[0] = NEW_ReduceAction113();
+  INIT_ATTRIBUTES__ReduceAction113(fra.me.REG[0]);
+  parser___ReduceAction113___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction113(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction114[51] = {
+  {(bigint) 1763 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction114 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction114 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1763 /* 4: ReduceAction114 < ReduceAction114: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76441,14 +87269,9 @@ const classtable_elt_t VFT_ReduceAction410[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction410 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction114 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76456,7 +87279,6 @@ const classtable_elt_t VFT_ReduceAction410[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76464,41 +87286,93 @@ const classtable_elt_t VFT_ReduceAction410[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction410 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction410___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction114 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction114___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction410 < ReduceAction410: superclass init_table position */},
-  {(bigint) parser___ReduceAction410___init},
+  {(bigint) 2 /* 49: ReduceAction114 < ReduceAction114: superclass init_table position */},
+  {(bigint) parser___ReduceAction114___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction410(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction410;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction410(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction114::_goto */
+void INIT_ATTRIBUTES__ReduceAction114(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction114;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction410_parser___ReduceAction410___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction410();
-  parser___ReduceAction410___init(self, init_table);
-  CHECKNEW_ReduceAction410(self, "parser::ReduceAction410::init for ReduceAction410");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction411[48] = {
-  {(bigint) 1791 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction411 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction411 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1791 /* 3: ReduceAction411 < ReduceAction411: superclass typecheck marker */},
+val_t NEW_ReduceAction114(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction114;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction114(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction114;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction114____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction114_parser___ReduceAction114___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5115;
+  fra.me.meth = LOCATE_NEW_ReduceAction114_parser___ReduceAction114___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5115 */
+  fra.me.REG[0] = NEW_ReduceAction114();
+  INIT_ATTRIBUTES__ReduceAction114(fra.me.REG[0]);
+  parser___ReduceAction114___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction114(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction115[51] = {
+  {(bigint) 1759 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction115 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction115 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1759 /* 4: ReduceAction115 < ReduceAction115: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76511,14 +87385,9 @@ const classtable_elt_t VFT_ReduceAction411[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction411 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction115 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76526,7 +87395,6 @@ const classtable_elt_t VFT_ReduceAction411[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76534,41 +87402,93 @@ const classtable_elt_t VFT_ReduceAction411[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction411 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction411___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction115 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction115___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction411 < ReduceAction411: superclass init_table position */},
-  {(bigint) parser___ReduceAction411___init},
+  {(bigint) 2 /* 49: ReduceAction115 < ReduceAction115: superclass init_table position */},
+  {(bigint) parser___ReduceAction115___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction411(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction411;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction115::_goto */
+void INIT_ATTRIBUTES__ReduceAction115(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction115;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction411(val_t self, char *from) {
-}
-val_t NEW_ReduceAction411_parser___ReduceAction411___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction411();
-  parser___ReduceAction411___init(self, init_table);
-  CHECKNEW_ReduceAction411(self, "parser::ReduceAction411::init for ReduceAction411");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction412[48] = {
-  {(bigint) 1787 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction412 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction412 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1787 /* 3: ReduceAction412 < ReduceAction412: superclass typecheck marker */},
+val_t NEW_ReduceAction115(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction115;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction115(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction115;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction115____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction115_parser___ReduceAction115___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5153;
+  fra.me.meth = LOCATE_NEW_ReduceAction115_parser___ReduceAction115___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5153 */
+  fra.me.REG[0] = NEW_ReduceAction115();
+  INIT_ATTRIBUTES__ReduceAction115(fra.me.REG[0]);
+  parser___ReduceAction115___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction115(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction116[51] = {
+  {(bigint) 1755 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction116 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction116 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1755 /* 4: ReduceAction116 < ReduceAction116: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76581,14 +87501,9 @@ const classtable_elt_t VFT_ReduceAction412[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction412 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction116 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76596,7 +87511,6 @@ const classtable_elt_t VFT_ReduceAction412[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76604,41 +87518,93 @@ const classtable_elt_t VFT_ReduceAction412[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction412 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction412___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction116 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction116___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction412 < ReduceAction412: superclass init_table position */},
-  {(bigint) parser___ReduceAction412___init},
+  {(bigint) 2 /* 49: ReduceAction116 < ReduceAction116: superclass init_table position */},
+  {(bigint) parser___ReduceAction116___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction412(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction412;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction412(val_t self, char *from) {
-}
-val_t NEW_ReduceAction412_parser___ReduceAction412___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction412();
-  parser___ReduceAction412___init(self, init_table);
-  CHECKNEW_ReduceAction412(self, "parser::ReduceAction412::init for ReduceAction412");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction116::_goto */
+void INIT_ATTRIBUTES__ReduceAction116(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction116;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction413[48] = {
-  {(bigint) 1783 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction413 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction413 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1783 /* 3: ReduceAction413 < ReduceAction413: superclass typecheck marker */},
+val_t NEW_ReduceAction116(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction116;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction116(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction116;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction116____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction116_parser___ReduceAction116___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5194;
+  fra.me.meth = LOCATE_NEW_ReduceAction116_parser___ReduceAction116___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5194 */
+  fra.me.REG[0] = NEW_ReduceAction116();
+  INIT_ATTRIBUTES__ReduceAction116(fra.me.REG[0]);
+  parser___ReduceAction116___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction116(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction117[51] = {
+  {(bigint) 1751 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction117 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction117 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1751 /* 4: ReduceAction117 < ReduceAction117: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76651,14 +87617,9 @@ const classtable_elt_t VFT_ReduceAction413[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction413 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction117 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76666,7 +87627,6 @@ const classtable_elt_t VFT_ReduceAction413[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76674,41 +87634,93 @@ const classtable_elt_t VFT_ReduceAction413[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction413 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction413___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction117 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction117___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction413 < ReduceAction413: superclass init_table position */},
-  {(bigint) parser___ReduceAction413___init},
+  {(bigint) 2 /* 49: ReduceAction117 < ReduceAction117: superclass init_table position */},
+  {(bigint) parser___ReduceAction117___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction413(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction413;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction413(val_t self, char *from) {
-}
-val_t NEW_ReduceAction413_parser___ReduceAction413___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction413();
-  parser___ReduceAction413___init(self, init_table);
-  CHECKNEW_ReduceAction413(self, "parser::ReduceAction413::init for ReduceAction413");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction117::_goto */
+void INIT_ATTRIBUTES__ReduceAction117(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction117;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction414[48] = {
-  {(bigint) 1779 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction414 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction414 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1779 /* 3: ReduceAction414 < ReduceAction414: superclass typecheck marker */},
+val_t NEW_ReduceAction117(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction117;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction117(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction117;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction117____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction117_parser___ReduceAction117___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5232;
+  fra.me.meth = LOCATE_NEW_ReduceAction117_parser___ReduceAction117___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5232 */
+  fra.me.REG[0] = NEW_ReduceAction117();
+  INIT_ATTRIBUTES__ReduceAction117(fra.me.REG[0]);
+  parser___ReduceAction117___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction117(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction118[51] = {
+  {(bigint) 1747 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction118 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction118 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1747 /* 4: ReduceAction118 < ReduceAction118: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76721,14 +87733,9 @@ const classtable_elt_t VFT_ReduceAction414[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction414 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction118 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76736,7 +87743,6 @@ const classtable_elt_t VFT_ReduceAction414[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76744,41 +87750,93 @@ const classtable_elt_t VFT_ReduceAction414[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction414 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction414___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction118 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction118___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction414 < ReduceAction414: superclass init_table position */},
-  {(bigint) parser___ReduceAction414___init},
+  {(bigint) 2 /* 49: ReduceAction118 < ReduceAction118: superclass init_table position */},
+  {(bigint) parser___ReduceAction118___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction414(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction414;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction414(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction118::_goto */
+void INIT_ATTRIBUTES__ReduceAction118(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction118;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction414_parser___ReduceAction414___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction414();
-  parser___ReduceAction414___init(self, init_table);
-  CHECKNEW_ReduceAction414(self, "parser::ReduceAction414::init for ReduceAction414");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction415[48] = {
-  {(bigint) 1775 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction415 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction415 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1775 /* 3: ReduceAction415 < ReduceAction415: superclass typecheck marker */},
+val_t NEW_ReduceAction118(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction118;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction118(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction118;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction118____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction118_parser___ReduceAction118___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5273;
+  fra.me.meth = LOCATE_NEW_ReduceAction118_parser___ReduceAction118___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5273 */
+  fra.me.REG[0] = NEW_ReduceAction118();
+  INIT_ATTRIBUTES__ReduceAction118(fra.me.REG[0]);
+  parser___ReduceAction118___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction118(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction119[51] = {
+  {(bigint) 1743 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction119 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction119 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1743 /* 4: ReduceAction119 < ReduceAction119: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76791,14 +87849,9 @@ const classtable_elt_t VFT_ReduceAction415[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction415 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction119 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76806,7 +87859,6 @@ const classtable_elt_t VFT_ReduceAction415[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76814,41 +87866,93 @@ const classtable_elt_t VFT_ReduceAction415[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction415 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction415___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction119 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction119___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction415 < ReduceAction415: superclass init_table position */},
-  {(bigint) parser___ReduceAction415___init},
+  {(bigint) 2 /* 49: ReduceAction119 < ReduceAction119: superclass init_table position */},
+  {(bigint) parser___ReduceAction119___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction415(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction415;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction119::_goto */
+void INIT_ATTRIBUTES__ReduceAction119(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction119;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction415(val_t self, char *from) {
-}
-val_t NEW_ReduceAction415_parser___ReduceAction415___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction415();
-  parser___ReduceAction415___init(self, init_table);
-  CHECKNEW_ReduceAction415(self, "parser::ReduceAction415::init for ReduceAction415");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction416[48] = {
-  {(bigint) 1771 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction416 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction416 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1771 /* 3: ReduceAction416 < ReduceAction416: superclass typecheck marker */},
+val_t NEW_ReduceAction119(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction119;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction119(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction119;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction119____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction119_parser___ReduceAction119___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5314;
+  fra.me.meth = LOCATE_NEW_ReduceAction119_parser___ReduceAction119___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5314 */
+  fra.me.REG[0] = NEW_ReduceAction119();
+  INIT_ATTRIBUTES__ReduceAction119(fra.me.REG[0]);
+  parser___ReduceAction119___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction119(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction120[51] = {
+  {(bigint) 1735 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction120 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction120 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1735 /* 4: ReduceAction120 < ReduceAction120: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76861,14 +87965,9 @@ const classtable_elt_t VFT_ReduceAction416[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction416 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction120 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76876,7 +87975,6 @@ const classtable_elt_t VFT_ReduceAction416[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76884,41 +87982,93 @@ const classtable_elt_t VFT_ReduceAction416[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction416 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction416___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction120 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction120___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction416 < ReduceAction416: superclass init_table position */},
-  {(bigint) parser___ReduceAction416___init},
+  {(bigint) 2 /* 49: ReduceAction120 < ReduceAction120: superclass init_table position */},
+  {(bigint) parser___ReduceAction120___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction416(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction416;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction416(val_t self, char *from) {
-}
-val_t NEW_ReduceAction416_parser___ReduceAction416___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction416();
-  parser___ReduceAction416___init(self, init_table);
-  CHECKNEW_ReduceAction416(self, "parser::ReduceAction416::init for ReduceAction416");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction120::_goto */
+void INIT_ATTRIBUTES__ReduceAction120(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction120;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction417[48] = {
-  {(bigint) 1767 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction417 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction417 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1767 /* 3: ReduceAction417 < ReduceAction417: superclass typecheck marker */},
+val_t NEW_ReduceAction120(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction120;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction120(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction120;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction120____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction120_parser___ReduceAction120___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5358;
+  fra.me.meth = LOCATE_NEW_ReduceAction120_parser___ReduceAction120___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5358 */
+  fra.me.REG[0] = NEW_ReduceAction120();
+  INIT_ATTRIBUTES__ReduceAction120(fra.me.REG[0]);
+  parser___ReduceAction120___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction120(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction121[51] = {
+  {(bigint) 1731 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction121 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction121 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1731 /* 4: ReduceAction121 < ReduceAction121: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76931,14 +88081,9 @@ const classtable_elt_t VFT_ReduceAction417[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction417 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction121 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -76946,7 +88091,6 @@ const classtable_elt_t VFT_ReduceAction417[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -76954,41 +88098,93 @@ const classtable_elt_t VFT_ReduceAction417[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction417 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction417___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction121 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction121___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction417 < ReduceAction417: superclass init_table position */},
-  {(bigint) parser___ReduceAction417___init},
+  {(bigint) 2 /* 49: ReduceAction121 < ReduceAction121: superclass init_table position */},
+  {(bigint) parser___ReduceAction121___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction417(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction417;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction417(val_t self, char *from) {
-}
-val_t NEW_ReduceAction417_parser___ReduceAction417___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction417();
-  parser___ReduceAction417___init(self, init_table);
-  CHECKNEW_ReduceAction417(self, "parser::ReduceAction417::init for ReduceAction417");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction121::_goto */
+void INIT_ATTRIBUTES__ReduceAction121(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction121;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction418[48] = {
-  {(bigint) 1763 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction418 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction418 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1763 /* 3: ReduceAction418 < ReduceAction418: superclass typecheck marker */},
+val_t NEW_ReduceAction121(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction121;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction121(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction121;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction121____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction121_parser___ReduceAction121___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5398;
+  fra.me.meth = LOCATE_NEW_ReduceAction121_parser___ReduceAction121___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5398 */
+  fra.me.REG[0] = NEW_ReduceAction121();
+  INIT_ATTRIBUTES__ReduceAction121(fra.me.REG[0]);
+  parser___ReduceAction121___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction121(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction122[51] = {
+  {(bigint) 1727 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction122 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction122 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1727 /* 4: ReduceAction122 < ReduceAction122: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77001,14 +88197,9 @@ const classtable_elt_t VFT_ReduceAction418[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction418 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction122 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77016,7 +88207,6 @@ const classtable_elt_t VFT_ReduceAction418[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77024,41 +88214,93 @@ const classtable_elt_t VFT_ReduceAction418[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction418 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction418___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction122 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction122___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction418 < ReduceAction418: superclass init_table position */},
-  {(bigint) parser___ReduceAction418___init},
+  {(bigint) 2 /* 49: ReduceAction122 < ReduceAction122: superclass init_table position */},
+  {(bigint) parser___ReduceAction122___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction418(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction418;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction418(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction122::_goto */
+void INIT_ATTRIBUTES__ReduceAction122(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction122;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction418_parser___ReduceAction418___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction418();
-  parser___ReduceAction418___init(self, init_table);
-  CHECKNEW_ReduceAction418(self, "parser::ReduceAction418::init for ReduceAction418");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction419[48] = {
-  {(bigint) 1759 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction419 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction419 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1759 /* 3: ReduceAction419 < ReduceAction419: superclass typecheck marker */},
+val_t NEW_ReduceAction122(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction122;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction122(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction122;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction122____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction122_parser___ReduceAction122___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5441;
+  fra.me.meth = LOCATE_NEW_ReduceAction122_parser___ReduceAction122___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5441 */
+  fra.me.REG[0] = NEW_ReduceAction122();
+  INIT_ATTRIBUTES__ReduceAction122(fra.me.REG[0]);
+  parser___ReduceAction122___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction122(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction123[51] = {
+  {(bigint) 1723 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction123 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction123 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1723 /* 4: ReduceAction123 < ReduceAction123: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77071,14 +88313,9 @@ const classtable_elt_t VFT_ReduceAction419[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction419 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction123 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77086,7 +88323,6 @@ const classtable_elt_t VFT_ReduceAction419[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77094,41 +88330,93 @@ const classtable_elt_t VFT_ReduceAction419[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction419 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction419___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction123 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction123___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction419 < ReduceAction419: superclass init_table position */},
-  {(bigint) parser___ReduceAction419___init},
+  {(bigint) 2 /* 49: ReduceAction123 < ReduceAction123: superclass init_table position */},
+  {(bigint) parser___ReduceAction123___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction419(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction419;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction123::_goto */
+void INIT_ATTRIBUTES__ReduceAction123(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction123;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction419(val_t self, char *from) {
-}
-val_t NEW_ReduceAction419_parser___ReduceAction419___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction419();
-  parser___ReduceAction419___init(self, init_table);
-  CHECKNEW_ReduceAction419(self, "parser::ReduceAction419::init for ReduceAction419");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction420[48] = {
-  {(bigint) 1751 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction420 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction420 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1751 /* 3: ReduceAction420 < ReduceAction420: superclass typecheck marker */},
+val_t NEW_ReduceAction123(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction123;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction123(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction123;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction123____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction123_parser___ReduceAction123___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5484;
+  fra.me.meth = LOCATE_NEW_ReduceAction123_parser___ReduceAction123___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5484 */
+  fra.me.REG[0] = NEW_ReduceAction123();
+  INIT_ATTRIBUTES__ReduceAction123(fra.me.REG[0]);
+  parser___ReduceAction123___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction123(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction124[51] = {
+  {(bigint) 1719 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction124 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction124 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1719 /* 4: ReduceAction124 < ReduceAction124: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77141,14 +88429,9 @@ const classtable_elt_t VFT_ReduceAction420[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction420 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction124 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77156,7 +88439,6 @@ const classtable_elt_t VFT_ReduceAction420[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77164,41 +88446,93 @@ const classtable_elt_t VFT_ReduceAction420[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction420 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction420___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction124 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction124___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction420 < ReduceAction420: superclass init_table position */},
-  {(bigint) parser___ReduceAction420___init},
+  {(bigint) 2 /* 49: ReduceAction124 < ReduceAction124: superclass init_table position */},
+  {(bigint) parser___ReduceAction124___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction420(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction420;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction420(val_t self, char *from) {
-}
-val_t NEW_ReduceAction420_parser___ReduceAction420___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction420();
-  parser___ReduceAction420___init(self, init_table);
-  CHECKNEW_ReduceAction420(self, "parser::ReduceAction420::init for ReduceAction420");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction124::_goto */
+void INIT_ATTRIBUTES__ReduceAction124(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction124;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction421[48] = {
-  {(bigint) 1747 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction421 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction421 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1747 /* 3: ReduceAction421 < ReduceAction421: superclass typecheck marker */},
+val_t NEW_ReduceAction124(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction124;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction124(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction124;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction124____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction124_parser___ReduceAction124___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5530;
+  fra.me.meth = LOCATE_NEW_ReduceAction124_parser___ReduceAction124___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5530 */
+  fra.me.REG[0] = NEW_ReduceAction124();
+  INIT_ATTRIBUTES__ReduceAction124(fra.me.REG[0]);
+  parser___ReduceAction124___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction124(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction125[51] = {
+  {(bigint) 1715 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction125 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction125 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1715 /* 4: ReduceAction125 < ReduceAction125: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77211,14 +88545,9 @@ const classtable_elt_t VFT_ReduceAction421[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction421 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction125 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77226,7 +88555,6 @@ const classtable_elt_t VFT_ReduceAction421[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77234,41 +88562,93 @@ const classtable_elt_t VFT_ReduceAction421[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction421 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction421___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction125 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction125___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction421 < ReduceAction421: superclass init_table position */},
-  {(bigint) parser___ReduceAction421___init},
+  {(bigint) 2 /* 49: ReduceAction125 < ReduceAction125: superclass init_table position */},
+  {(bigint) parser___ReduceAction125___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction421(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction421;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction421(val_t self, char *from) {
-}
-val_t NEW_ReduceAction421_parser___ReduceAction421___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction421();
-  parser___ReduceAction421___init(self, init_table);
-  CHECKNEW_ReduceAction421(self, "parser::ReduceAction421::init for ReduceAction421");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction125::_goto */
+void INIT_ATTRIBUTES__ReduceAction125(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction125;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction422[48] = {
-  {(bigint) 1743 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction422 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction422 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1743 /* 3: ReduceAction422 < ReduceAction422: superclass typecheck marker */},
+val_t NEW_ReduceAction125(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction125;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction125(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction125;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction125____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction125_parser___ReduceAction125___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5573;
+  fra.me.meth = LOCATE_NEW_ReduceAction125_parser___ReduceAction125___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5573 */
+  fra.me.REG[0] = NEW_ReduceAction125();
+  INIT_ATTRIBUTES__ReduceAction125(fra.me.REG[0]);
+  parser___ReduceAction125___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction125(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction126[51] = {
+  {(bigint) 1711 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction126 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction126 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1711 /* 4: ReduceAction126 < ReduceAction126: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77281,14 +88661,9 @@ const classtable_elt_t VFT_ReduceAction422[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction422 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction126 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77296,7 +88671,6 @@ const classtable_elt_t VFT_ReduceAction422[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77304,41 +88678,93 @@ const classtable_elt_t VFT_ReduceAction422[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction422 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction422___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction126 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction126___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction422 < ReduceAction422: superclass init_table position */},
-  {(bigint) parser___ReduceAction422___init},
+  {(bigint) 2 /* 49: ReduceAction126 < ReduceAction126: superclass init_table position */},
+  {(bigint) parser___ReduceAction126___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction422(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction422;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction422(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction126::_goto */
+void INIT_ATTRIBUTES__ReduceAction126(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction126;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction422_parser___ReduceAction422___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction422();
-  parser___ReduceAction422___init(self, init_table);
-  CHECKNEW_ReduceAction422(self, "parser::ReduceAction422::init for ReduceAction422");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction423[48] = {
-  {(bigint) 1739 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction423 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction423 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1739 /* 3: ReduceAction423 < ReduceAction423: superclass typecheck marker */},
+val_t NEW_ReduceAction126(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction126;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction126(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction126;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction126____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction126_parser___ReduceAction126___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5619;
+  fra.me.meth = LOCATE_NEW_ReduceAction126_parser___ReduceAction126___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5619 */
+  fra.me.REG[0] = NEW_ReduceAction126();
+  INIT_ATTRIBUTES__ReduceAction126(fra.me.REG[0]);
+  parser___ReduceAction126___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction126(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction127[51] = {
+  {(bigint) 1707 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction127 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction127 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1707 /* 4: ReduceAction127 < ReduceAction127: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77351,14 +88777,9 @@ const classtable_elt_t VFT_ReduceAction423[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction423 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction127 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77366,7 +88787,6 @@ const classtable_elt_t VFT_ReduceAction423[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77374,41 +88794,93 @@ const classtable_elt_t VFT_ReduceAction423[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction423 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction423___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction127 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction127___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction423 < ReduceAction423: superclass init_table position */},
-  {(bigint) parser___ReduceAction423___init},
+  {(bigint) 2 /* 49: ReduceAction127 < ReduceAction127: superclass init_table position */},
+  {(bigint) parser___ReduceAction127___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction423(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction423;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction127::_goto */
+void INIT_ATTRIBUTES__ReduceAction127(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction127;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction423(val_t self, char *from) {
-}
-val_t NEW_ReduceAction423_parser___ReduceAction423___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction423();
-  parser___ReduceAction423___init(self, init_table);
-  CHECKNEW_ReduceAction423(self, "parser::ReduceAction423::init for ReduceAction423");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction424[48] = {
-  {(bigint) 1735 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction424 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction424 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1735 /* 3: ReduceAction424 < ReduceAction424: superclass typecheck marker */},
+val_t NEW_ReduceAction127(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction127;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction127(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction127;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction127____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction127_parser___ReduceAction127___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5665;
+  fra.me.meth = LOCATE_NEW_ReduceAction127_parser___ReduceAction127___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5665 */
+  fra.me.REG[0] = NEW_ReduceAction127();
+  INIT_ATTRIBUTES__ReduceAction127(fra.me.REG[0]);
+  parser___ReduceAction127___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction127(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction128[51] = {
+  {(bigint) 1703 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction128 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction128 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1703 /* 4: ReduceAction128 < ReduceAction128: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77421,14 +88893,9 @@ const classtable_elt_t VFT_ReduceAction424[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction424 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction128 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77436,7 +88903,6 @@ const classtable_elt_t VFT_ReduceAction424[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77444,41 +88910,93 @@ const classtable_elt_t VFT_ReduceAction424[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction424 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction424___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction128 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction128___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction424 < ReduceAction424: superclass init_table position */},
-  {(bigint) parser___ReduceAction424___init},
+  {(bigint) 2 /* 49: ReduceAction128 < ReduceAction128: superclass init_table position */},
+  {(bigint) parser___ReduceAction128___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction424(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction424;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction424(val_t self, char *from) {
-}
-val_t NEW_ReduceAction424_parser___ReduceAction424___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction424();
-  parser___ReduceAction424___init(self, init_table);
-  CHECKNEW_ReduceAction424(self, "parser::ReduceAction424::init for ReduceAction424");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction128::_goto */
+void INIT_ATTRIBUTES__ReduceAction128(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction128;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction425[48] = {
-  {(bigint) 1731 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction425 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction425 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1731 /* 3: ReduceAction425 < ReduceAction425: superclass typecheck marker */},
+val_t NEW_ReduceAction128(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction128;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction128(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction128;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction128____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction128_parser___ReduceAction128___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5714;
+  fra.me.meth = LOCATE_NEW_ReduceAction128_parser___ReduceAction128___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5714 */
+  fra.me.REG[0] = NEW_ReduceAction128();
+  INIT_ATTRIBUTES__ReduceAction128(fra.me.REG[0]);
+  parser___ReduceAction128___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction128(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction129[51] = {
+  {(bigint) 1699 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction129 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction129 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1699 /* 4: ReduceAction129 < ReduceAction129: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77491,14 +89009,9 @@ const classtable_elt_t VFT_ReduceAction425[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction425 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction129 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77506,7 +89019,6 @@ const classtable_elt_t VFT_ReduceAction425[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77514,41 +89026,93 @@ const classtable_elt_t VFT_ReduceAction425[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction425 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction425___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction129 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction129___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction425 < ReduceAction425: superclass init_table position */},
-  {(bigint) parser___ReduceAction425___init},
+  {(bigint) 2 /* 49: ReduceAction129 < ReduceAction129: superclass init_table position */},
+  {(bigint) parser___ReduceAction129___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction425(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction425;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction425(val_t self, char *from) {
-}
-val_t NEW_ReduceAction425_parser___ReduceAction425___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction425();
-  parser___ReduceAction425___init(self, init_table);
-  CHECKNEW_ReduceAction425(self, "parser::ReduceAction425::init for ReduceAction425");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction129::_goto */
+void INIT_ATTRIBUTES__ReduceAction129(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction129;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction426[48] = {
-  {(bigint) 1727 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction426 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction426 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1727 /* 3: ReduceAction426 < ReduceAction426: superclass typecheck marker */},
+val_t NEW_ReduceAction129(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction129;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction129(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction129;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction129____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction129_parser___ReduceAction129___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5750;
+  fra.me.meth = LOCATE_NEW_ReduceAction129_parser___ReduceAction129___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5750 */
+  fra.me.REG[0] = NEW_ReduceAction129();
+  INIT_ATTRIBUTES__ReduceAction129(fra.me.REG[0]);
+  parser___ReduceAction129___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction129(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction130[51] = {
+  {(bigint) 1691 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction130 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction130 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1691 /* 4: ReduceAction130 < ReduceAction130: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77561,14 +89125,9 @@ const classtable_elt_t VFT_ReduceAction426[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction426 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction130 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77576,7 +89135,6 @@ const classtable_elt_t VFT_ReduceAction426[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77584,41 +89142,93 @@ const classtable_elt_t VFT_ReduceAction426[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction426 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction426___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction130 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction130___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction426 < ReduceAction426: superclass init_table position */},
-  {(bigint) parser___ReduceAction426___init},
+  {(bigint) 2 /* 49: ReduceAction130 < ReduceAction130: superclass init_table position */},
+  {(bigint) parser___ReduceAction130___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction426(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction426;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction426(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction130::_goto */
+void INIT_ATTRIBUTES__ReduceAction130(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction130;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction426_parser___ReduceAction426___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction426();
-  parser___ReduceAction426___init(self, init_table);
-  CHECKNEW_ReduceAction426(self, "parser::ReduceAction426::init for ReduceAction426");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction427[48] = {
-  {(bigint) 1723 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction427 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction427 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1723 /* 3: ReduceAction427 < ReduceAction427: superclass typecheck marker */},
+val_t NEW_ReduceAction130(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction130;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction130(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction130;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction130____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction130_parser___ReduceAction130___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5789;
+  fra.me.meth = LOCATE_NEW_ReduceAction130_parser___ReduceAction130___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5789 */
+  fra.me.REG[0] = NEW_ReduceAction130();
+  INIT_ATTRIBUTES__ReduceAction130(fra.me.REG[0]);
+  parser___ReduceAction130___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction130(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction131[51] = {
+  {(bigint) 1687 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction131 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction131 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1687 /* 4: ReduceAction131 < ReduceAction131: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77631,14 +89241,9 @@ const classtable_elt_t VFT_ReduceAction427[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction427 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction131 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77646,7 +89251,6 @@ const classtable_elt_t VFT_ReduceAction427[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77654,41 +89258,93 @@ const classtable_elt_t VFT_ReduceAction427[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction427 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction427___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction131 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction131___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction427 < ReduceAction427: superclass init_table position */},
-  {(bigint) parser___ReduceAction427___init},
+  {(bigint) 2 /* 49: ReduceAction131 < ReduceAction131: superclass init_table position */},
+  {(bigint) parser___ReduceAction131___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction427(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction427;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction131::_goto */
+void INIT_ATTRIBUTES__ReduceAction131(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction131;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction427(val_t self, char *from) {
-}
-val_t NEW_ReduceAction427_parser___ReduceAction427___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction427();
-  parser___ReduceAction427___init(self, init_table);
-  CHECKNEW_ReduceAction427(self, "parser::ReduceAction427::init for ReduceAction427");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction428[48] = {
-  {(bigint) 1719 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction428 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction428 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1719 /* 3: ReduceAction428 < ReduceAction428: superclass typecheck marker */},
+val_t NEW_ReduceAction131(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction131;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction131(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction131;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction131____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction131_parser___ReduceAction131___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5828;
+  fra.me.meth = LOCATE_NEW_ReduceAction131_parser___ReduceAction131___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5828 */
+  fra.me.REG[0] = NEW_ReduceAction131();
+  INIT_ATTRIBUTES__ReduceAction131(fra.me.REG[0]);
+  parser___ReduceAction131___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction131(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction132[51] = {
+  {(bigint) 1683 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction132 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction132 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1683 /* 4: ReduceAction132 < ReduceAction132: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77701,14 +89357,9 @@ const classtable_elt_t VFT_ReduceAction428[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction428 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction132 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77716,7 +89367,6 @@ const classtable_elt_t VFT_ReduceAction428[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77724,41 +89374,93 @@ const classtable_elt_t VFT_ReduceAction428[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction428 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction428___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction132 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction132___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction428 < ReduceAction428: superclass init_table position */},
-  {(bigint) parser___ReduceAction428___init},
+  {(bigint) 2 /* 49: ReduceAction132 < ReduceAction132: superclass init_table position */},
+  {(bigint) parser___ReduceAction132___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction428(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction428;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction428(val_t self, char *from) {
-}
-val_t NEW_ReduceAction428_parser___ReduceAction428___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction428();
-  parser___ReduceAction428___init(self, init_table);
-  CHECKNEW_ReduceAction428(self, "parser::ReduceAction428::init for ReduceAction428");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction132::_goto */
+void INIT_ATTRIBUTES__ReduceAction132(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction132;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction429[48] = {
-  {(bigint) 1715 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction429 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction429 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1715 /* 3: ReduceAction429 < ReduceAction429: superclass typecheck marker */},
+val_t NEW_ReduceAction132(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction132;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction132(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction132;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction132____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction132_parser___ReduceAction132___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5870;
+  fra.me.meth = LOCATE_NEW_ReduceAction132_parser___ReduceAction132___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5870 */
+  fra.me.REG[0] = NEW_ReduceAction132();
+  INIT_ATTRIBUTES__ReduceAction132(fra.me.REG[0]);
+  parser___ReduceAction132___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction132(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction133[51] = {
+  {(bigint) 1679 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction133 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction133 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1679 /* 4: ReduceAction133 < ReduceAction133: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77771,14 +89473,9 @@ const classtable_elt_t VFT_ReduceAction429[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction429 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction133 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77786,7 +89483,6 @@ const classtable_elt_t VFT_ReduceAction429[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77794,41 +89490,93 @@ const classtable_elt_t VFT_ReduceAction429[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction429 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction429___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction133 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction133___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction429 < ReduceAction429: superclass init_table position */},
-  {(bigint) parser___ReduceAction429___init},
+  {(bigint) 2 /* 49: ReduceAction133 < ReduceAction133: superclass init_table position */},
+  {(bigint) parser___ReduceAction133___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction429(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction429;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction429(val_t self, char *from) {
-}
-val_t NEW_ReduceAction429_parser___ReduceAction429___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction429();
-  parser___ReduceAction429___init(self, init_table);
-  CHECKNEW_ReduceAction429(self, "parser::ReduceAction429::init for ReduceAction429");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction133::_goto */
+void INIT_ATTRIBUTES__ReduceAction133(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction133;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction430[48] = {
-  {(bigint) 1707 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction430 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction430 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1707 /* 3: ReduceAction430 < ReduceAction430: superclass typecheck marker */},
+val_t NEW_ReduceAction133(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction133;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction133(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction133;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction133____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction133_parser___ReduceAction133___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5907;
+  fra.me.meth = LOCATE_NEW_ReduceAction133_parser___ReduceAction133___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5907 */
+  fra.me.REG[0] = NEW_ReduceAction133();
+  INIT_ATTRIBUTES__ReduceAction133(fra.me.REG[0]);
+  parser___ReduceAction133___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction133(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction134[51] = {
+  {(bigint) 1675 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction134 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction134 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1675 /* 4: ReduceAction134 < ReduceAction134: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77841,14 +89589,9 @@ const classtable_elt_t VFT_ReduceAction430[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction430 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction134 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77856,7 +89599,6 @@ const classtable_elt_t VFT_ReduceAction430[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77864,41 +89606,93 @@ const classtable_elt_t VFT_ReduceAction430[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction430 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction430___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction134 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction134___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction430 < ReduceAction430: superclass init_table position */},
-  {(bigint) parser___ReduceAction430___init},
+  {(bigint) 2 /* 49: ReduceAction134 < ReduceAction134: superclass init_table position */},
+  {(bigint) parser___ReduceAction134___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction430(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction430;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction430(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction134::_goto */
+void INIT_ATTRIBUTES__ReduceAction134(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction134;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction430_parser___ReduceAction430___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction430();
-  parser___ReduceAction430___init(self, init_table);
-  CHECKNEW_ReduceAction430(self, "parser::ReduceAction430::init for ReduceAction430");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction431[48] = {
-  {(bigint) 1703 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction431 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction431 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1703 /* 3: ReduceAction431 < ReduceAction431: superclass typecheck marker */},
+val_t NEW_ReduceAction134(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction134;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction134(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction134;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction134____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction134_parser___ReduceAction134___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5947;
+  fra.me.meth = LOCATE_NEW_ReduceAction134_parser___ReduceAction134___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5947 */
+  fra.me.REG[0] = NEW_ReduceAction134();
+  INIT_ATTRIBUTES__ReduceAction134(fra.me.REG[0]);
+  parser___ReduceAction134___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction134(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction135[51] = {
+  {(bigint) 1671 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction135 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction135 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1671 /* 4: ReduceAction135 < ReduceAction135: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77911,14 +89705,9 @@ const classtable_elt_t VFT_ReduceAction431[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction431 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction135 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77926,7 +89715,6 @@ const classtable_elt_t VFT_ReduceAction431[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -77934,41 +89722,93 @@ const classtable_elt_t VFT_ReduceAction431[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction431 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction431___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction135 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction135___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction431 < ReduceAction431: superclass init_table position */},
-  {(bigint) parser___ReduceAction431___init},
+  {(bigint) 2 /* 49: ReduceAction135 < ReduceAction135: superclass init_table position */},
+  {(bigint) parser___ReduceAction135___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction431(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction431;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction135::_goto */
+void INIT_ATTRIBUTES__ReduceAction135(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction135;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction431(val_t self, char *from) {
-}
-val_t NEW_ReduceAction431_parser___ReduceAction431___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction431();
-  parser___ReduceAction431___init(self, init_table);
-  CHECKNEW_ReduceAction431(self, "parser::ReduceAction431::init for ReduceAction431");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction432[48] = {
-  {(bigint) 1699 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction432 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction432 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1699 /* 3: ReduceAction432 < ReduceAction432: superclass typecheck marker */},
+val_t NEW_ReduceAction135(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction135;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction135(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction135;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction135____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction135_parser___ReduceAction135___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 5987;
+  fra.me.meth = LOCATE_NEW_ReduceAction135_parser___ReduceAction135___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:5987 */
+  fra.me.REG[0] = NEW_ReduceAction135();
+  INIT_ATTRIBUTES__ReduceAction135(fra.me.REG[0]);
+  parser___ReduceAction135___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction135(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction136[51] = {
+  {(bigint) 1667 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction136 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction136 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1667 /* 4: ReduceAction136 < ReduceAction136: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77981,14 +89821,9 @@ const classtable_elt_t VFT_ReduceAction432[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction432 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction136 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -77996,7 +89831,6 @@ const classtable_elt_t VFT_ReduceAction432[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78004,41 +89838,93 @@ const classtable_elt_t VFT_ReduceAction432[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction432 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction432___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction136 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction136___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction432 < ReduceAction432: superclass init_table position */},
-  {(bigint) parser___ReduceAction432___init},
+  {(bigint) 2 /* 49: ReduceAction136 < ReduceAction136: superclass init_table position */},
+  {(bigint) parser___ReduceAction136___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction432(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction432;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction432(val_t self, char *from) {
-}
-val_t NEW_ReduceAction432_parser___ReduceAction432___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction432();
-  parser___ReduceAction432___init(self, init_table);
-  CHECKNEW_ReduceAction432(self, "parser::ReduceAction432::init for ReduceAction432");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction136::_goto */
+void INIT_ATTRIBUTES__ReduceAction136(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction136;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction433[48] = {
-  {(bigint) 1695 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction433 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction433 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1695 /* 3: ReduceAction433 < ReduceAction433: superclass typecheck marker */},
+val_t NEW_ReduceAction136(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction136;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction136(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction136;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction136____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction136_parser___ReduceAction136___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6030;
+  fra.me.meth = LOCATE_NEW_ReduceAction136_parser___ReduceAction136___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6030 */
+  fra.me.REG[0] = NEW_ReduceAction136();
+  INIT_ATTRIBUTES__ReduceAction136(fra.me.REG[0]);
+  parser___ReduceAction136___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction136(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction137[51] = {
+  {(bigint) 1663 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction137 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction137 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1663 /* 4: ReduceAction137 < ReduceAction137: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78051,14 +89937,9 @@ const classtable_elt_t VFT_ReduceAction433[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction433 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction137 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78066,7 +89947,6 @@ const classtable_elt_t VFT_ReduceAction433[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78074,41 +89954,93 @@ const classtable_elt_t VFT_ReduceAction433[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction433 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction433___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction137 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction137___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction433 < ReduceAction433: superclass init_table position */},
-  {(bigint) parser___ReduceAction433___init},
+  {(bigint) 2 /* 49: ReduceAction137 < ReduceAction137: superclass init_table position */},
+  {(bigint) parser___ReduceAction137___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction433(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction433;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction433(val_t self, char *from) {
-}
-val_t NEW_ReduceAction433_parser___ReduceAction433___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction433();
-  parser___ReduceAction433___init(self, init_table);
-  CHECKNEW_ReduceAction433(self, "parser::ReduceAction433::init for ReduceAction433");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction137::_goto */
+void INIT_ATTRIBUTES__ReduceAction137(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction137;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction434[48] = {
-  {(bigint) 1691 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction434 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction434 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1691 /* 3: ReduceAction434 < ReduceAction434: superclass typecheck marker */},
+val_t NEW_ReduceAction137(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction137;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction137(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction137;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction137____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction137_parser___ReduceAction137___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6064;
+  fra.me.meth = LOCATE_NEW_ReduceAction137_parser___ReduceAction137___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6064 */
+  fra.me.REG[0] = NEW_ReduceAction137();
+  INIT_ATTRIBUTES__ReduceAction137(fra.me.REG[0]);
+  parser___ReduceAction137___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction137(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction138[51] = {
+  {(bigint) 1659 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction138 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction138 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1659 /* 4: ReduceAction138 < ReduceAction138: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78121,14 +90053,9 @@ const classtable_elt_t VFT_ReduceAction434[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction434 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction138 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78136,7 +90063,6 @@ const classtable_elt_t VFT_ReduceAction434[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78144,41 +90070,93 @@ const classtable_elt_t VFT_ReduceAction434[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction434 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction434___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction138 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction138___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction434 < ReduceAction434: superclass init_table position */},
-  {(bigint) parser___ReduceAction434___init},
+  {(bigint) 2 /* 49: ReduceAction138 < ReduceAction138: superclass init_table position */},
+  {(bigint) parser___ReduceAction138___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction434(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction434;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction434(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction138::_goto */
+void INIT_ATTRIBUTES__ReduceAction138(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction138;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction434_parser___ReduceAction434___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction434();
-  parser___ReduceAction434___init(self, init_table);
-  CHECKNEW_ReduceAction434(self, "parser::ReduceAction434::init for ReduceAction434");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction435[48] = {
-  {(bigint) 1687 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction435 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction435 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1687 /* 3: ReduceAction435 < ReduceAction435: superclass typecheck marker */},
+val_t NEW_ReduceAction138(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction138;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction138(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction138;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction138____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction138_parser___ReduceAction138___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6101;
+  fra.me.meth = LOCATE_NEW_ReduceAction138_parser___ReduceAction138___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6101 */
+  fra.me.REG[0] = NEW_ReduceAction138();
+  INIT_ATTRIBUTES__ReduceAction138(fra.me.REG[0]);
+  parser___ReduceAction138___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction138(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction139[51] = {
+  {(bigint) 1655 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction139 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction139 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1655 /* 4: ReduceAction139 < ReduceAction139: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78191,14 +90169,9 @@ const classtable_elt_t VFT_ReduceAction435[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction435 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction139 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78206,7 +90179,6 @@ const classtable_elt_t VFT_ReduceAction435[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78214,41 +90186,93 @@ const classtable_elt_t VFT_ReduceAction435[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction435 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction435___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction139 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction139___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction435 < ReduceAction435: superclass init_table position */},
-  {(bigint) parser___ReduceAction435___init},
+  {(bigint) 2 /* 49: ReduceAction139 < ReduceAction139: superclass init_table position */},
+  {(bigint) parser___ReduceAction139___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction435(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction435;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction139::_goto */
+void INIT_ATTRIBUTES__ReduceAction139(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction139;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction435(val_t self, char *from) {
-}
-val_t NEW_ReduceAction435_parser___ReduceAction435___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction435();
-  parser___ReduceAction435___init(self, init_table);
-  CHECKNEW_ReduceAction435(self, "parser::ReduceAction435::init for ReduceAction435");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction436[48] = {
-  {(bigint) 1683 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction436 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction436 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1683 /* 3: ReduceAction436 < ReduceAction436: superclass typecheck marker */},
+val_t NEW_ReduceAction139(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction139;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction139(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction139;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction139____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction139_parser___ReduceAction139___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6119;
+  fra.me.meth = LOCATE_NEW_ReduceAction139_parser___ReduceAction139___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6119 */
+  fra.me.REG[0] = NEW_ReduceAction139();
+  INIT_ATTRIBUTES__ReduceAction139(fra.me.REG[0]);
+  parser___ReduceAction139___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction139(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction140[51] = {
+  {(bigint) 1647 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction140 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction140 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1647 /* 4: ReduceAction140 < ReduceAction140: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78261,14 +90285,9 @@ const classtable_elt_t VFT_ReduceAction436[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction436 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction140 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78276,7 +90295,6 @@ const classtable_elt_t VFT_ReduceAction436[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78284,41 +90302,93 @@ const classtable_elt_t VFT_ReduceAction436[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction436 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction436___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction140 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction140___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction436 < ReduceAction436: superclass init_table position */},
-  {(bigint) parser___ReduceAction436___init},
+  {(bigint) 2 /* 49: ReduceAction140 < ReduceAction140: superclass init_table position */},
+  {(bigint) parser___ReduceAction140___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction436(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction436;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction436(val_t self, char *from) {
-}
-val_t NEW_ReduceAction436_parser___ReduceAction436___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction436();
-  parser___ReduceAction436___init(self, init_table);
-  CHECKNEW_ReduceAction436(self, "parser::ReduceAction436::init for ReduceAction436");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction140::_goto */
+void INIT_ATTRIBUTES__ReduceAction140(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction140;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction437[48] = {
-  {(bigint) 1679 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction437 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction437 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1679 /* 3: ReduceAction437 < ReduceAction437: superclass typecheck marker */},
+val_t NEW_ReduceAction140(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction140;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction140(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction140;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction140____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction140_parser___ReduceAction140___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6140;
+  fra.me.meth = LOCATE_NEW_ReduceAction140_parser___ReduceAction140___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6140 */
+  fra.me.REG[0] = NEW_ReduceAction140();
+  INIT_ATTRIBUTES__ReduceAction140(fra.me.REG[0]);
+  parser___ReduceAction140___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction140(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction141[51] = {
+  {(bigint) 1643 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction141 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction141 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1643 /* 4: ReduceAction141 < ReduceAction141: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78331,14 +90401,9 @@ const classtable_elt_t VFT_ReduceAction437[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction437 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction141 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78346,7 +90411,6 @@ const classtable_elt_t VFT_ReduceAction437[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78354,41 +90418,93 @@ const classtable_elt_t VFT_ReduceAction437[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction437 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction437___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction141 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction141___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction437 < ReduceAction437: superclass init_table position */},
-  {(bigint) parser___ReduceAction437___init},
+  {(bigint) 2 /* 49: ReduceAction141 < ReduceAction141: superclass init_table position */},
+  {(bigint) parser___ReduceAction141___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction437(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction437;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction437(val_t self, char *from) {
-}
-val_t NEW_ReduceAction437_parser___ReduceAction437___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction437();
-  parser___ReduceAction437___init(self, init_table);
-  CHECKNEW_ReduceAction437(self, "parser::ReduceAction437::init for ReduceAction437");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction141::_goto */
+void INIT_ATTRIBUTES__ReduceAction141(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction141;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction438[48] = {
-  {(bigint) 1675 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction438 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction438 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1675 /* 3: ReduceAction438 < ReduceAction438: superclass typecheck marker */},
+val_t NEW_ReduceAction141(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction141;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction141(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction141;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction141____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction141_parser___ReduceAction141___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6159;
+  fra.me.meth = LOCATE_NEW_ReduceAction141_parser___ReduceAction141___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6159 */
+  fra.me.REG[0] = NEW_ReduceAction141();
+  INIT_ATTRIBUTES__ReduceAction141(fra.me.REG[0]);
+  parser___ReduceAction141___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction141(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction142[51] = {
+  {(bigint) 1639 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction142 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction142 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1639 /* 4: ReduceAction142 < ReduceAction142: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78401,14 +90517,9 @@ const classtable_elt_t VFT_ReduceAction438[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction438 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction142 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78416,7 +90527,6 @@ const classtable_elt_t VFT_ReduceAction438[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78424,41 +90534,93 @@ const classtable_elt_t VFT_ReduceAction438[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction438 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction438___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction142 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction142___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction438 < ReduceAction438: superclass init_table position */},
-  {(bigint) parser___ReduceAction438___init},
+  {(bigint) 2 /* 49: ReduceAction142 < ReduceAction142: superclass init_table position */},
+  {(bigint) parser___ReduceAction142___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction438(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction438;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction438(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction142::_goto */
+void INIT_ATTRIBUTES__ReduceAction142(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction142;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction438_parser___ReduceAction438___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction438();
-  parser___ReduceAction438___init(self, init_table);
-  CHECKNEW_ReduceAction438(self, "parser::ReduceAction438::init for ReduceAction438");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction439[48] = {
-  {(bigint) 1671 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction439 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction439 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1671 /* 3: ReduceAction439 < ReduceAction439: superclass typecheck marker */},
+val_t NEW_ReduceAction142(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction142;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction142(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction142;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction142____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction142_parser___ReduceAction142___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6181;
+  fra.me.meth = LOCATE_NEW_ReduceAction142_parser___ReduceAction142___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6181 */
+  fra.me.REG[0] = NEW_ReduceAction142();
+  INIT_ATTRIBUTES__ReduceAction142(fra.me.REG[0]);
+  parser___ReduceAction142___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction142(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction143[51] = {
+  {(bigint) 1635 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction143 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction143 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1635 /* 4: ReduceAction143 < ReduceAction143: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78471,14 +90633,9 @@ const classtable_elt_t VFT_ReduceAction439[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction439 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction143 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78486,7 +90643,6 @@ const classtable_elt_t VFT_ReduceAction439[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78494,41 +90650,93 @@ const classtable_elt_t VFT_ReduceAction439[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction439 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction439___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction143 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction143___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction439 < ReduceAction439: superclass init_table position */},
-  {(bigint) parser___ReduceAction439___init},
+  {(bigint) 2 /* 49: ReduceAction143 < ReduceAction143: superclass init_table position */},
+  {(bigint) parser___ReduceAction143___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction439(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction439;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction143::_goto */
+void INIT_ATTRIBUTES__ReduceAction143(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction143;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction439(val_t self, char *from) {
-}
-val_t NEW_ReduceAction439_parser___ReduceAction439___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction439();
-  parser___ReduceAction439___init(self, init_table);
-  CHECKNEW_ReduceAction439(self, "parser::ReduceAction439::init for ReduceAction439");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction440[48] = {
-  {(bigint) 1663 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction440 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction440 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1663 /* 3: ReduceAction440 < ReduceAction440: superclass typecheck marker */},
+val_t NEW_ReduceAction143(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction143;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction143(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction143;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction143____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction143_parser___ReduceAction143___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6203;
+  fra.me.meth = LOCATE_NEW_ReduceAction143_parser___ReduceAction143___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6203 */
+  fra.me.REG[0] = NEW_ReduceAction143();
+  INIT_ATTRIBUTES__ReduceAction143(fra.me.REG[0]);
+  parser___ReduceAction143___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction143(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction144[51] = {
+  {(bigint) 1631 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction144 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction144 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1631 /* 4: ReduceAction144 < ReduceAction144: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78541,14 +90749,9 @@ const classtable_elt_t VFT_ReduceAction440[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction440 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction144 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78556,7 +90759,6 @@ const classtable_elt_t VFT_ReduceAction440[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78564,41 +90766,93 @@ const classtable_elt_t VFT_ReduceAction440[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction440 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction440___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction144 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction144___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction440 < ReduceAction440: superclass init_table position */},
-  {(bigint) parser___ReduceAction440___init},
+  {(bigint) 2 /* 49: ReduceAction144 < ReduceAction144: superclass init_table position */},
+  {(bigint) parser___ReduceAction144___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction440(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction440;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction440(val_t self, char *from) {
-}
-val_t NEW_ReduceAction440_parser___ReduceAction440___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction440();
-  parser___ReduceAction440___init(self, init_table);
-  CHECKNEW_ReduceAction440(self, "parser::ReduceAction440::init for ReduceAction440");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction144::_goto */
+void INIT_ATTRIBUTES__ReduceAction144(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction144;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction441[48] = {
-  {(bigint) 1659 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction441 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction441 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1659 /* 3: ReduceAction441 < ReduceAction441: superclass typecheck marker */},
+val_t NEW_ReduceAction144(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction144;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction144(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction144;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction144____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction144_parser___ReduceAction144___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6228;
+  fra.me.meth = LOCATE_NEW_ReduceAction144_parser___ReduceAction144___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6228 */
+  fra.me.REG[0] = NEW_ReduceAction144();
+  INIT_ATTRIBUTES__ReduceAction144(fra.me.REG[0]);
+  parser___ReduceAction144___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction144(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction145[51] = {
+  {(bigint) 1627 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction145 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction145 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1627 /* 4: ReduceAction145 < ReduceAction145: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78611,14 +90865,9 @@ const classtable_elt_t VFT_ReduceAction441[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction441 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction145 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78626,7 +90875,6 @@ const classtable_elt_t VFT_ReduceAction441[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78634,41 +90882,93 @@ const classtable_elt_t VFT_ReduceAction441[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction441 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction441___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction145 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction145___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction441 < ReduceAction441: superclass init_table position */},
-  {(bigint) parser___ReduceAction441___init},
+  {(bigint) 2 /* 49: ReduceAction145 < ReduceAction145: superclass init_table position */},
+  {(bigint) parser___ReduceAction145___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction441(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction441;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction441(val_t self, char *from) {
-}
-val_t NEW_ReduceAction441_parser___ReduceAction441___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction441();
-  parser___ReduceAction441___init(self, init_table);
-  CHECKNEW_ReduceAction441(self, "parser::ReduceAction441::init for ReduceAction441");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction145::_goto */
+void INIT_ATTRIBUTES__ReduceAction145(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction145;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction442[48] = {
-  {(bigint) 1655 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction442 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction442 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1655 /* 3: ReduceAction442 < ReduceAction442: superclass typecheck marker */},
+val_t NEW_ReduceAction145(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction145;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction145(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction145;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction145____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction145_parser___ReduceAction145___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6241;
+  fra.me.meth = LOCATE_NEW_ReduceAction145_parser___ReduceAction145___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6241 */
+  fra.me.REG[0] = NEW_ReduceAction145();
+  INIT_ATTRIBUTES__ReduceAction145(fra.me.REG[0]);
+  parser___ReduceAction145___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction145(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction146[51] = {
+  {(bigint) 1623 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction146 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction146 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1623 /* 4: ReduceAction146 < ReduceAction146: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78681,14 +90981,9 @@ const classtable_elt_t VFT_ReduceAction442[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction442 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction146 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78696,7 +90991,6 @@ const classtable_elt_t VFT_ReduceAction442[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78704,41 +90998,93 @@ const classtable_elt_t VFT_ReduceAction442[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction442 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction442___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction146 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction146___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction442 < ReduceAction442: superclass init_table position */},
-  {(bigint) parser___ReduceAction442___init},
+  {(bigint) 2 /* 49: ReduceAction146 < ReduceAction146: superclass init_table position */},
+  {(bigint) parser___ReduceAction146___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction442(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction442;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction442(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction146::_goto */
+void INIT_ATTRIBUTES__ReduceAction146(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction146;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction442_parser___ReduceAction442___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction442();
-  parser___ReduceAction442___init(self, init_table);
-  CHECKNEW_ReduceAction442(self, "parser::ReduceAction442::init for ReduceAction442");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction443[48] = {
-  {(bigint) 1651 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction443 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction443 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1651 /* 3: ReduceAction443 < ReduceAction443: superclass typecheck marker */},
+val_t NEW_ReduceAction146(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction146;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction146(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction146;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction146____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction146_parser___ReduceAction146___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6259;
+  fra.me.meth = LOCATE_NEW_ReduceAction146_parser___ReduceAction146___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6259 */
+  fra.me.REG[0] = NEW_ReduceAction146();
+  INIT_ATTRIBUTES__ReduceAction146(fra.me.REG[0]);
+  parser___ReduceAction146___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction146(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction147[51] = {
+  {(bigint) 1619 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction147 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction147 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1619 /* 4: ReduceAction147 < ReduceAction147: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78751,14 +91097,9 @@ const classtable_elt_t VFT_ReduceAction443[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction443 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction147 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78766,7 +91107,6 @@ const classtable_elt_t VFT_ReduceAction443[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78774,41 +91114,93 @@ const classtable_elt_t VFT_ReduceAction443[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction443 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction443___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction147 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction147___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction443 < ReduceAction443: superclass init_table position */},
-  {(bigint) parser___ReduceAction443___init},
+  {(bigint) 2 /* 49: ReduceAction147 < ReduceAction147: superclass init_table position */},
+  {(bigint) parser___ReduceAction147___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction443(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction443;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction147::_goto */
+void INIT_ATTRIBUTES__ReduceAction147(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction147;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction443(val_t self, char *from) {
-}
-val_t NEW_ReduceAction443_parser___ReduceAction443___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction443();
-  parser___ReduceAction443___init(self, init_table);
-  CHECKNEW_ReduceAction443(self, "parser::ReduceAction443::init for ReduceAction443");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction444[48] = {
-  {(bigint) 1647 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction444 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction444 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1647 /* 3: ReduceAction444 < ReduceAction444: superclass typecheck marker */},
+val_t NEW_ReduceAction147(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction147;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction147(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction147;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction147____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction147_parser___ReduceAction147___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6277;
+  fra.me.meth = LOCATE_NEW_ReduceAction147_parser___ReduceAction147___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6277 */
+  fra.me.REG[0] = NEW_ReduceAction147();
+  INIT_ATTRIBUTES__ReduceAction147(fra.me.REG[0]);
+  parser___ReduceAction147___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction147(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction148[51] = {
+  {(bigint) 1615 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction148 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction148 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1615 /* 4: ReduceAction148 < ReduceAction148: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78821,14 +91213,9 @@ const classtable_elt_t VFT_ReduceAction444[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction444 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction148 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78836,7 +91223,6 @@ const classtable_elt_t VFT_ReduceAction444[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78844,41 +91230,93 @@ const classtable_elt_t VFT_ReduceAction444[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction444 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction444___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction148 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction148___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction444 < ReduceAction444: superclass init_table position */},
-  {(bigint) parser___ReduceAction444___init},
+  {(bigint) 2 /* 49: ReduceAction148 < ReduceAction148: superclass init_table position */},
+  {(bigint) parser___ReduceAction148___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction444(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction444;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction444(val_t self, char *from) {
-}
-val_t NEW_ReduceAction444_parser___ReduceAction444___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction444();
-  parser___ReduceAction444___init(self, init_table);
-  CHECKNEW_ReduceAction444(self, "parser::ReduceAction444::init for ReduceAction444");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction148::_goto */
+void INIT_ATTRIBUTES__ReduceAction148(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction148;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction445[48] = {
-  {(bigint) 1643 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction445 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction445 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1643 /* 3: ReduceAction445 < ReduceAction445: superclass typecheck marker */},
+val_t NEW_ReduceAction148(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction148;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction148(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction148;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction148____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction148_parser___ReduceAction148___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6295;
+  fra.me.meth = LOCATE_NEW_ReduceAction148_parser___ReduceAction148___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6295 */
+  fra.me.REG[0] = NEW_ReduceAction148();
+  INIT_ATTRIBUTES__ReduceAction148(fra.me.REG[0]);
+  parser___ReduceAction148___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction148(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction149[51] = {
+  {(bigint) 1611 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction149 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction149 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1611 /* 4: ReduceAction149 < ReduceAction149: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78891,14 +91329,9 @@ const classtable_elt_t VFT_ReduceAction445[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction445 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction149 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78906,7 +91339,6 @@ const classtable_elt_t VFT_ReduceAction445[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78914,41 +91346,93 @@ const classtable_elt_t VFT_ReduceAction445[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction445 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction445___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction149 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction149___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction445 < ReduceAction445: superclass init_table position */},
-  {(bigint) parser___ReduceAction445___init},
+  {(bigint) 2 /* 49: ReduceAction149 < ReduceAction149: superclass init_table position */},
+  {(bigint) parser___ReduceAction149___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction445(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction445;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction445(val_t self, char *from) {
-}
-val_t NEW_ReduceAction445_parser___ReduceAction445___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction445();
-  parser___ReduceAction445___init(self, init_table);
-  CHECKNEW_ReduceAction445(self, "parser::ReduceAction445::init for ReduceAction445");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction149::_goto */
+void INIT_ATTRIBUTES__ReduceAction149(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction149;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction446[48] = {
-  {(bigint) 1639 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction446 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction446 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1639 /* 3: ReduceAction446 < ReduceAction446: superclass typecheck marker */},
+val_t NEW_ReduceAction149(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction149;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction149(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction149;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction149____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction149_parser___ReduceAction149___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6312;
+  fra.me.meth = LOCATE_NEW_ReduceAction149_parser___ReduceAction149___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6312 */
+  fra.me.REG[0] = NEW_ReduceAction149();
+  INIT_ATTRIBUTES__ReduceAction149(fra.me.REG[0]);
+  parser___ReduceAction149___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction149(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction150[51] = {
+  {(bigint) 1603 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction150 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction150 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1603 /* 4: ReduceAction150 < ReduceAction150: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78961,14 +91445,9 @@ const classtable_elt_t VFT_ReduceAction446[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction446 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction150 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -78976,7 +91455,6 @@ const classtable_elt_t VFT_ReduceAction446[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -78984,41 +91462,93 @@ const classtable_elt_t VFT_ReduceAction446[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction446 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction446___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction150 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction150___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction446 < ReduceAction446: superclass init_table position */},
-  {(bigint) parser___ReduceAction446___init},
+  {(bigint) 2 /* 49: ReduceAction150 < ReduceAction150: superclass init_table position */},
+  {(bigint) parser___ReduceAction150___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction446(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction446;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction446(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction150::_goto */
+void INIT_ATTRIBUTES__ReduceAction150(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction150;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction446_parser___ReduceAction446___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction446();
-  parser___ReduceAction446___init(self, init_table);
-  CHECKNEW_ReduceAction446(self, "parser::ReduceAction446::init for ReduceAction446");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction447[48] = {
-  {(bigint) 1635 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction447 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction447 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1635 /* 3: ReduceAction447 < ReduceAction447: superclass typecheck marker */},
+val_t NEW_ReduceAction150(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction150;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction150(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction150;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction150____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction150_parser___ReduceAction150___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6329;
+  fra.me.meth = LOCATE_NEW_ReduceAction150_parser___ReduceAction150___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6329 */
+  fra.me.REG[0] = NEW_ReduceAction150();
+  INIT_ATTRIBUTES__ReduceAction150(fra.me.REG[0]);
+  parser___ReduceAction150___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction150(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction151[51] = {
+  {(bigint) 1599 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction151 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction151 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1599 /* 4: ReduceAction151 < ReduceAction151: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79031,14 +91561,9 @@ const classtable_elt_t VFT_ReduceAction447[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction447 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction151 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79046,7 +91571,6 @@ const classtable_elt_t VFT_ReduceAction447[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79054,41 +91578,93 @@ const classtable_elt_t VFT_ReduceAction447[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction447 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction447___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction151 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction151___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction447 < ReduceAction447: superclass init_table position */},
-  {(bigint) parser___ReduceAction447___init},
+  {(bigint) 2 /* 49: ReduceAction151 < ReduceAction151: superclass init_table position */},
+  {(bigint) parser___ReduceAction151___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction447(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction447;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction151::_goto */
+void INIT_ATTRIBUTES__ReduceAction151(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction151;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction447(val_t self, char *from) {
-}
-val_t NEW_ReduceAction447_parser___ReduceAction447___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction447();
-  parser___ReduceAction447___init(self, init_table);
-  CHECKNEW_ReduceAction447(self, "parser::ReduceAction447::init for ReduceAction447");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction448[48] = {
-  {(bigint) 1631 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction448 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction448 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1631 /* 3: ReduceAction448 < ReduceAction448: superclass typecheck marker */},
+val_t NEW_ReduceAction151(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction151;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction151(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction151;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction151____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction151_parser___ReduceAction151___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6346;
+  fra.me.meth = LOCATE_NEW_ReduceAction151_parser___ReduceAction151___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6346 */
+  fra.me.REG[0] = NEW_ReduceAction151();
+  INIT_ATTRIBUTES__ReduceAction151(fra.me.REG[0]);
+  parser___ReduceAction151___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction151(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction152[51] = {
+  {(bigint) 1595 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction152 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction152 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1595 /* 4: ReduceAction152 < ReduceAction152: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79101,14 +91677,9 @@ const classtable_elt_t VFT_ReduceAction448[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction448 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction152 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79116,7 +91687,6 @@ const classtable_elt_t VFT_ReduceAction448[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79124,41 +91694,93 @@ const classtable_elt_t VFT_ReduceAction448[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction448 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction448___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction152 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction152___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction448 < ReduceAction448: superclass init_table position */},
-  {(bigint) parser___ReduceAction448___init},
+  {(bigint) 2 /* 49: ReduceAction152 < ReduceAction152: superclass init_table position */},
+  {(bigint) parser___ReduceAction152___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction448(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction448;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction448(val_t self, char *from) {
-}
-val_t NEW_ReduceAction448_parser___ReduceAction448___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction448();
-  parser___ReduceAction448___init(self, init_table);
-  CHECKNEW_ReduceAction448(self, "parser::ReduceAction448::init for ReduceAction448");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction152::_goto */
+void INIT_ATTRIBUTES__ReduceAction152(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction152;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction449[48] = {
-  {(bigint) 1627 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction449 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction449 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1627 /* 3: ReduceAction449 < ReduceAction449: superclass typecheck marker */},
+val_t NEW_ReduceAction152(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction152;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction152(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction152;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction152____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction152_parser___ReduceAction152___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6363;
+  fra.me.meth = LOCATE_NEW_ReduceAction152_parser___ReduceAction152___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6363 */
+  fra.me.REG[0] = NEW_ReduceAction152();
+  INIT_ATTRIBUTES__ReduceAction152(fra.me.REG[0]);
+  parser___ReduceAction152___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction152(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction153[51] = {
+  {(bigint) 1591 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction153 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction153 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1591 /* 4: ReduceAction153 < ReduceAction153: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79171,14 +91793,9 @@ const classtable_elt_t VFT_ReduceAction449[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction449 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction153 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79186,7 +91803,6 @@ const classtable_elt_t VFT_ReduceAction449[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79194,41 +91810,93 @@ const classtable_elt_t VFT_ReduceAction449[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction449 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction449___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction153 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction153___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction449 < ReduceAction449: superclass init_table position */},
-  {(bigint) parser___ReduceAction449___init},
+  {(bigint) 2 /* 49: ReduceAction153 < ReduceAction153: superclass init_table position */},
+  {(bigint) parser___ReduceAction153___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction449(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction449;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction449(val_t self, char *from) {
-}
-val_t NEW_ReduceAction449_parser___ReduceAction449___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction449();
-  parser___ReduceAction449___init(self, init_table);
-  CHECKNEW_ReduceAction449(self, "parser::ReduceAction449::init for ReduceAction449");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction153::_goto */
+void INIT_ATTRIBUTES__ReduceAction153(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction153;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction450[48] = {
-  {(bigint) 1619 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction450 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction450 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1619 /* 3: ReduceAction450 < ReduceAction450: superclass typecheck marker */},
+val_t NEW_ReduceAction153(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction153;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction153(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction153;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction153____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction153_parser___ReduceAction153___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6380;
+  fra.me.meth = LOCATE_NEW_ReduceAction153_parser___ReduceAction153___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6380 */
+  fra.me.REG[0] = NEW_ReduceAction153();
+  INIT_ATTRIBUTES__ReduceAction153(fra.me.REG[0]);
+  parser___ReduceAction153___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction153(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction154[51] = {
+  {(bigint) 1587 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction154 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction154 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1587 /* 4: ReduceAction154 < ReduceAction154: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79241,14 +91909,9 @@ const classtable_elt_t VFT_ReduceAction450[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction450 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction154 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79256,7 +91919,6 @@ const classtable_elt_t VFT_ReduceAction450[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79264,41 +91926,93 @@ const classtable_elt_t VFT_ReduceAction450[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction450 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction450___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction154 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction154___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction450 < ReduceAction450: superclass init_table position */},
-  {(bigint) parser___ReduceAction450___init},
+  {(bigint) 2 /* 49: ReduceAction154 < ReduceAction154: superclass init_table position */},
+  {(bigint) parser___ReduceAction154___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction450(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction450;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction450(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction154::_goto */
+void INIT_ATTRIBUTES__ReduceAction154(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction154;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction450_parser___ReduceAction450___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction450();
-  parser___ReduceAction450___init(self, init_table);
-  CHECKNEW_ReduceAction450(self, "parser::ReduceAction450::init for ReduceAction450");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction451[48] = {
-  {(bigint) 1615 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction451 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction451 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1615 /* 3: ReduceAction451 < ReduceAction451: superclass typecheck marker */},
+val_t NEW_ReduceAction154(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction154;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction154(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction154;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction154____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction154_parser___ReduceAction154___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6397;
+  fra.me.meth = LOCATE_NEW_ReduceAction154_parser___ReduceAction154___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6397 */
+  fra.me.REG[0] = NEW_ReduceAction154();
+  INIT_ATTRIBUTES__ReduceAction154(fra.me.REG[0]);
+  parser___ReduceAction154___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction154(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction155[51] = {
+  {(bigint) 1583 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction155 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction155 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1583 /* 4: ReduceAction155 < ReduceAction155: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79311,14 +92025,9 @@ const classtable_elt_t VFT_ReduceAction451[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction451 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction155 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79326,7 +92035,6 @@ const classtable_elt_t VFT_ReduceAction451[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79334,41 +92042,93 @@ const classtable_elt_t VFT_ReduceAction451[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction451 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction451___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction155 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction155___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction451 < ReduceAction451: superclass init_table position */},
-  {(bigint) parser___ReduceAction451___init},
+  {(bigint) 2 /* 49: ReduceAction155 < ReduceAction155: superclass init_table position */},
+  {(bigint) parser___ReduceAction155___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction451(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction451;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction155::_goto */
+void INIT_ATTRIBUTES__ReduceAction155(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction155;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction451(val_t self, char *from) {
-}
-val_t NEW_ReduceAction451_parser___ReduceAction451___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction451();
-  parser___ReduceAction451___init(self, init_table);
-  CHECKNEW_ReduceAction451(self, "parser::ReduceAction451::init for ReduceAction451");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction452[48] = {
-  {(bigint) 1611 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction452 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction452 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1611 /* 3: ReduceAction452 < ReduceAction452: superclass typecheck marker */},
+val_t NEW_ReduceAction155(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction155;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction155(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction155;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction155____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction155_parser___ReduceAction155___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6414;
+  fra.me.meth = LOCATE_NEW_ReduceAction155_parser___ReduceAction155___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6414 */
+  fra.me.REG[0] = NEW_ReduceAction155();
+  INIT_ATTRIBUTES__ReduceAction155(fra.me.REG[0]);
+  parser___ReduceAction155___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction155(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction156[51] = {
+  {(bigint) 1579 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction156 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction156 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1579 /* 4: ReduceAction156 < ReduceAction156: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79381,14 +92141,9 @@ const classtable_elt_t VFT_ReduceAction452[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction452 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction156 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79396,7 +92151,6 @@ const classtable_elt_t VFT_ReduceAction452[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79404,41 +92158,93 @@ const classtable_elt_t VFT_ReduceAction452[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction452 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction452___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction156 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction156___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction452 < ReduceAction452: superclass init_table position */},
-  {(bigint) parser___ReduceAction452___init},
+  {(bigint) 2 /* 49: ReduceAction156 < ReduceAction156: superclass init_table position */},
+  {(bigint) parser___ReduceAction156___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction452(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction452;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction452(val_t self, char *from) {
-}
-val_t NEW_ReduceAction452_parser___ReduceAction452___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction452();
-  parser___ReduceAction452___init(self, init_table);
-  CHECKNEW_ReduceAction452(self, "parser::ReduceAction452::init for ReduceAction452");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction156::_goto */
+void INIT_ATTRIBUTES__ReduceAction156(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction156;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction453[48] = {
-  {(bigint) 1607 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction453 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction453 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1607 /* 3: ReduceAction453 < ReduceAction453: superclass typecheck marker */},
+val_t NEW_ReduceAction156(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction156;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction156(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction156;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction156____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction156_parser___ReduceAction156___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6431;
+  fra.me.meth = LOCATE_NEW_ReduceAction156_parser___ReduceAction156___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6431 */
+  fra.me.REG[0] = NEW_ReduceAction156();
+  INIT_ATTRIBUTES__ReduceAction156(fra.me.REG[0]);
+  parser___ReduceAction156___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction156(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction157[51] = {
+  {(bigint) 1575 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction157 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction157 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1575 /* 4: ReduceAction157 < ReduceAction157: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79451,14 +92257,9 @@ const classtable_elt_t VFT_ReduceAction453[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction453 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction157 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79466,7 +92267,6 @@ const classtable_elt_t VFT_ReduceAction453[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79474,41 +92274,93 @@ const classtable_elt_t VFT_ReduceAction453[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction453 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction453___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction157 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction157___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction453 < ReduceAction453: superclass init_table position */},
-  {(bigint) parser___ReduceAction453___init},
+  {(bigint) 2 /* 49: ReduceAction157 < ReduceAction157: superclass init_table position */},
+  {(bigint) parser___ReduceAction157___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction453(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction453;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction453(val_t self, char *from) {
-}
-val_t NEW_ReduceAction453_parser___ReduceAction453___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction453();
-  parser___ReduceAction453___init(self, init_table);
-  CHECKNEW_ReduceAction453(self, "parser::ReduceAction453::init for ReduceAction453");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction157::_goto */
+void INIT_ATTRIBUTES__ReduceAction157(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction157;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction454[48] = {
-  {(bigint) 1603 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction454 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction454 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1603 /* 3: ReduceAction454 < ReduceAction454: superclass typecheck marker */},
+val_t NEW_ReduceAction157(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction157;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction157(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction157;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction157____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction157_parser___ReduceAction157___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6448;
+  fra.me.meth = LOCATE_NEW_ReduceAction157_parser___ReduceAction157___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6448 */
+  fra.me.REG[0] = NEW_ReduceAction157();
+  INIT_ATTRIBUTES__ReduceAction157(fra.me.REG[0]);
+  parser___ReduceAction157___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction157(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction158[51] = {
+  {(bigint) 1571 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction158 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction158 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1571 /* 4: ReduceAction158 < ReduceAction158: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79521,14 +92373,9 @@ const classtable_elt_t VFT_ReduceAction454[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction454 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction158 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79536,7 +92383,6 @@ const classtable_elt_t VFT_ReduceAction454[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79544,41 +92390,93 @@ const classtable_elt_t VFT_ReduceAction454[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction454 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction454___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction158 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction158___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction454 < ReduceAction454: superclass init_table position */},
-  {(bigint) parser___ReduceAction454___init},
+  {(bigint) 2 /* 49: ReduceAction158 < ReduceAction158: superclass init_table position */},
+  {(bigint) parser___ReduceAction158___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction454(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction454;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction454(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction158::_goto */
+void INIT_ATTRIBUTES__ReduceAction158(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction158;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction454_parser___ReduceAction454___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction454();
-  parser___ReduceAction454___init(self, init_table);
-  CHECKNEW_ReduceAction454(self, "parser::ReduceAction454::init for ReduceAction454");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction455[48] = {
-  {(bigint) 1599 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction455 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction455 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1599 /* 3: ReduceAction455 < ReduceAction455: superclass typecheck marker */},
+val_t NEW_ReduceAction158(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction158;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction158(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction158;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction158____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction158_parser___ReduceAction158___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6465;
+  fra.me.meth = LOCATE_NEW_ReduceAction158_parser___ReduceAction158___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6465 */
+  fra.me.REG[0] = NEW_ReduceAction158();
+  INIT_ATTRIBUTES__ReduceAction158(fra.me.REG[0]);
+  parser___ReduceAction158___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction158(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction159[51] = {
+  {(bigint) 1567 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction159 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction159 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1567 /* 4: ReduceAction159 < ReduceAction159: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79591,14 +92489,9 @@ const classtable_elt_t VFT_ReduceAction455[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction455 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction159 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79606,7 +92499,6 @@ const classtable_elt_t VFT_ReduceAction455[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79614,41 +92506,93 @@ const classtable_elt_t VFT_ReduceAction455[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction455 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction455___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction159 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction159___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction455 < ReduceAction455: superclass init_table position */},
-  {(bigint) parser___ReduceAction455___init},
+  {(bigint) 2 /* 49: ReduceAction159 < ReduceAction159: superclass init_table position */},
+  {(bigint) parser___ReduceAction159___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction455(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction455;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction159::_goto */
+void INIT_ATTRIBUTES__ReduceAction159(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction159;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction455(val_t self, char *from) {
-}
-val_t NEW_ReduceAction455_parser___ReduceAction455___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction455();
-  parser___ReduceAction455___init(self, init_table);
-  CHECKNEW_ReduceAction455(self, "parser::ReduceAction455::init for ReduceAction455");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction456[48] = {
-  {(bigint) 1595 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction456 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction456 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1595 /* 3: ReduceAction456 < ReduceAction456: superclass typecheck marker */},
+val_t NEW_ReduceAction159(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction159;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction159(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction159;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction159____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction159_parser___ReduceAction159___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6482;
+  fra.me.meth = LOCATE_NEW_ReduceAction159_parser___ReduceAction159___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6482 */
+  fra.me.REG[0] = NEW_ReduceAction159();
+  INIT_ATTRIBUTES__ReduceAction159(fra.me.REG[0]);
+  parser___ReduceAction159___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction159(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction160[51] = {
+  {(bigint) 1559 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction160 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction160 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1559 /* 4: ReduceAction160 < ReduceAction160: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79661,14 +92605,9 @@ const classtable_elt_t VFT_ReduceAction456[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction456 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction160 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79676,7 +92615,6 @@ const classtable_elt_t VFT_ReduceAction456[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79684,41 +92622,93 @@ const classtable_elt_t VFT_ReduceAction456[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction456 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction456___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction160 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction160___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction456 < ReduceAction456: superclass init_table position */},
-  {(bigint) parser___ReduceAction456___init},
+  {(bigint) 2 /* 49: ReduceAction160 < ReduceAction160: superclass init_table position */},
+  {(bigint) parser___ReduceAction160___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction456(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction456;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction456(val_t self, char *from) {
-}
-val_t NEW_ReduceAction456_parser___ReduceAction456___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction456();
-  parser___ReduceAction456___init(self, init_table);
-  CHECKNEW_ReduceAction456(self, "parser::ReduceAction456::init for ReduceAction456");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction160::_goto */
+void INIT_ATTRIBUTES__ReduceAction160(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction160;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction457[48] = {
-  {(bigint) 1591 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction457 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction457 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1591 /* 3: ReduceAction457 < ReduceAction457: superclass typecheck marker */},
+val_t NEW_ReduceAction160(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction160;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction160(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction160;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction160____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction160_parser___ReduceAction160___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6499;
+  fra.me.meth = LOCATE_NEW_ReduceAction160_parser___ReduceAction160___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6499 */
+  fra.me.REG[0] = NEW_ReduceAction160();
+  INIT_ATTRIBUTES__ReduceAction160(fra.me.REG[0]);
+  parser___ReduceAction160___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction160(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction161[51] = {
+  {(bigint) 1555 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction161 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction161 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1555 /* 4: ReduceAction161 < ReduceAction161: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79731,14 +92721,9 @@ const classtable_elt_t VFT_ReduceAction457[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction457 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction161 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79746,7 +92731,6 @@ const classtable_elt_t VFT_ReduceAction457[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79754,41 +92738,93 @@ const classtable_elt_t VFT_ReduceAction457[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction457 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction457___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction161 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction161___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction457 < ReduceAction457: superclass init_table position */},
-  {(bigint) parser___ReduceAction457___init},
+  {(bigint) 2 /* 49: ReduceAction161 < ReduceAction161: superclass init_table position */},
+  {(bigint) parser___ReduceAction161___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction457(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction457;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction457(val_t self, char *from) {
-}
-val_t NEW_ReduceAction457_parser___ReduceAction457___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction457();
-  parser___ReduceAction457___init(self, init_table);
-  CHECKNEW_ReduceAction457(self, "parser::ReduceAction457::init for ReduceAction457");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction161::_goto */
+void INIT_ATTRIBUTES__ReduceAction161(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction161;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction458[48] = {
-  {(bigint) 1587 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction458 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction458 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1587 /* 3: ReduceAction458 < ReduceAction458: superclass typecheck marker */},
+val_t NEW_ReduceAction161(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction161;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction161(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction161;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction161____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction161_parser___ReduceAction161___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6516;
+  fra.me.meth = LOCATE_NEW_ReduceAction161_parser___ReduceAction161___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6516 */
+  fra.me.REG[0] = NEW_ReduceAction161();
+  INIT_ATTRIBUTES__ReduceAction161(fra.me.REG[0]);
+  parser___ReduceAction161___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction161(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction162[51] = {
+  {(bigint) 1551 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction162 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction162 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1551 /* 4: ReduceAction162 < ReduceAction162: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79801,14 +92837,9 @@ const classtable_elt_t VFT_ReduceAction458[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction458 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction162 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79816,7 +92847,6 @@ const classtable_elt_t VFT_ReduceAction458[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79824,41 +92854,93 @@ const classtable_elt_t VFT_ReduceAction458[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction458 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction458___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction162 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction162___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction458 < ReduceAction458: superclass init_table position */},
-  {(bigint) parser___ReduceAction458___init},
+  {(bigint) 2 /* 49: ReduceAction162 < ReduceAction162: superclass init_table position */},
+  {(bigint) parser___ReduceAction162___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction458(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction458;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction458(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction162::_goto */
+void INIT_ATTRIBUTES__ReduceAction162(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction162;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction458_parser___ReduceAction458___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction458();
-  parser___ReduceAction458___init(self, init_table);
-  CHECKNEW_ReduceAction458(self, "parser::ReduceAction458::init for ReduceAction458");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction459[48] = {
-  {(bigint) 1583 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction459 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction459 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1583 /* 3: ReduceAction459 < ReduceAction459: superclass typecheck marker */},
+val_t NEW_ReduceAction162(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction162;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction162(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction162;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction162____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction162_parser___ReduceAction162___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6533;
+  fra.me.meth = LOCATE_NEW_ReduceAction162_parser___ReduceAction162___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6533 */
+  fra.me.REG[0] = NEW_ReduceAction162();
+  INIT_ATTRIBUTES__ReduceAction162(fra.me.REG[0]);
+  parser___ReduceAction162___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction162(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction163[51] = {
+  {(bigint) 1547 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction163 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction163 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1547 /* 4: ReduceAction163 < ReduceAction163: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79871,14 +92953,9 @@ const classtable_elt_t VFT_ReduceAction459[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction459 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction163 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79886,7 +92963,6 @@ const classtable_elt_t VFT_ReduceAction459[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79894,41 +92970,93 @@ const classtable_elt_t VFT_ReduceAction459[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction459 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction459___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction163 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction163___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction459 < ReduceAction459: superclass init_table position */},
-  {(bigint) parser___ReduceAction459___init},
+  {(bigint) 2 /* 49: ReduceAction163 < ReduceAction163: superclass init_table position */},
+  {(bigint) parser___ReduceAction163___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction459(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction459;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction163::_goto */
+void INIT_ATTRIBUTES__ReduceAction163(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction163;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction459(val_t self, char *from) {
-}
-val_t NEW_ReduceAction459_parser___ReduceAction459___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction459();
-  parser___ReduceAction459___init(self, init_table);
-  CHECKNEW_ReduceAction459(self, "parser::ReduceAction459::init for ReduceAction459");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction460[48] = {
-  {(bigint) 1575 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction460 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction460 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1575 /* 3: ReduceAction460 < ReduceAction460: superclass typecheck marker */},
+val_t NEW_ReduceAction163(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction163;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction163(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction163;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction163____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction163_parser___ReduceAction163___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6554;
+  fra.me.meth = LOCATE_NEW_ReduceAction163_parser___ReduceAction163___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6554 */
+  fra.me.REG[0] = NEW_ReduceAction163();
+  INIT_ATTRIBUTES__ReduceAction163(fra.me.REG[0]);
+  parser___ReduceAction163___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction163(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction164[51] = {
+  {(bigint) 1543 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction164 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction164 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1543 /* 4: ReduceAction164 < ReduceAction164: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79941,14 +93069,9 @@ const classtable_elt_t VFT_ReduceAction460[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction460 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction164 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -79956,7 +93079,6 @@ const classtable_elt_t VFT_ReduceAction460[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -79964,41 +93086,93 @@ const classtable_elt_t VFT_ReduceAction460[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction460 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction460___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction164 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction164___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction460 < ReduceAction460: superclass init_table position */},
-  {(bigint) parser___ReduceAction460___init},
+  {(bigint) 2 /* 49: ReduceAction164 < ReduceAction164: superclass init_table position */},
+  {(bigint) parser___ReduceAction164___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction460(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction460;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction460(val_t self, char *from) {
-}
-val_t NEW_ReduceAction460_parser___ReduceAction460___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction460();
-  parser___ReduceAction460___init(self, init_table);
-  CHECKNEW_ReduceAction460(self, "parser::ReduceAction460::init for ReduceAction460");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction164::_goto */
+void INIT_ATTRIBUTES__ReduceAction164(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction164;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction461[48] = {
-  {(bigint) 1571 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction461 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction461 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1571 /* 3: ReduceAction461 < ReduceAction461: superclass typecheck marker */},
+val_t NEW_ReduceAction164(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction164;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction164(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction164;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction164____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction164_parser___ReduceAction164___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6571;
+  fra.me.meth = LOCATE_NEW_ReduceAction164_parser___ReduceAction164___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6571 */
+  fra.me.REG[0] = NEW_ReduceAction164();
+  INIT_ATTRIBUTES__ReduceAction164(fra.me.REG[0]);
+  parser___ReduceAction164___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction164(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction165[51] = {
+  {(bigint) 1539 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction165 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction165 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1539 /* 4: ReduceAction165 < ReduceAction165: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80011,14 +93185,9 @@ const classtable_elt_t VFT_ReduceAction461[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction461 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction165 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80026,7 +93195,6 @@ const classtable_elt_t VFT_ReduceAction461[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80034,41 +93202,93 @@ const classtable_elt_t VFT_ReduceAction461[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction461 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction461___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction165 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction165___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction461 < ReduceAction461: superclass init_table position */},
-  {(bigint) parser___ReduceAction461___init},
+  {(bigint) 2 /* 49: ReduceAction165 < ReduceAction165: superclass init_table position */},
+  {(bigint) parser___ReduceAction165___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction461(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction461;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction461(val_t self, char *from) {
-}
-val_t NEW_ReduceAction461_parser___ReduceAction461___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction461();
-  parser___ReduceAction461___init(self, init_table);
-  CHECKNEW_ReduceAction461(self, "parser::ReduceAction461::init for ReduceAction461");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction165::_goto */
+void INIT_ATTRIBUTES__ReduceAction165(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction165;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction462[48] = {
-  {(bigint) 1567 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction462 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction462 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1567 /* 3: ReduceAction462 < ReduceAction462: superclass typecheck marker */},
+val_t NEW_ReduceAction165(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction165;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction165(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction165;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction165____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction165_parser___ReduceAction165___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6592;
+  fra.me.meth = LOCATE_NEW_ReduceAction165_parser___ReduceAction165___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6592 */
+  fra.me.REG[0] = NEW_ReduceAction165();
+  INIT_ATTRIBUTES__ReduceAction165(fra.me.REG[0]);
+  parser___ReduceAction165___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction165(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction166[51] = {
+  {(bigint) 1535 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction166 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction166 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1535 /* 4: ReduceAction166 < ReduceAction166: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80081,14 +93301,9 @@ const classtable_elt_t VFT_ReduceAction462[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction462 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction166 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80096,7 +93311,6 @@ const classtable_elt_t VFT_ReduceAction462[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80104,41 +93318,93 @@ const classtable_elt_t VFT_ReduceAction462[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction462 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction462___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction166 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction166___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction462 < ReduceAction462: superclass init_table position */},
-  {(bigint) parser___ReduceAction462___init},
+  {(bigint) 2 /* 49: ReduceAction166 < ReduceAction166: superclass init_table position */},
+  {(bigint) parser___ReduceAction166___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction462(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction462;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction462(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction166::_goto */
+void INIT_ATTRIBUTES__ReduceAction166(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction166;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction462_parser___ReduceAction462___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction462();
-  parser___ReduceAction462___init(self, init_table);
-  CHECKNEW_ReduceAction462(self, "parser::ReduceAction462::init for ReduceAction462");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction463[48] = {
-  {(bigint) 1563 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction463 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction463 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1563 /* 3: ReduceAction463 < ReduceAction463: superclass typecheck marker */},
+val_t NEW_ReduceAction166(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction166;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction166(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction166;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction166____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction166_parser___ReduceAction166___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6617;
+  fra.me.meth = LOCATE_NEW_ReduceAction166_parser___ReduceAction166___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6617 */
+  fra.me.REG[0] = NEW_ReduceAction166();
+  INIT_ATTRIBUTES__ReduceAction166(fra.me.REG[0]);
+  parser___ReduceAction166___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction166(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction167[51] = {
+  {(bigint) 1531 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction167 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction167 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1531 /* 4: ReduceAction167 < ReduceAction167: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80151,14 +93417,9 @@ const classtable_elt_t VFT_ReduceAction463[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction463 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction167 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80166,7 +93427,6 @@ const classtable_elt_t VFT_ReduceAction463[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80174,41 +93434,93 @@ const classtable_elt_t VFT_ReduceAction463[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction463 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction463___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction167 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction167___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction463 < ReduceAction463: superclass init_table position */},
-  {(bigint) parser___ReduceAction463___init},
+  {(bigint) 2 /* 49: ReduceAction167 < ReduceAction167: superclass init_table position */},
+  {(bigint) parser___ReduceAction167___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction463(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction463;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction167::_goto */
+void INIT_ATTRIBUTES__ReduceAction167(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction167;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction463(val_t self, char *from) {
-}
-val_t NEW_ReduceAction463_parser___ReduceAction463___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction463();
-  parser___ReduceAction463___init(self, init_table);
-  CHECKNEW_ReduceAction463(self, "parser::ReduceAction463::init for ReduceAction463");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction464[48] = {
-  {(bigint) 1559 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction464 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction464 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1559 /* 3: ReduceAction464 < ReduceAction464: superclass typecheck marker */},
+val_t NEW_ReduceAction167(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction167;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction167(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction167;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction167____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction167_parser___ReduceAction167___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6642;
+  fra.me.meth = LOCATE_NEW_ReduceAction167_parser___ReduceAction167___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6642 */
+  fra.me.REG[0] = NEW_ReduceAction167();
+  INIT_ATTRIBUTES__ReduceAction167(fra.me.REG[0]);
+  parser___ReduceAction167___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction167(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction168[51] = {
+  {(bigint) 1527 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction168 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction168 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1527 /* 4: ReduceAction168 < ReduceAction168: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80221,14 +93533,9 @@ const classtable_elt_t VFT_ReduceAction464[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction464 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction168 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80236,7 +93543,6 @@ const classtable_elt_t VFT_ReduceAction464[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80244,41 +93550,93 @@ const classtable_elt_t VFT_ReduceAction464[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction464 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction464___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction168 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction168___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction464 < ReduceAction464: superclass init_table position */},
-  {(bigint) parser___ReduceAction464___init},
+  {(bigint) 2 /* 49: ReduceAction168 < ReduceAction168: superclass init_table position */},
+  {(bigint) parser___ReduceAction168___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction464(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction464;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction464(val_t self, char *from) {
-}
-val_t NEW_ReduceAction464_parser___ReduceAction464___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction464();
-  parser___ReduceAction464___init(self, init_table);
-  CHECKNEW_ReduceAction464(self, "parser::ReduceAction464::init for ReduceAction464");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction168::_goto */
+void INIT_ATTRIBUTES__ReduceAction168(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction168;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction465[48] = {
-  {(bigint) 1555 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction465 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction465 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1555 /* 3: ReduceAction465 < ReduceAction465: superclass typecheck marker */},
+val_t NEW_ReduceAction168(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction168;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction168(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction168;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction168____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction168_parser___ReduceAction168___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6671;
+  fra.me.meth = LOCATE_NEW_ReduceAction168_parser___ReduceAction168___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6671 */
+  fra.me.REG[0] = NEW_ReduceAction168();
+  INIT_ATTRIBUTES__ReduceAction168(fra.me.REG[0]);
+  parser___ReduceAction168___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction168(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction169[51] = {
+  {(bigint) 1523 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction169 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction169 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1523 /* 4: ReduceAction169 < ReduceAction169: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80291,14 +93649,9 @@ const classtable_elt_t VFT_ReduceAction465[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction465 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction169 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80306,7 +93659,6 @@ const classtable_elt_t VFT_ReduceAction465[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80314,41 +93666,93 @@ const classtable_elt_t VFT_ReduceAction465[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction465 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction465___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction169 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction169___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction465 < ReduceAction465: superclass init_table position */},
-  {(bigint) parser___ReduceAction465___init},
+  {(bigint) 2 /* 49: ReduceAction169 < ReduceAction169: superclass init_table position */},
+  {(bigint) parser___ReduceAction169___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction465(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction465;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction465(val_t self, char *from) {
-}
-val_t NEW_ReduceAction465_parser___ReduceAction465___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction465();
-  parser___ReduceAction465___init(self, init_table);
-  CHECKNEW_ReduceAction465(self, "parser::ReduceAction465::init for ReduceAction465");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction169::_goto */
+void INIT_ATTRIBUTES__ReduceAction169(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction169;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction466[48] = {
-  {(bigint) 1551 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction466 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction466 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1551 /* 3: ReduceAction466 < ReduceAction466: superclass typecheck marker */},
+val_t NEW_ReduceAction169(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction169;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction169(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction169;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction169____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction169_parser___ReduceAction169___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6693;
+  fra.me.meth = LOCATE_NEW_ReduceAction169_parser___ReduceAction169___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6693 */
+  fra.me.REG[0] = NEW_ReduceAction169();
+  INIT_ATTRIBUTES__ReduceAction169(fra.me.REG[0]);
+  parser___ReduceAction169___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction169(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction170[51] = {
+  {(bigint) 1515 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction170 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction170 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1515 /* 4: ReduceAction170 < ReduceAction170: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80361,14 +93765,9 @@ const classtable_elt_t VFT_ReduceAction466[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction466 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction170 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80376,7 +93775,6 @@ const classtable_elt_t VFT_ReduceAction466[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80384,42 +93782,93 @@ const classtable_elt_t VFT_ReduceAction466[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction466 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction466___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction170 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction170___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction466 < ReduceAction466: superclass init_table position */},
-  {(bigint) parser___ReduceAction466___init},
+  {(bigint) 2 /* 49: ReduceAction170 < ReduceAction170: superclass init_table position */},
+  {(bigint) parser___ReduceAction170___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction466(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction466;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction466(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction170::_goto */
+void INIT_ATTRIBUTES__ReduceAction170(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction170;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction466_parser___ReduceAction466___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction466();
-  parser___ReduceAction466___init(self, init_table);
-  CHECKNEW_ReduceAction466(self, "parser::ReduceAction466::init for ReduceAction466");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction467[48] = {
-  {(bigint) 1547 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction467 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction467 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1547 /* 3: ReduceAction467 < ReduceAction467: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ReduceAction170(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction170;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction170(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction170;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction170____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction170_parser___ReduceAction170___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6719;
+  fra.me.meth = LOCATE_NEW_ReduceAction170_parser___ReduceAction170___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6719 */
+  fra.me.REG[0] = NEW_ReduceAction170();
+  INIT_ATTRIBUTES__ReduceAction170(fra.me.REG[0]);
+  parser___ReduceAction170___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction170(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction171[51] = {
+  {(bigint) 1511 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction171 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction171 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1511 /* 4: ReduceAction171 < ReduceAction171: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80431,14 +93880,10 @@ const classtable_elt_t VFT_ReduceAction467[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction467 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction171 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80446,7 +93891,6 @@ const classtable_elt_t VFT_ReduceAction467[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80454,41 +93898,93 @@ const classtable_elt_t VFT_ReduceAction467[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction467 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction467___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction171 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction171___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction467 < ReduceAction467: superclass init_table position */},
-  {(bigint) parser___ReduceAction467___init},
+  {(bigint) 2 /* 49: ReduceAction171 < ReduceAction171: superclass init_table position */},
+  {(bigint) parser___ReduceAction171___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction467(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction467;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction467(val_t self, char *from) {
-}
-val_t NEW_ReduceAction467_parser___ReduceAction467___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction467();
-  parser___ReduceAction467___init(self, init_table);
-  CHECKNEW_ReduceAction467(self, "parser::ReduceAction467::init for ReduceAction467");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction171::_goto */
+void INIT_ATTRIBUTES__ReduceAction171(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction171;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction468[48] = {
-  {(bigint) 1543 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction468 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction468 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1543 /* 3: ReduceAction468 < ReduceAction468: superclass typecheck marker */},
+val_t NEW_ReduceAction171(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction171;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction171(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction171;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction171____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction171_parser___ReduceAction171___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6741;
+  fra.me.meth = LOCATE_NEW_ReduceAction171_parser___ReduceAction171___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6741 */
+  fra.me.REG[0] = NEW_ReduceAction171();
+  INIT_ATTRIBUTES__ReduceAction171(fra.me.REG[0]);
+  parser___ReduceAction171___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction171(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction172[51] = {
+  {(bigint) 1507 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction172 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction172 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1507 /* 4: ReduceAction172 < ReduceAction172: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80501,14 +93997,9 @@ const classtable_elt_t VFT_ReduceAction468[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction468 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction172 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80516,7 +94007,6 @@ const classtable_elt_t VFT_ReduceAction468[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80524,41 +94014,93 @@ const classtable_elt_t VFT_ReduceAction468[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction468 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction468___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction172 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction172___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction468 < ReduceAction468: superclass init_table position */},
-  {(bigint) parser___ReduceAction468___init},
+  {(bigint) 2 /* 49: ReduceAction172 < ReduceAction172: superclass init_table position */},
+  {(bigint) parser___ReduceAction172___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction468(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction468;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction468(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction172::_goto */
+void INIT_ATTRIBUTES__ReduceAction172(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction172;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction468_parser___ReduceAction468___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction468();
-  parser___ReduceAction468___init(self, init_table);
-  CHECKNEW_ReduceAction468(self, "parser::ReduceAction468::init for ReduceAction468");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction469[48] = {
-  {(bigint) 1539 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction469 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction469 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1539 /* 3: ReduceAction469 < ReduceAction469: superclass typecheck marker */},
+val_t NEW_ReduceAction172(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction172;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction172(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction172;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction172____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction172_parser___ReduceAction172___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6767;
+  fra.me.meth = LOCATE_NEW_ReduceAction172_parser___ReduceAction172___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6767 */
+  fra.me.REG[0] = NEW_ReduceAction172();
+  INIT_ATTRIBUTES__ReduceAction172(fra.me.REG[0]);
+  parser___ReduceAction172___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction172(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction173[51] = {
+  {(bigint) 1503 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction173 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction173 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1503 /* 4: ReduceAction173 < ReduceAction173: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80571,14 +94113,9 @@ const classtable_elt_t VFT_ReduceAction469[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction469 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction173 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80586,7 +94123,6 @@ const classtable_elt_t VFT_ReduceAction469[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80594,41 +94130,93 @@ const classtable_elt_t VFT_ReduceAction469[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction469 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction469___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction173 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction173___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction469 < ReduceAction469: superclass init_table position */},
-  {(bigint) parser___ReduceAction469___init},
+  {(bigint) 2 /* 49: ReduceAction173 < ReduceAction173: superclass init_table position */},
+  {(bigint) parser___ReduceAction173___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction469(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction469;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction173::_goto */
+void INIT_ATTRIBUTES__ReduceAction173(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction173;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction469(val_t self, char *from) {
-}
-val_t NEW_ReduceAction469_parser___ReduceAction469___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction469();
-  parser___ReduceAction469___init(self, init_table);
-  CHECKNEW_ReduceAction469(self, "parser::ReduceAction469::init for ReduceAction469");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction470[48] = {
-  {(bigint) 1531 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction470 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction470 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1531 /* 3: ReduceAction470 < ReduceAction470: superclass typecheck marker */},
+val_t NEW_ReduceAction173(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction173;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction173(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction173;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction173____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction173_parser___ReduceAction173___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6786;
+  fra.me.meth = LOCATE_NEW_ReduceAction173_parser___ReduceAction173___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6786 */
+  fra.me.REG[0] = NEW_ReduceAction173();
+  INIT_ATTRIBUTES__ReduceAction173(fra.me.REG[0]);
+  parser___ReduceAction173___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction173(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction174[51] = {
+  {(bigint) 1499 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction174 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction174 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1499 /* 4: ReduceAction174 < ReduceAction174: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80641,14 +94229,9 @@ const classtable_elt_t VFT_ReduceAction470[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction470 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction174 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80656,7 +94239,6 @@ const classtable_elt_t VFT_ReduceAction470[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80664,41 +94246,93 @@ const classtable_elt_t VFT_ReduceAction470[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction470 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction470___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction174 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction174___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction470 < ReduceAction470: superclass init_table position */},
-  {(bigint) parser___ReduceAction470___init},
+  {(bigint) 2 /* 49: ReduceAction174 < ReduceAction174: superclass init_table position */},
+  {(bigint) parser___ReduceAction174___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction470(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction470;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction470(val_t self, char *from) {
-}
-val_t NEW_ReduceAction470_parser___ReduceAction470___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction470();
-  parser___ReduceAction470___init(self, init_table);
-  CHECKNEW_ReduceAction470(self, "parser::ReduceAction470::init for ReduceAction470");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction174::_goto */
+void INIT_ATTRIBUTES__ReduceAction174(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction174;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction471[48] = {
-  {(bigint) 1527 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction471 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction471 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1527 /* 3: ReduceAction471 < ReduceAction471: superclass typecheck marker */},
+val_t NEW_ReduceAction174(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction174;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction174(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction174;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction174____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction174_parser___ReduceAction174___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6809;
+  fra.me.meth = LOCATE_NEW_ReduceAction174_parser___ReduceAction174___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6809 */
+  fra.me.REG[0] = NEW_ReduceAction174();
+  INIT_ATTRIBUTES__ReduceAction174(fra.me.REG[0]);
+  parser___ReduceAction174___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction174(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction175[51] = {
+  {(bigint) 1495 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction175 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction175 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1495 /* 4: ReduceAction175 < ReduceAction175: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80711,14 +94345,9 @@ const classtable_elt_t VFT_ReduceAction471[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction471 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction175 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80726,7 +94355,6 @@ const classtable_elt_t VFT_ReduceAction471[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80734,41 +94362,93 @@ const classtable_elt_t VFT_ReduceAction471[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction471 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction471___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction175 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction175___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction471 < ReduceAction471: superclass init_table position */},
-  {(bigint) parser___ReduceAction471___init},
+  {(bigint) 2 /* 49: ReduceAction175 < ReduceAction175: superclass init_table position */},
+  {(bigint) parser___ReduceAction175___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction471(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction471;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction471(val_t self, char *from) {
-}
-val_t NEW_ReduceAction471_parser___ReduceAction471___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction471();
-  parser___ReduceAction471___init(self, init_table);
-  CHECKNEW_ReduceAction471(self, "parser::ReduceAction471::init for ReduceAction471");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction175::_goto */
+void INIT_ATTRIBUTES__ReduceAction175(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction175;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction472[48] = {
-  {(bigint) 1523 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction472 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction472 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1523 /* 3: ReduceAction472 < ReduceAction472: superclass typecheck marker */},
+val_t NEW_ReduceAction175(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction175;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction175(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction175;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction175____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction175_parser___ReduceAction175___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6827;
+  fra.me.meth = LOCATE_NEW_ReduceAction175_parser___ReduceAction175___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6827 */
+  fra.me.REG[0] = NEW_ReduceAction175();
+  INIT_ATTRIBUTES__ReduceAction175(fra.me.REG[0]);
+  parser___ReduceAction175___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction175(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction176[51] = {
+  {(bigint) 1491 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction176 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction176 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1491 /* 4: ReduceAction176 < ReduceAction176: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80781,14 +94461,9 @@ const classtable_elt_t VFT_ReduceAction472[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction472 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction176 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80796,7 +94471,6 @@ const classtable_elt_t VFT_ReduceAction472[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80804,41 +94478,93 @@ const classtable_elt_t VFT_ReduceAction472[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction472 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction472___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction176 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction176___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction472 < ReduceAction472: superclass init_table position */},
-  {(bigint) parser___ReduceAction472___init},
+  {(bigint) 2 /* 49: ReduceAction176 < ReduceAction176: superclass init_table position */},
+  {(bigint) parser___ReduceAction176___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction472(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction472;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction472(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction176::_goto */
+void INIT_ATTRIBUTES__ReduceAction176(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction176;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction472_parser___ReduceAction472___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction472();
-  parser___ReduceAction472___init(self, init_table);
-  CHECKNEW_ReduceAction472(self, "parser::ReduceAction472::init for ReduceAction472");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction473[48] = {
-  {(bigint) 1519 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction473 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction473 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1519 /* 3: ReduceAction473 < ReduceAction473: superclass typecheck marker */},
+val_t NEW_ReduceAction176(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction176;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction176(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction176;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction176____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction176_parser___ReduceAction176___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6849;
+  fra.me.meth = LOCATE_NEW_ReduceAction176_parser___ReduceAction176___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6849 */
+  fra.me.REG[0] = NEW_ReduceAction176();
+  INIT_ATTRIBUTES__ReduceAction176(fra.me.REG[0]);
+  parser___ReduceAction176___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction176(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction177[51] = {
+  {(bigint) 1487 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction177 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction177 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1487 /* 4: ReduceAction177 < ReduceAction177: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80851,14 +94577,9 @@ const classtable_elt_t VFT_ReduceAction473[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction473 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction177 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80866,7 +94587,6 @@ const classtable_elt_t VFT_ReduceAction473[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80874,41 +94594,93 @@ const classtable_elt_t VFT_ReduceAction473[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction473 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction473___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction177 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction177___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction473 < ReduceAction473: superclass init_table position */},
-  {(bigint) parser___ReduceAction473___init},
+  {(bigint) 2 /* 49: ReduceAction177 < ReduceAction177: superclass init_table position */},
+  {(bigint) parser___ReduceAction177___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction473(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction473;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction177::_goto */
+void INIT_ATTRIBUTES__ReduceAction177(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction177;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction473(val_t self, char *from) {
-}
-val_t NEW_ReduceAction473_parser___ReduceAction473___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction473();
-  parser___ReduceAction473___init(self, init_table);
-  CHECKNEW_ReduceAction473(self, "parser::ReduceAction473::init for ReduceAction473");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction474[48] = {
-  {(bigint) 1515 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction474 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction474 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1515 /* 3: ReduceAction474 < ReduceAction474: superclass typecheck marker */},
+val_t NEW_ReduceAction177(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction177;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction177(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction177;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction177____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction177_parser___ReduceAction177___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6870;
+  fra.me.meth = LOCATE_NEW_ReduceAction177_parser___ReduceAction177___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6870 */
+  fra.me.REG[0] = NEW_ReduceAction177();
+  INIT_ATTRIBUTES__ReduceAction177(fra.me.REG[0]);
+  parser___ReduceAction177___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction177(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction178[51] = {
+  {(bigint) 1483 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction178 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction178 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1483 /* 4: ReduceAction178 < ReduceAction178: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80921,14 +94693,9 @@ const classtable_elt_t VFT_ReduceAction474[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction474 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction178 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -80936,7 +94703,6 @@ const classtable_elt_t VFT_ReduceAction474[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -80944,41 +94710,93 @@ const classtable_elt_t VFT_ReduceAction474[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction474 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction474___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction178 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction178___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction474 < ReduceAction474: superclass init_table position */},
-  {(bigint) parser___ReduceAction474___init},
+  {(bigint) 2 /* 49: ReduceAction178 < ReduceAction178: superclass init_table position */},
+  {(bigint) parser___ReduceAction178___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction474(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction474;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction474(val_t self, char *from) {
-}
-val_t NEW_ReduceAction474_parser___ReduceAction474___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction474();
-  parser___ReduceAction474___init(self, init_table);
-  CHECKNEW_ReduceAction474(self, "parser::ReduceAction474::init for ReduceAction474");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction178::_goto */
+void INIT_ATTRIBUTES__ReduceAction178(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction178;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction475[48] = {
-  {(bigint) 1511 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction475 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction475 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1511 /* 3: ReduceAction475 < ReduceAction475: superclass typecheck marker */},
+val_t NEW_ReduceAction178(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction178;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction178(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction178;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction178____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction178_parser___ReduceAction178___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6895;
+  fra.me.meth = LOCATE_NEW_ReduceAction178_parser___ReduceAction178___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6895 */
+  fra.me.REG[0] = NEW_ReduceAction178();
+  INIT_ATTRIBUTES__ReduceAction178(fra.me.REG[0]);
+  parser___ReduceAction178___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction178(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction179[51] = {
+  {(bigint) 1479 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction179 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction179 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1479 /* 4: ReduceAction179 < ReduceAction179: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80991,14 +94809,9 @@ const classtable_elt_t VFT_ReduceAction475[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction475 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction179 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81006,7 +94819,6 @@ const classtable_elt_t VFT_ReduceAction475[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81014,41 +94826,93 @@ const classtable_elt_t VFT_ReduceAction475[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction475 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction475___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction179 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction179___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction475 < ReduceAction475: superclass init_table position */},
-  {(bigint) parser___ReduceAction475___init},
+  {(bigint) 2 /* 49: ReduceAction179 < ReduceAction179: superclass init_table position */},
+  {(bigint) parser___ReduceAction179___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction475(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction475;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction475(val_t self, char *from) {
-}
-val_t NEW_ReduceAction475_parser___ReduceAction475___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction475();
-  parser___ReduceAction475___init(self, init_table);
-  CHECKNEW_ReduceAction475(self, "parser::ReduceAction475::init for ReduceAction475");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction179::_goto */
+void INIT_ATTRIBUTES__ReduceAction179(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction179;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction476[48] = {
-  {(bigint) 1507 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction476 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction476 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1507 /* 3: ReduceAction476 < ReduceAction476: superclass typecheck marker */},
+val_t NEW_ReduceAction179(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction179;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction179(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction179;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction179____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction179_parser___ReduceAction179___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6916;
+  fra.me.meth = LOCATE_NEW_ReduceAction179_parser___ReduceAction179___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6916 */
+  fra.me.REG[0] = NEW_ReduceAction179();
+  INIT_ATTRIBUTES__ReduceAction179(fra.me.REG[0]);
+  parser___ReduceAction179___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction179(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction180[51] = {
+  {(bigint) 1471 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction180 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction180 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1471 /* 4: ReduceAction180 < ReduceAction180: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81061,14 +94925,9 @@ const classtable_elt_t VFT_ReduceAction476[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction476 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction180 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81076,7 +94935,6 @@ const classtable_elt_t VFT_ReduceAction476[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81084,41 +94942,93 @@ const classtable_elt_t VFT_ReduceAction476[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction476 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction476___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction180 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction180___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction476 < ReduceAction476: superclass init_table position */},
-  {(bigint) parser___ReduceAction476___init},
+  {(bigint) 2 /* 49: ReduceAction180 < ReduceAction180: superclass init_table position */},
+  {(bigint) parser___ReduceAction180___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction476(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction476;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction476(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction180::_goto */
+void INIT_ATTRIBUTES__ReduceAction180(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction180;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction476_parser___ReduceAction476___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction476();
-  parser___ReduceAction476___init(self, init_table);
-  CHECKNEW_ReduceAction476(self, "parser::ReduceAction476::init for ReduceAction476");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction477[48] = {
-  {(bigint) 1503 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction477 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction477 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1503 /* 3: ReduceAction477 < ReduceAction477: superclass typecheck marker */},
+val_t NEW_ReduceAction180(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction180;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction180(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction180;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction180____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction180_parser___ReduceAction180___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6941;
+  fra.me.meth = LOCATE_NEW_ReduceAction180_parser___ReduceAction180___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6941 */
+  fra.me.REG[0] = NEW_ReduceAction180();
+  INIT_ATTRIBUTES__ReduceAction180(fra.me.REG[0]);
+  parser___ReduceAction180___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction180(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction181[51] = {
+  {(bigint) 1467 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction181 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction181 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1467 /* 4: ReduceAction181 < ReduceAction181: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81131,14 +95041,9 @@ const classtable_elt_t VFT_ReduceAction477[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction477 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction181 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81146,7 +95051,6 @@ const classtable_elt_t VFT_ReduceAction477[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81154,41 +95058,93 @@ const classtable_elt_t VFT_ReduceAction477[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction477 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction477___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction181 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction181___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction477 < ReduceAction477: superclass init_table position */},
-  {(bigint) parser___ReduceAction477___init},
+  {(bigint) 2 /* 49: ReduceAction181 < ReduceAction181: superclass init_table position */},
+  {(bigint) parser___ReduceAction181___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction477(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction477;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction181::_goto */
+void INIT_ATTRIBUTES__ReduceAction181(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction181;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction477(val_t self, char *from) {
-}
-val_t NEW_ReduceAction477_parser___ReduceAction477___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction477();
-  parser___ReduceAction477___init(self, init_table);
-  CHECKNEW_ReduceAction477(self, "parser::ReduceAction477::init for ReduceAction477");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction478[48] = {
-  {(bigint) 1499 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction478 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction478 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1499 /* 3: ReduceAction478 < ReduceAction478: superclass typecheck marker */},
+val_t NEW_ReduceAction181(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction181;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction181(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction181;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction181____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction181_parser___ReduceAction181___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6956;
+  fra.me.meth = LOCATE_NEW_ReduceAction181_parser___ReduceAction181___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6956 */
+  fra.me.REG[0] = NEW_ReduceAction181();
+  INIT_ATTRIBUTES__ReduceAction181(fra.me.REG[0]);
+  parser___ReduceAction181___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction181(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction182[51] = {
+  {(bigint) 1463 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction182 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction182 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1463 /* 4: ReduceAction182 < ReduceAction182: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81201,14 +95157,9 @@ const classtable_elt_t VFT_ReduceAction478[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction478 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction182 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81216,7 +95167,6 @@ const classtable_elt_t VFT_ReduceAction478[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81224,41 +95174,93 @@ const classtable_elt_t VFT_ReduceAction478[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction478 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction478___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction182 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction182___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction478 < ReduceAction478: superclass init_table position */},
-  {(bigint) parser___ReduceAction478___init},
+  {(bigint) 2 /* 49: ReduceAction182 < ReduceAction182: superclass init_table position */},
+  {(bigint) parser___ReduceAction182___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction478(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction478;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction478(val_t self, char *from) {
-}
-val_t NEW_ReduceAction478_parser___ReduceAction478___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction478();
-  parser___ReduceAction478___init(self, init_table);
-  CHECKNEW_ReduceAction478(self, "parser::ReduceAction478::init for ReduceAction478");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction182::_goto */
+void INIT_ATTRIBUTES__ReduceAction182(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction182;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction479[48] = {
-  {(bigint) 1495 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction479 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction479 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1495 /* 3: ReduceAction479 < ReduceAction479: superclass typecheck marker */},
+val_t NEW_ReduceAction182(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction182;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction182(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction182;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction182____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction182_parser___ReduceAction182___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6971;
+  fra.me.meth = LOCATE_NEW_ReduceAction182_parser___ReduceAction182___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6971 */
+  fra.me.REG[0] = NEW_ReduceAction182();
+  INIT_ATTRIBUTES__ReduceAction182(fra.me.REG[0]);
+  parser___ReduceAction182___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction182(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction183[51] = {
+  {(bigint) 1459 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction183 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction183 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1459 /* 4: ReduceAction183 < ReduceAction183: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81271,14 +95273,9 @@ const classtable_elt_t VFT_ReduceAction479[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction479 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction183 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81286,7 +95283,6 @@ const classtable_elt_t VFT_ReduceAction479[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81294,41 +95290,93 @@ const classtable_elt_t VFT_ReduceAction479[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction479 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction479___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction183 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction183___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction479 < ReduceAction479: superclass init_table position */},
-  {(bigint) parser___ReduceAction479___init},
+  {(bigint) 2 /* 49: ReduceAction183 < ReduceAction183: superclass init_table position */},
+  {(bigint) parser___ReduceAction183___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction479(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction479;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction479(val_t self, char *from) {
-}
-val_t NEW_ReduceAction479_parser___ReduceAction479___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction479();
-  parser___ReduceAction479___init(self, init_table);
-  CHECKNEW_ReduceAction479(self, "parser::ReduceAction479::init for ReduceAction479");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction183::_goto */
+void INIT_ATTRIBUTES__ReduceAction183(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction183;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction480[48] = {
-  {(bigint) 1487 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction480 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction480 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1487 /* 3: ReduceAction480 < ReduceAction480: superclass typecheck marker */},
+val_t NEW_ReduceAction183(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction183;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction183(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction183;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction183____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction183_parser___ReduceAction183___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 6990;
+  fra.me.meth = LOCATE_NEW_ReduceAction183_parser___ReduceAction183___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:6990 */
+  fra.me.REG[0] = NEW_ReduceAction183();
+  INIT_ATTRIBUTES__ReduceAction183(fra.me.REG[0]);
+  parser___ReduceAction183___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction183(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction184[51] = {
+  {(bigint) 1455 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction184 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction184 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1455 /* 4: ReduceAction184 < ReduceAction184: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81341,14 +95389,9 @@ const classtable_elt_t VFT_ReduceAction480[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction480 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction184 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81356,7 +95399,6 @@ const classtable_elt_t VFT_ReduceAction480[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81364,41 +95406,93 @@ const classtable_elt_t VFT_ReduceAction480[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction480 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction480___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction184 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction184___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction480 < ReduceAction480: superclass init_table position */},
-  {(bigint) parser___ReduceAction480___init},
+  {(bigint) 2 /* 49: ReduceAction184 < ReduceAction184: superclass init_table position */},
+  {(bigint) parser___ReduceAction184___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction480(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction480;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction480(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction184::_goto */
+void INIT_ATTRIBUTES__ReduceAction184(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction184;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction480_parser___ReduceAction480___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction480();
-  parser___ReduceAction480___init(self, init_table);
-  CHECKNEW_ReduceAction480(self, "parser::ReduceAction480::init for ReduceAction480");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction481[48] = {
-  {(bigint) 1483 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction481 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction481 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1483 /* 3: ReduceAction481 < ReduceAction481: superclass typecheck marker */},
+val_t NEW_ReduceAction184(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction184;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction184(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction184;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction184____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction184_parser___ReduceAction184___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7012;
+  fra.me.meth = LOCATE_NEW_ReduceAction184_parser___ReduceAction184___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7012 */
+  fra.me.REG[0] = NEW_ReduceAction184();
+  INIT_ATTRIBUTES__ReduceAction184(fra.me.REG[0]);
+  parser___ReduceAction184___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction184(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction185[51] = {
+  {(bigint) 1451 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction185 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction185 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1451 /* 4: ReduceAction185 < ReduceAction185: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81411,14 +95505,9 @@ const classtable_elt_t VFT_ReduceAction481[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction481 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction185 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81426,7 +95515,6 @@ const classtable_elt_t VFT_ReduceAction481[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81434,41 +95522,93 @@ const classtable_elt_t VFT_ReduceAction481[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction481 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction481___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction185 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction185___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction481 < ReduceAction481: superclass init_table position */},
-  {(bigint) parser___ReduceAction481___init},
+  {(bigint) 2 /* 49: ReduceAction185 < ReduceAction185: superclass init_table position */},
+  {(bigint) parser___ReduceAction185___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction481(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction481;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction185::_goto */
+void INIT_ATTRIBUTES__ReduceAction185(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction185;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction481(val_t self, char *from) {
-}
-val_t NEW_ReduceAction481_parser___ReduceAction481___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction481();
-  parser___ReduceAction481___init(self, init_table);
-  CHECKNEW_ReduceAction481(self, "parser::ReduceAction481::init for ReduceAction481");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction482[48] = {
-  {(bigint) 1479 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction482 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction482 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1479 /* 3: ReduceAction482 < ReduceAction482: superclass typecheck marker */},
+val_t NEW_ReduceAction185(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction185;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction185(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction185;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction185____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction185_parser___ReduceAction185___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7037;
+  fra.me.meth = LOCATE_NEW_ReduceAction185_parser___ReduceAction185___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7037 */
+  fra.me.REG[0] = NEW_ReduceAction185();
+  INIT_ATTRIBUTES__ReduceAction185(fra.me.REG[0]);
+  parser___ReduceAction185___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction185(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction186[51] = {
+  {(bigint) 1447 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction186 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction186 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1447 /* 4: ReduceAction186 < ReduceAction186: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81481,14 +95621,9 @@ const classtable_elt_t VFT_ReduceAction482[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction482 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction186 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81496,7 +95631,6 @@ const classtable_elt_t VFT_ReduceAction482[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81504,41 +95638,93 @@ const classtable_elt_t VFT_ReduceAction482[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction482 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction482___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction186 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction186___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction482 < ReduceAction482: superclass init_table position */},
-  {(bigint) parser___ReduceAction482___init},
+  {(bigint) 2 /* 49: ReduceAction186 < ReduceAction186: superclass init_table position */},
+  {(bigint) parser___ReduceAction186___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction482(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction482;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction482(val_t self, char *from) {
-}
-val_t NEW_ReduceAction482_parser___ReduceAction482___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction482();
-  parser___ReduceAction482___init(self, init_table);
-  CHECKNEW_ReduceAction482(self, "parser::ReduceAction482::init for ReduceAction482");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction186::_goto */
+void INIT_ATTRIBUTES__ReduceAction186(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction186;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction483[48] = {
-  {(bigint) 1475 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction483 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction483 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1475 /* 3: ReduceAction483 < ReduceAction483: superclass typecheck marker */},
+val_t NEW_ReduceAction186(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction186;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction186(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction186;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction186____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction186_parser___ReduceAction186___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7054;
+  fra.me.meth = LOCATE_NEW_ReduceAction186_parser___ReduceAction186___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7054 */
+  fra.me.REG[0] = NEW_ReduceAction186();
+  INIT_ATTRIBUTES__ReduceAction186(fra.me.REG[0]);
+  parser___ReduceAction186___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction186(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction187[51] = {
+  {(bigint) 1443 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction187 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction187 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1443 /* 4: ReduceAction187 < ReduceAction187: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81551,14 +95737,9 @@ const classtable_elt_t VFT_ReduceAction483[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction483 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction187 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81566,7 +95747,6 @@ const classtable_elt_t VFT_ReduceAction483[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81574,41 +95754,93 @@ const classtable_elt_t VFT_ReduceAction483[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction483 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction483___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction187 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction187___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction483 < ReduceAction483: superclass init_table position */},
-  {(bigint) parser___ReduceAction483___init},
+  {(bigint) 2 /* 49: ReduceAction187 < ReduceAction187: superclass init_table position */},
+  {(bigint) parser___ReduceAction187___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction483(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction483;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction483(val_t self, char *from) {
-}
-val_t NEW_ReduceAction483_parser___ReduceAction483___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction483();
-  parser___ReduceAction483___init(self, init_table);
-  CHECKNEW_ReduceAction483(self, "parser::ReduceAction483::init for ReduceAction483");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction187::_goto */
+void INIT_ATTRIBUTES__ReduceAction187(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction187;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction484[48] = {
-  {(bigint) 1471 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction484 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction484 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1471 /* 3: ReduceAction484 < ReduceAction484: superclass typecheck marker */},
+val_t NEW_ReduceAction187(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction187;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction187(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction187;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction187____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction187_parser___ReduceAction187___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7082;
+  fra.me.meth = LOCATE_NEW_ReduceAction187_parser___ReduceAction187___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7082 */
+  fra.me.REG[0] = NEW_ReduceAction187();
+  INIT_ATTRIBUTES__ReduceAction187(fra.me.REG[0]);
+  parser___ReduceAction187___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction187(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction188[51] = {
+  {(bigint) 1439 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction188 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction188 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1439 /* 4: ReduceAction188 < ReduceAction188: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81621,14 +95853,9 @@ const classtable_elt_t VFT_ReduceAction484[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction484 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction188 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81636,7 +95863,6 @@ const classtable_elt_t VFT_ReduceAction484[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81644,41 +95870,93 @@ const classtable_elt_t VFT_ReduceAction484[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction484 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction484___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction484 < ReduceAction484: superclass init_table position */},
-  {(bigint) parser___ReduceAction484___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction484(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction484;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction484(val_t self, char *from) {
-}
-val_t NEW_ReduceAction484_parser___ReduceAction484___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction484();
-  parser___ReduceAction484___init(self, init_table);
-  CHECKNEW_ReduceAction484(self, "parser::ReduceAction484::init for ReduceAction484");
-  return self;
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction188 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction188___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 49: ReduceAction188 < ReduceAction188: superclass init_table position */},
+  {(bigint) parser___ReduceAction188___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction188::_goto */
+void INIT_ATTRIBUTES__ReduceAction188(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction188;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction485[48] = {
-  {(bigint) 1467 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction485 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction485 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1467 /* 3: ReduceAction485 < ReduceAction485: superclass typecheck marker */},
+val_t NEW_ReduceAction188(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction188;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction188(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction188;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction188____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction188_parser___ReduceAction188___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7113;
+  fra.me.meth = LOCATE_NEW_ReduceAction188_parser___ReduceAction188___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7113 */
+  fra.me.REG[0] = NEW_ReduceAction188();
+  INIT_ATTRIBUTES__ReduceAction188(fra.me.REG[0]);
+  parser___ReduceAction188___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction188(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction189[51] = {
+  {(bigint) 1435 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction189 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction189 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1435 /* 4: ReduceAction189 < ReduceAction189: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81691,14 +95969,9 @@ const classtable_elt_t VFT_ReduceAction485[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction485 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction189 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81706,7 +95979,6 @@ const classtable_elt_t VFT_ReduceAction485[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81714,41 +95986,93 @@ const classtable_elt_t VFT_ReduceAction485[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction485 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction485___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction189 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction189___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction485 < ReduceAction485: superclass init_table position */},
-  {(bigint) parser___ReduceAction485___init},
+  {(bigint) 2 /* 49: ReduceAction189 < ReduceAction189: superclass init_table position */},
+  {(bigint) parser___ReduceAction189___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction485(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction485;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction485(val_t self, char *from) {
-}
-val_t NEW_ReduceAction485_parser___ReduceAction485___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction485();
-  parser___ReduceAction485___init(self, init_table);
-  CHECKNEW_ReduceAction485(self, "parser::ReduceAction485::init for ReduceAction485");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction189::_goto */
+void INIT_ATTRIBUTES__ReduceAction189(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction189;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction486[48] = {
-  {(bigint) 1463 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction486 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction486 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1463 /* 3: ReduceAction486 < ReduceAction486: superclass typecheck marker */},
+val_t NEW_ReduceAction189(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction189;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction189(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction189;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction189____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction189_parser___ReduceAction189___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7145;
+  fra.me.meth = LOCATE_NEW_ReduceAction189_parser___ReduceAction189___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7145 */
+  fra.me.REG[0] = NEW_ReduceAction189();
+  INIT_ATTRIBUTES__ReduceAction189(fra.me.REG[0]);
+  parser___ReduceAction189___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction189(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction190[51] = {
+  {(bigint) 1427 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction190 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction190 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1427 /* 4: ReduceAction190 < ReduceAction190: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81761,14 +96085,9 @@ const classtable_elt_t VFT_ReduceAction486[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction486 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction190 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81776,7 +96095,6 @@ const classtable_elt_t VFT_ReduceAction486[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81784,41 +96102,93 @@ const classtable_elt_t VFT_ReduceAction486[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction486 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction486___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction190 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction190___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction486 < ReduceAction486: superclass init_table position */},
-  {(bigint) parser___ReduceAction486___init},
+  {(bigint) 2 /* 49: ReduceAction190 < ReduceAction190: superclass init_table position */},
+  {(bigint) parser___ReduceAction190___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction486(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction486;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction486(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction190::_goto */
+void INIT_ATTRIBUTES__ReduceAction190(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction190;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction486_parser___ReduceAction486___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction486();
-  parser___ReduceAction486___init(self, init_table);
-  CHECKNEW_ReduceAction486(self, "parser::ReduceAction486::init for ReduceAction486");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction487[48] = {
-  {(bigint) 1459 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction487 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction487 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1459 /* 3: ReduceAction487 < ReduceAction487: superclass typecheck marker */},
+val_t NEW_ReduceAction190(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction190;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction190(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction190;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction190____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction190_parser___ReduceAction190___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7180;
+  fra.me.meth = LOCATE_NEW_ReduceAction190_parser___ReduceAction190___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7180 */
+  fra.me.REG[0] = NEW_ReduceAction190();
+  INIT_ATTRIBUTES__ReduceAction190(fra.me.REG[0]);
+  parser___ReduceAction190___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction190(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction191[51] = {
+  {(bigint) 1423 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction191 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction191 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1423 /* 4: ReduceAction191 < ReduceAction191: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81831,14 +96201,9 @@ const classtable_elt_t VFT_ReduceAction487[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction487 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction191 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81846,7 +96211,6 @@ const classtable_elt_t VFT_ReduceAction487[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81854,41 +96218,93 @@ const classtable_elt_t VFT_ReduceAction487[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction487 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction487___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction191 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction191___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction487 < ReduceAction487: superclass init_table position */},
-  {(bigint) parser___ReduceAction487___init},
+  {(bigint) 2 /* 49: ReduceAction191 < ReduceAction191: superclass init_table position */},
+  {(bigint) parser___ReduceAction191___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction487(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction487;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction191::_goto */
+void INIT_ATTRIBUTES__ReduceAction191(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction191;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction487(val_t self, char *from) {
-}
-val_t NEW_ReduceAction487_parser___ReduceAction487___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction487();
-  parser___ReduceAction487___init(self, init_table);
-  CHECKNEW_ReduceAction487(self, "parser::ReduceAction487::init for ReduceAction487");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction488[48] = {
-  {(bigint) 1455 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction488 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction488 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1455 /* 3: ReduceAction488 < ReduceAction488: superclass typecheck marker */},
+val_t NEW_ReduceAction191(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction191;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction191(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction191;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction191____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction191_parser___ReduceAction191___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7213;
+  fra.me.meth = LOCATE_NEW_ReduceAction191_parser___ReduceAction191___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7213 */
+  fra.me.REG[0] = NEW_ReduceAction191();
+  INIT_ATTRIBUTES__ReduceAction191(fra.me.REG[0]);
+  parser___ReduceAction191___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction191(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction192[51] = {
+  {(bigint) 1419 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction192 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction192 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1419 /* 4: ReduceAction192 < ReduceAction192: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81901,14 +96317,9 @@ const classtable_elt_t VFT_ReduceAction488[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction488 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction192 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81916,7 +96327,6 @@ const classtable_elt_t VFT_ReduceAction488[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81924,41 +96334,93 @@ const classtable_elt_t VFT_ReduceAction488[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction488 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction488___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction192 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction192___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction488 < ReduceAction488: superclass init_table position */},
-  {(bigint) parser___ReduceAction488___init},
+  {(bigint) 2 /* 49: ReduceAction192 < ReduceAction192: superclass init_table position */},
+  {(bigint) parser___ReduceAction192___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction488(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction488;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction488(val_t self, char *from) {
-}
-val_t NEW_ReduceAction488_parser___ReduceAction488___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction488();
-  parser___ReduceAction488___init(self, init_table);
-  CHECKNEW_ReduceAction488(self, "parser::ReduceAction488::init for ReduceAction488");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction192::_goto */
+void INIT_ATTRIBUTES__ReduceAction192(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction192;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction489[48] = {
-  {(bigint) 1451 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction489 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction489 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1451 /* 3: ReduceAction489 < ReduceAction489: superclass typecheck marker */},
+val_t NEW_ReduceAction192(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction192;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction192(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction192;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction192____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction192_parser___ReduceAction192___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7249;
+  fra.me.meth = LOCATE_NEW_ReduceAction192_parser___ReduceAction192___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7249 */
+  fra.me.REG[0] = NEW_ReduceAction192();
+  INIT_ATTRIBUTES__ReduceAction192(fra.me.REG[0]);
+  parser___ReduceAction192___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction192(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction193[51] = {
+  {(bigint) 1415 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction193 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction193 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1415 /* 4: ReduceAction193 < ReduceAction193: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81971,14 +96433,9 @@ const classtable_elt_t VFT_ReduceAction489[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction489 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction193 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -81986,7 +96443,6 @@ const classtable_elt_t VFT_ReduceAction489[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -81994,41 +96450,93 @@ const classtable_elt_t VFT_ReduceAction489[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction489 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction489___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction193 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction193___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction489 < ReduceAction489: superclass init_table position */},
-  {(bigint) parser___ReduceAction489___init},
+  {(bigint) 2 /* 49: ReduceAction193 < ReduceAction193: superclass init_table position */},
+  {(bigint) parser___ReduceAction193___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction489(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction489;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction489(val_t self, char *from) {
-}
-val_t NEW_ReduceAction489_parser___ReduceAction489___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction489();
-  parser___ReduceAction489___init(self, init_table);
-  CHECKNEW_ReduceAction489(self, "parser::ReduceAction489::init for ReduceAction489");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction193::_goto */
+void INIT_ATTRIBUTES__ReduceAction193(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction193;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction490[48] = {
-  {(bigint) 1443 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction490 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction490 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1443 /* 3: ReduceAction490 < ReduceAction490: superclass typecheck marker */},
+val_t NEW_ReduceAction193(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction193;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction193(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction193;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction193____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction193_parser___ReduceAction193___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7267;
+  fra.me.meth = LOCATE_NEW_ReduceAction193_parser___ReduceAction193___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7267 */
+  fra.me.REG[0] = NEW_ReduceAction193();
+  INIT_ATTRIBUTES__ReduceAction193(fra.me.REG[0]);
+  parser___ReduceAction193___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction193(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction194[51] = {
+  {(bigint) 1411 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction194 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction194 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1411 /* 4: ReduceAction194 < ReduceAction194: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82041,14 +96549,9 @@ const classtable_elt_t VFT_ReduceAction490[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction490 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction194 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82056,7 +96559,6 @@ const classtable_elt_t VFT_ReduceAction490[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82064,41 +96566,93 @@ const classtable_elt_t VFT_ReduceAction490[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction490 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction490___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction194 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction194___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction490 < ReduceAction490: superclass init_table position */},
-  {(bigint) parser___ReduceAction490___init},
+  {(bigint) 2 /* 49: ReduceAction194 < ReduceAction194: superclass init_table position */},
+  {(bigint) parser___ReduceAction194___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction490(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction490;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction490(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction194::_goto */
+void INIT_ATTRIBUTES__ReduceAction194(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction194;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction490_parser___ReduceAction490___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction490();
-  parser___ReduceAction490___init(self, init_table);
-  CHECKNEW_ReduceAction490(self, "parser::ReduceAction490::init for ReduceAction490");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction491[48] = {
-  {(bigint) 1439 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction491 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction491 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1439 /* 3: ReduceAction491 < ReduceAction491: superclass typecheck marker */},
+val_t NEW_ReduceAction194(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction194;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction194(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction194;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction194____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction194_parser___ReduceAction194___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7287;
+  fra.me.meth = LOCATE_NEW_ReduceAction194_parser___ReduceAction194___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7287 */
+  fra.me.REG[0] = NEW_ReduceAction194();
+  INIT_ATTRIBUTES__ReduceAction194(fra.me.REG[0]);
+  parser___ReduceAction194___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction194(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction195[51] = {
+  {(bigint) 1407 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction195 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction195 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1407 /* 4: ReduceAction195 < ReduceAction195: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82111,14 +96665,9 @@ const classtable_elt_t VFT_ReduceAction491[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction491 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction195 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82126,7 +96675,6 @@ const classtable_elt_t VFT_ReduceAction491[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82134,41 +96682,93 @@ const classtable_elt_t VFT_ReduceAction491[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction491 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction491___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction195 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction195___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction491 < ReduceAction491: superclass init_table position */},
-  {(bigint) parser___ReduceAction491___init},
+  {(bigint) 2 /* 49: ReduceAction195 < ReduceAction195: superclass init_table position */},
+  {(bigint) parser___ReduceAction195___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction491(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction491;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction195::_goto */
+void INIT_ATTRIBUTES__ReduceAction195(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction195;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction491(val_t self, char *from) {
-}
-val_t NEW_ReduceAction491_parser___ReduceAction491___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction491();
-  parser___ReduceAction491___init(self, init_table);
-  CHECKNEW_ReduceAction491(self, "parser::ReduceAction491::init for ReduceAction491");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction492[48] = {
-  {(bigint) 1435 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction492 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction492 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1435 /* 3: ReduceAction492 < ReduceAction492: superclass typecheck marker */},
+val_t NEW_ReduceAction195(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction195;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction195(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction195;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction195____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction195_parser___ReduceAction195___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7310;
+  fra.me.meth = LOCATE_NEW_ReduceAction195_parser___ReduceAction195___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7310 */
+  fra.me.REG[0] = NEW_ReduceAction195();
+  INIT_ATTRIBUTES__ReduceAction195(fra.me.REG[0]);
+  parser___ReduceAction195___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction195(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction196[51] = {
+  {(bigint) 1403 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction196 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction196 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1403 /* 4: ReduceAction196 < ReduceAction196: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82181,14 +96781,9 @@ const classtable_elt_t VFT_ReduceAction492[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction492 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction196 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82196,7 +96791,6 @@ const classtable_elt_t VFT_ReduceAction492[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82204,41 +96798,93 @@ const classtable_elt_t VFT_ReduceAction492[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction492 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction492___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction196 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction196___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction492 < ReduceAction492: superclass init_table position */},
-  {(bigint) parser___ReduceAction492___init},
+  {(bigint) 2 /* 49: ReduceAction196 < ReduceAction196: superclass init_table position */},
+  {(bigint) parser___ReduceAction196___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction492(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction492;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction492(val_t self, char *from) {
-}
-val_t NEW_ReduceAction492_parser___ReduceAction492___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction492();
-  parser___ReduceAction492___init(self, init_table);
-  CHECKNEW_ReduceAction492(self, "parser::ReduceAction492::init for ReduceAction492");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction196::_goto */
+void INIT_ATTRIBUTES__ReduceAction196(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction196;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction493[48] = {
-  {(bigint) 1431 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction493 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction493 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1431 /* 3: ReduceAction493 < ReduceAction493: superclass typecheck marker */},
+val_t NEW_ReduceAction196(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction196;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction196(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction196;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction196____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction196_parser___ReduceAction196___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7338;
+  fra.me.meth = LOCATE_NEW_ReduceAction196_parser___ReduceAction196___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7338 */
+  fra.me.REG[0] = NEW_ReduceAction196();
+  INIT_ATTRIBUTES__ReduceAction196(fra.me.REG[0]);
+  parser___ReduceAction196___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction196(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction197[51] = {
+  {(bigint) 1399 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction197 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction197 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1399 /* 4: ReduceAction197 < ReduceAction197: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82251,14 +96897,9 @@ const classtable_elt_t VFT_ReduceAction493[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction493 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction197 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82266,7 +96907,6 @@ const classtable_elt_t VFT_ReduceAction493[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82274,41 +96914,93 @@ const classtable_elt_t VFT_ReduceAction493[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction493 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction493___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction197 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction197___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction493 < ReduceAction493: superclass init_table position */},
-  {(bigint) parser___ReduceAction493___init},
+  {(bigint) 2 /* 49: ReduceAction197 < ReduceAction197: superclass init_table position */},
+  {(bigint) parser___ReduceAction197___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction493(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction493;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction493(val_t self, char *from) {
-}
-val_t NEW_ReduceAction493_parser___ReduceAction493___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction493();
-  parser___ReduceAction493___init(self, init_table);
-  CHECKNEW_ReduceAction493(self, "parser::ReduceAction493::init for ReduceAction493");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction197::_goto */
+void INIT_ATTRIBUTES__ReduceAction197(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction197;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction494[48] = {
-  {(bigint) 1427 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction494 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction494 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1427 /* 3: ReduceAction494 < ReduceAction494: superclass typecheck marker */},
+val_t NEW_ReduceAction197(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction197;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction197(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction197;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction197____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction197_parser___ReduceAction197___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7369;
+  fra.me.meth = LOCATE_NEW_ReduceAction197_parser___ReduceAction197___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7369 */
+  fra.me.REG[0] = NEW_ReduceAction197();
+  INIT_ATTRIBUTES__ReduceAction197(fra.me.REG[0]);
+  parser___ReduceAction197___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction197(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction198[51] = {
+  {(bigint) 1395 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction198 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction198 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1395 /* 4: ReduceAction198 < ReduceAction198: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82321,14 +97013,9 @@ const classtable_elt_t VFT_ReduceAction494[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction494 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction198 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82336,7 +97023,6 @@ const classtable_elt_t VFT_ReduceAction494[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82344,41 +97030,93 @@ const classtable_elt_t VFT_ReduceAction494[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction494 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction494___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction198 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction198___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction494 < ReduceAction494: superclass init_table position */},
-  {(bigint) parser___ReduceAction494___init},
+  {(bigint) 2 /* 49: ReduceAction198 < ReduceAction198: superclass init_table position */},
+  {(bigint) parser___ReduceAction198___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction494(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction494;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction494(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction198::_goto */
+void INIT_ATTRIBUTES__ReduceAction198(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction198;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction494_parser___ReduceAction494___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction494();
-  parser___ReduceAction494___init(self, init_table);
-  CHECKNEW_ReduceAction494(self, "parser::ReduceAction494::init for ReduceAction494");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction495[48] = {
-  {(bigint) 1423 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction495 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction495 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1423 /* 3: ReduceAction495 < ReduceAction495: superclass typecheck marker */},
+val_t NEW_ReduceAction198(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction198;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction198(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction198;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction198____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction198_parser___ReduceAction198___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7386;
+  fra.me.meth = LOCATE_NEW_ReduceAction198_parser___ReduceAction198___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7386 */
+  fra.me.REG[0] = NEW_ReduceAction198();
+  INIT_ATTRIBUTES__ReduceAction198(fra.me.REG[0]);
+  parser___ReduceAction198___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction198(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction199[51] = {
+  {(bigint) 1391 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction199 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction199 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1391 /* 4: ReduceAction199 < ReduceAction199: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82391,14 +97129,9 @@ const classtable_elt_t VFT_ReduceAction495[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction495 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction199 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82406,7 +97139,6 @@ const classtable_elt_t VFT_ReduceAction495[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82414,41 +97146,93 @@ const classtable_elt_t VFT_ReduceAction495[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction495 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction495___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction199 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction199___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction495 < ReduceAction495: superclass init_table position */},
-  {(bigint) parser___ReduceAction495___init},
+  {(bigint) 2 /* 49: ReduceAction199 < ReduceAction199: superclass init_table position */},
+  {(bigint) parser___ReduceAction199___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction495(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction495;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction199::_goto */
+void INIT_ATTRIBUTES__ReduceAction199(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction199;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction495(val_t self, char *from) {
-}
-val_t NEW_ReduceAction495_parser___ReduceAction495___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction495();
-  parser___ReduceAction495___init(self, init_table);
-  CHECKNEW_ReduceAction495(self, "parser::ReduceAction495::init for ReduceAction495");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction496[48] = {
-  {(bigint) 1419 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction496 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction496 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1419 /* 3: ReduceAction496 < ReduceAction496: superclass typecheck marker */},
+val_t NEW_ReduceAction199(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction199;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction199(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction199;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction199____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction199_parser___ReduceAction199___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7407;
+  fra.me.meth = LOCATE_NEW_ReduceAction199_parser___ReduceAction199___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7407 */
+  fra.me.REG[0] = NEW_ReduceAction199();
+  INIT_ATTRIBUTES__ReduceAction199(fra.me.REG[0]);
+  parser___ReduceAction199___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction199(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction200[51] = {
+  {(bigint) 1379 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction200 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction200 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1379 /* 4: ReduceAction200 < ReduceAction200: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82461,14 +97245,9 @@ const classtable_elt_t VFT_ReduceAction496[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction496 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction200 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82476,7 +97255,6 @@ const classtable_elt_t VFT_ReduceAction496[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82484,41 +97262,93 @@ const classtable_elt_t VFT_ReduceAction496[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction496 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction496___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction200 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction200___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction496 < ReduceAction496: superclass init_table position */},
-  {(bigint) parser___ReduceAction496___init},
+  {(bigint) 2 /* 49: ReduceAction200 < ReduceAction200: superclass init_table position */},
+  {(bigint) parser___ReduceAction200___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction496(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction496;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction496(val_t self, char *from) {
-}
-val_t NEW_ReduceAction496_parser___ReduceAction496___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction496();
-  parser___ReduceAction496___init(self, init_table);
-  CHECKNEW_ReduceAction496(self, "parser::ReduceAction496::init for ReduceAction496");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction200::_goto */
+void INIT_ATTRIBUTES__ReduceAction200(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction200;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction497[48] = {
-  {(bigint) 1415 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction497 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction497 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1415 /* 3: ReduceAction497 < ReduceAction497: superclass typecheck marker */},
+val_t NEW_ReduceAction200(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction200;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction200(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction200;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction200____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction200_parser___ReduceAction200___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7422;
+  fra.me.meth = LOCATE_NEW_ReduceAction200_parser___ReduceAction200___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7422 */
+  fra.me.REG[0] = NEW_ReduceAction200();
+  INIT_ATTRIBUTES__ReduceAction200(fra.me.REG[0]);
+  parser___ReduceAction200___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction200(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction202[51] = {
+  {(bigint) 1375 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction202 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction202 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1375 /* 4: ReduceAction202 < ReduceAction202: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82531,14 +97361,9 @@ const classtable_elt_t VFT_ReduceAction497[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction497 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction202 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82546,7 +97371,6 @@ const classtable_elt_t VFT_ReduceAction497[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82554,41 +97378,93 @@ const classtable_elt_t VFT_ReduceAction497[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction497 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction497___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction202 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction202___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction497 < ReduceAction497: superclass init_table position */},
-  {(bigint) parser___ReduceAction497___init},
+  {(bigint) 2 /* 49: ReduceAction202 < ReduceAction202: superclass init_table position */},
+  {(bigint) parser___ReduceAction202___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction497(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction497;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction497(val_t self, char *from) {
-}
-val_t NEW_ReduceAction497_parser___ReduceAction497___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction497();
-  parser___ReduceAction497___init(self, init_table);
-  CHECKNEW_ReduceAction497(self, "parser::ReduceAction497::init for ReduceAction497");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction202::_goto */
+void INIT_ATTRIBUTES__ReduceAction202(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction202;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction498[48] = {
-  {(bigint) 1411 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction498 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction498 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1411 /* 3: ReduceAction498 < ReduceAction498: superclass typecheck marker */},
+val_t NEW_ReduceAction202(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction202;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction202(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction202;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction202____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction202_parser___ReduceAction202___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7437;
+  fra.me.meth = LOCATE_NEW_ReduceAction202_parser___ReduceAction202___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7437 */
+  fra.me.REG[0] = NEW_ReduceAction202();
+  INIT_ATTRIBUTES__ReduceAction202(fra.me.REG[0]);
+  parser___ReduceAction202___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction202(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction203[51] = {
+  {(bigint) 1371 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction203 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction203 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1371 /* 4: ReduceAction203 < ReduceAction203: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82601,14 +97477,9 @@ const classtable_elt_t VFT_ReduceAction498[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction498 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction203 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82616,7 +97487,6 @@ const classtable_elt_t VFT_ReduceAction498[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82624,41 +97494,93 @@ const classtable_elt_t VFT_ReduceAction498[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction498 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction498___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction203 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction203___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction498 < ReduceAction498: superclass init_table position */},
-  {(bigint) parser___ReduceAction498___init},
+  {(bigint) 2 /* 49: ReduceAction203 < ReduceAction203: superclass init_table position */},
+  {(bigint) parser___ReduceAction203___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction498(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction498;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction498(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction203::_goto */
+void INIT_ATTRIBUTES__ReduceAction203(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction203;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction498_parser___ReduceAction498___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction498();
-  parser___ReduceAction498___init(self, init_table);
-  CHECKNEW_ReduceAction498(self, "parser::ReduceAction498::init for ReduceAction498");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction499[48] = {
-  {(bigint) 1407 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction499 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction499 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1407 /* 3: ReduceAction499 < ReduceAction499: superclass typecheck marker */},
+val_t NEW_ReduceAction203(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction203;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction203(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction203;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction203____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction203_parser___ReduceAction203___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7454;
+  fra.me.meth = LOCATE_NEW_ReduceAction203_parser___ReduceAction203___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7454 */
+  fra.me.REG[0] = NEW_ReduceAction203();
+  INIT_ATTRIBUTES__ReduceAction203(fra.me.REG[0]);
+  parser___ReduceAction203___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction203(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction204[51] = {
+  {(bigint) 1367 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction204 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction204 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1367 /* 4: ReduceAction204 < ReduceAction204: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82671,14 +97593,9 @@ const classtable_elt_t VFT_ReduceAction499[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction499 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction204 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82686,7 +97603,6 @@ const classtable_elt_t VFT_ReduceAction499[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82694,41 +97610,93 @@ const classtable_elt_t VFT_ReduceAction499[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction499 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction499___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction204 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction204___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction499 < ReduceAction499: superclass init_table position */},
-  {(bigint) parser___ReduceAction499___init},
+  {(bigint) 2 /* 49: ReduceAction204 < ReduceAction204: superclass init_table position */},
+  {(bigint) parser___ReduceAction204___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction499(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction499;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction204::_goto */
+void INIT_ATTRIBUTES__ReduceAction204(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction204;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction499(val_t self, char *from) {
-}
-val_t NEW_ReduceAction499_parser___ReduceAction499___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction499();
-  parser___ReduceAction499___init(self, init_table);
-  CHECKNEW_ReduceAction499(self, "parser::ReduceAction499::init for ReduceAction499");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction500[48] = {
-  {(bigint) 1395 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction500 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction500 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1395 /* 3: ReduceAction500 < ReduceAction500: superclass typecheck marker */},
+val_t NEW_ReduceAction204(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction204;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction204(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction204;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction204____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction204_parser___ReduceAction204___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7470;
+  fra.me.meth = LOCATE_NEW_ReduceAction204_parser___ReduceAction204___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7470 */
+  fra.me.REG[0] = NEW_ReduceAction204();
+  INIT_ATTRIBUTES__ReduceAction204(fra.me.REG[0]);
+  parser___ReduceAction204___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction204(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction205[51] = {
+  {(bigint) 1363 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction205 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction205 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1363 /* 4: ReduceAction205 < ReduceAction205: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82741,14 +97709,9 @@ const classtable_elt_t VFT_ReduceAction500[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction500 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction205 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82756,7 +97719,6 @@ const classtable_elt_t VFT_ReduceAction500[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82764,41 +97726,93 @@ const classtable_elt_t VFT_ReduceAction500[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction500 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction500___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction205 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction205___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction500 < ReduceAction500: superclass init_table position */},
-  {(bigint) parser___ReduceAction500___init},
+  {(bigint) 2 /* 49: ReduceAction205 < ReduceAction205: superclass init_table position */},
+  {(bigint) parser___ReduceAction205___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction500(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction500;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction500(val_t self, char *from) {
-}
-val_t NEW_ReduceAction500_parser___ReduceAction500___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction500();
-  parser___ReduceAction500___init(self, init_table);
-  CHECKNEW_ReduceAction500(self, "parser::ReduceAction500::init for ReduceAction500");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction205::_goto */
+void INIT_ATTRIBUTES__ReduceAction205(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction205;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction501[48] = {
-  {(bigint) 1391 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction501 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction501 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1391 /* 3: ReduceAction501 < ReduceAction501: superclass typecheck marker */},
+val_t NEW_ReduceAction205(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction205;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction205(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction205;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction205____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction205_parser___ReduceAction205___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7483;
+  fra.me.meth = LOCATE_NEW_ReduceAction205_parser___ReduceAction205___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7483 */
+  fra.me.REG[0] = NEW_ReduceAction205();
+  INIT_ATTRIBUTES__ReduceAction205(fra.me.REG[0]);
+  parser___ReduceAction205___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction205(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction206[51] = {
+  {(bigint) 1359 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction206 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction206 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1359 /* 4: ReduceAction206 < ReduceAction206: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82811,14 +97825,9 @@ const classtable_elt_t VFT_ReduceAction501[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction501 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction206 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82826,7 +97835,6 @@ const classtable_elt_t VFT_ReduceAction501[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82834,41 +97842,93 @@ const classtable_elt_t VFT_ReduceAction501[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction501 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction501___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction206 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction206___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction501 < ReduceAction501: superclass init_table position */},
-  {(bigint) parser___ReduceAction501___init},
+  {(bigint) 2 /* 49: ReduceAction206 < ReduceAction206: superclass init_table position */},
+  {(bigint) parser___ReduceAction206___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction501(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction501;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction501(val_t self, char *from) {
-}
-val_t NEW_ReduceAction501_parser___ReduceAction501___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction501();
-  parser___ReduceAction501___init(self, init_table);
-  CHECKNEW_ReduceAction501(self, "parser::ReduceAction501::init for ReduceAction501");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction206::_goto */
+void INIT_ATTRIBUTES__ReduceAction206(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction206;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction502[48] = {
-  {(bigint) 1387 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction502 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction502 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1387 /* 3: ReduceAction502 < ReduceAction502: superclass typecheck marker */},
+val_t NEW_ReduceAction206(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction206;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction206(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction206;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction206____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction206_parser___ReduceAction206___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7504;
+  fra.me.meth = LOCATE_NEW_ReduceAction206_parser___ReduceAction206___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7504 */
+  fra.me.REG[0] = NEW_ReduceAction206();
+  INIT_ATTRIBUTES__ReduceAction206(fra.me.REG[0]);
+  parser___ReduceAction206___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction206(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction207[51] = {
+  {(bigint) 1355 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction207 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction207 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1355 /* 4: ReduceAction207 < ReduceAction207: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82881,14 +97941,9 @@ const classtable_elt_t VFT_ReduceAction502[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction502 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction207 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82896,7 +97951,6 @@ const classtable_elt_t VFT_ReduceAction502[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82904,41 +97958,93 @@ const classtable_elt_t VFT_ReduceAction502[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction502 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction502___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction207 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction207___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction502 < ReduceAction502: superclass init_table position */},
-  {(bigint) parser___ReduceAction502___init},
+  {(bigint) 2 /* 49: ReduceAction207 < ReduceAction207: superclass init_table position */},
+  {(bigint) parser___ReduceAction207___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction502(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction502;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction502(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction207::_goto */
+void INIT_ATTRIBUTES__ReduceAction207(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction207;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction502_parser___ReduceAction502___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction502();
-  parser___ReduceAction502___init(self, init_table);
-  CHECKNEW_ReduceAction502(self, "parser::ReduceAction502::init for ReduceAction502");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction503[48] = {
-  {(bigint) 1383 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction503 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction503 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1383 /* 3: ReduceAction503 < ReduceAction503: superclass typecheck marker */},
+val_t NEW_ReduceAction207(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction207;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction207(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction207;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction207____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction207_parser___ReduceAction207___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7529;
+  fra.me.meth = LOCATE_NEW_ReduceAction207_parser___ReduceAction207___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7529 */
+  fra.me.REG[0] = NEW_ReduceAction207();
+  INIT_ATTRIBUTES__ReduceAction207(fra.me.REG[0]);
+  parser___ReduceAction207___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction207(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction208[51] = {
+  {(bigint) 1351 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction208 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction208 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1351 /* 4: ReduceAction208 < ReduceAction208: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82951,14 +98057,9 @@ const classtable_elt_t VFT_ReduceAction503[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction503 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction208 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -82966,7 +98067,6 @@ const classtable_elt_t VFT_ReduceAction503[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -82974,41 +98074,93 @@ const classtable_elt_t VFT_ReduceAction503[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction503 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction503___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction208 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction208___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction503 < ReduceAction503: superclass init_table position */},
-  {(bigint) parser___ReduceAction503___init},
+  {(bigint) 2 /* 49: ReduceAction208 < ReduceAction208: superclass init_table position */},
+  {(bigint) parser___ReduceAction208___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction503(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction503;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction208::_goto */
+void INIT_ATTRIBUTES__ReduceAction208(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction208;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction503(val_t self, char *from) {
-}
-val_t NEW_ReduceAction503_parser___ReduceAction503___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction503();
-  parser___ReduceAction503___init(self, init_table);
-  CHECKNEW_ReduceAction503(self, "parser::ReduceAction503::init for ReduceAction503");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction504[48] = {
-  {(bigint) 1379 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction504 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction504 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1379 /* 3: ReduceAction504 < ReduceAction504: superclass typecheck marker */},
+val_t NEW_ReduceAction208(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction208;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction208(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction208;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction208____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction208_parser___ReduceAction208___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7551;
+  fra.me.meth = LOCATE_NEW_ReduceAction208_parser___ReduceAction208___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7551 */
+  fra.me.REG[0] = NEW_ReduceAction208();
+  INIT_ATTRIBUTES__ReduceAction208(fra.me.REG[0]);
+  parser___ReduceAction208___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction208(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction209[51] = {
+  {(bigint) 1347 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction209 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction209 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1347 /* 4: ReduceAction209 < ReduceAction209: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83021,14 +98173,9 @@ const classtable_elt_t VFT_ReduceAction504[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction504 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction209 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83036,7 +98183,6 @@ const classtable_elt_t VFT_ReduceAction504[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83044,41 +98190,93 @@ const classtable_elt_t VFT_ReduceAction504[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction504 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction504___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction209 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction209___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction504 < ReduceAction504: superclass init_table position */},
-  {(bigint) parser___ReduceAction504___init},
+  {(bigint) 2 /* 49: ReduceAction209 < ReduceAction209: superclass init_table position */},
+  {(bigint) parser___ReduceAction209___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction504(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction504;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction504(val_t self, char *from) {
-}
-val_t NEW_ReduceAction504_parser___ReduceAction504___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction504();
-  parser___ReduceAction504___init(self, init_table);
-  CHECKNEW_ReduceAction504(self, "parser::ReduceAction504::init for ReduceAction504");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction209::_goto */
+void INIT_ATTRIBUTES__ReduceAction209(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction209;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction505[48] = {
-  {(bigint) 1375 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction505 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction505 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1375 /* 3: ReduceAction505 < ReduceAction505: superclass typecheck marker */},
+val_t NEW_ReduceAction209(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction209;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction209(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction209;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction209____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction209_parser___ReduceAction209___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7577;
+  fra.me.meth = LOCATE_NEW_ReduceAction209_parser___ReduceAction209___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7577 */
+  fra.me.REG[0] = NEW_ReduceAction209();
+  INIT_ATTRIBUTES__ReduceAction209(fra.me.REG[0]);
+  parser___ReduceAction209___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction209(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction210[51] = {
+  {(bigint) 1339 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction210 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction210 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1339 /* 4: ReduceAction210 < ReduceAction210: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83091,14 +98289,9 @@ const classtable_elt_t VFT_ReduceAction505[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction505 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction210 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83106,7 +98299,6 @@ const classtable_elt_t VFT_ReduceAction505[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83114,41 +98306,93 @@ const classtable_elt_t VFT_ReduceAction505[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction505 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction505___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction210 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction210___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction505 < ReduceAction505: superclass init_table position */},
-  {(bigint) parser___ReduceAction505___init},
+  {(bigint) 2 /* 49: ReduceAction210 < ReduceAction210: superclass init_table position */},
+  {(bigint) parser___ReduceAction210___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction505(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction505;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction505(val_t self, char *from) {
-}
-val_t NEW_ReduceAction505_parser___ReduceAction505___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction505();
-  parser___ReduceAction505___init(self, init_table);
-  CHECKNEW_ReduceAction505(self, "parser::ReduceAction505::init for ReduceAction505");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction210::_goto */
+void INIT_ATTRIBUTES__ReduceAction210(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction210;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction506[48] = {
-  {(bigint) 1371 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction506 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction506 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1371 /* 3: ReduceAction506 < ReduceAction506: superclass typecheck marker */},
+val_t NEW_ReduceAction210(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction210;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction210(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction210;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction210____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction210_parser___ReduceAction210___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7591;
+  fra.me.meth = LOCATE_NEW_ReduceAction210_parser___ReduceAction210___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7591 */
+  fra.me.REG[0] = NEW_ReduceAction210();
+  INIT_ATTRIBUTES__ReduceAction210(fra.me.REG[0]);
+  parser___ReduceAction210___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction210(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction213[51] = {
+  {(bigint) 1335 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction213 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction213 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1335 /* 4: ReduceAction213 < ReduceAction213: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83161,14 +98405,9 @@ const classtable_elt_t VFT_ReduceAction506[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction506 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction213 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83176,7 +98415,6 @@ const classtable_elt_t VFT_ReduceAction506[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83184,41 +98422,93 @@ const classtable_elt_t VFT_ReduceAction506[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction506 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction506___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction213 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction213___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction506 < ReduceAction506: superclass init_table position */},
-  {(bigint) parser___ReduceAction506___init},
+  {(bigint) 2 /* 49: ReduceAction213 < ReduceAction213: superclass init_table position */},
+  {(bigint) parser___ReduceAction213___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction506(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction506;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction506(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction213::_goto */
+void INIT_ATTRIBUTES__ReduceAction213(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction213;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction506_parser___ReduceAction506___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction506();
-  parser___ReduceAction506___init(self, init_table);
-  CHECKNEW_ReduceAction506(self, "parser::ReduceAction506::init for ReduceAction506");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction507[48] = {
-  {(bigint) 1367 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction507 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction507 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1367 /* 3: ReduceAction507 < ReduceAction507: superclass typecheck marker */},
+val_t NEW_ReduceAction213(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction213;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction213(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction213;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction213____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction213_parser___ReduceAction213___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7609;
+  fra.me.meth = LOCATE_NEW_ReduceAction213_parser___ReduceAction213___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7609 */
+  fra.me.REG[0] = NEW_ReduceAction213();
+  INIT_ATTRIBUTES__ReduceAction213(fra.me.REG[0]);
+  parser___ReduceAction213___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction213(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction214[51] = {
+  {(bigint) 1331 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction214 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction214 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1331 /* 4: ReduceAction214 < ReduceAction214: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83231,14 +98521,9 @@ const classtable_elt_t VFT_ReduceAction507[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction507 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction214 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83246,7 +98531,6 @@ const classtable_elt_t VFT_ReduceAction507[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83254,41 +98538,93 @@ const classtable_elt_t VFT_ReduceAction507[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction507 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction507___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction214 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction214___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction507 < ReduceAction507: superclass init_table position */},
-  {(bigint) parser___ReduceAction507___init},
+  {(bigint) 2 /* 49: ReduceAction214 < ReduceAction214: superclass init_table position */},
+  {(bigint) parser___ReduceAction214___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction507(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction507;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction214::_goto */
+void INIT_ATTRIBUTES__ReduceAction214(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction214;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction507(val_t self, char *from) {
-}
-val_t NEW_ReduceAction507_parser___ReduceAction507___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction507();
-  parser___ReduceAction507___init(self, init_table);
-  CHECKNEW_ReduceAction507(self, "parser::ReduceAction507::init for ReduceAction507");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction508[48] = {
-  {(bigint) 1363 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction508 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction508 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1363 /* 3: ReduceAction508 < ReduceAction508: superclass typecheck marker */},
+val_t NEW_ReduceAction214(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction214;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction214(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction214;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction214____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction214_parser___ReduceAction214___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7630;
+  fra.me.meth = LOCATE_NEW_ReduceAction214_parser___ReduceAction214___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7630 */
+  fra.me.REG[0] = NEW_ReduceAction214();
+  INIT_ATTRIBUTES__ReduceAction214(fra.me.REG[0]);
+  parser___ReduceAction214___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction214(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction215[51] = {
+  {(bigint) 1327 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction215 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction215 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1327 /* 4: ReduceAction215 < ReduceAction215: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83301,14 +98637,9 @@ const classtable_elt_t VFT_ReduceAction508[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction508 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction215 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83316,7 +98647,6 @@ const classtable_elt_t VFT_ReduceAction508[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83324,41 +98654,93 @@ const classtable_elt_t VFT_ReduceAction508[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction508 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction508___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction215 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction215___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction508 < ReduceAction508: superclass init_table position */},
-  {(bigint) parser___ReduceAction508___init},
+  {(bigint) 2 /* 49: ReduceAction215 < ReduceAction215: superclass init_table position */},
+  {(bigint) parser___ReduceAction215___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction508(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction508;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction508(val_t self, char *from) {
-}
-val_t NEW_ReduceAction508_parser___ReduceAction508___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction508();
-  parser___ReduceAction508___init(self, init_table);
-  CHECKNEW_ReduceAction508(self, "parser::ReduceAction508::init for ReduceAction508");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction215::_goto */
+void INIT_ATTRIBUTES__ReduceAction215(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction215;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction509[48] = {
-  {(bigint) 1359 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction509 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction509 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1359 /* 3: ReduceAction509 < ReduceAction509: superclass typecheck marker */},
+val_t NEW_ReduceAction215(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction215;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction215(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction215;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction215____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction215_parser___ReduceAction215___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7649;
+  fra.me.meth = LOCATE_NEW_ReduceAction215_parser___ReduceAction215___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7649 */
+  fra.me.REG[0] = NEW_ReduceAction215();
+  INIT_ATTRIBUTES__ReduceAction215(fra.me.REG[0]);
+  parser___ReduceAction215___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction215(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction216[51] = {
+  {(bigint) 1323 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction216 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction216 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1323 /* 4: ReduceAction216 < ReduceAction216: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83371,14 +98753,9 @@ const classtable_elt_t VFT_ReduceAction509[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction509 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction216 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83386,7 +98763,6 @@ const classtable_elt_t VFT_ReduceAction509[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83394,41 +98770,93 @@ const classtable_elt_t VFT_ReduceAction509[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction509 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction509___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction216 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction216___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction509 < ReduceAction509: superclass init_table position */},
-  {(bigint) parser___ReduceAction509___init},
+  {(bigint) 2 /* 49: ReduceAction216 < ReduceAction216: superclass init_table position */},
+  {(bigint) parser___ReduceAction216___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction509(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction509;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction509(val_t self, char *from) {
-}
-val_t NEW_ReduceAction509_parser___ReduceAction509___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction509();
-  parser___ReduceAction509___init(self, init_table);
-  CHECKNEW_ReduceAction509(self, "parser::ReduceAction509::init for ReduceAction509");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction216::_goto */
+void INIT_ATTRIBUTES__ReduceAction216(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction216;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction510[48] = {
-  {(bigint) 1351 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction510 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction510 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1351 /* 3: ReduceAction510 < ReduceAction510: superclass typecheck marker */},
+val_t NEW_ReduceAction216(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction216;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction216(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction216;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction216____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction216_parser___ReduceAction216___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7671;
+  fra.me.meth = LOCATE_NEW_ReduceAction216_parser___ReduceAction216___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7671 */
+  fra.me.REG[0] = NEW_ReduceAction216();
+  INIT_ATTRIBUTES__ReduceAction216(fra.me.REG[0]);
+  parser___ReduceAction216___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction216(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction217[51] = {
+  {(bigint) 1319 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction217 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction217 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1319 /* 4: ReduceAction217 < ReduceAction217: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83441,14 +98869,9 @@ const classtable_elt_t VFT_ReduceAction510[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction510 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction217 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83456,7 +98879,6 @@ const classtable_elt_t VFT_ReduceAction510[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83464,41 +98886,93 @@ const classtable_elt_t VFT_ReduceAction510[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction510 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction510___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction217 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction217___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction510 < ReduceAction510: superclass init_table position */},
-  {(bigint) parser___ReduceAction510___init},
+  {(bigint) 2 /* 49: ReduceAction217 < ReduceAction217: superclass init_table position */},
+  {(bigint) parser___ReduceAction217___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction510(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction510;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction510(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction217::_goto */
+void INIT_ATTRIBUTES__ReduceAction217(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction217;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction510_parser___ReduceAction510___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction510();
-  parser___ReduceAction510___init(self, init_table);
-  CHECKNEW_ReduceAction510(self, "parser::ReduceAction510::init for ReduceAction510");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction511[48] = {
-  {(bigint) 1347 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction511 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction511 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1347 /* 3: ReduceAction511 < ReduceAction511: superclass typecheck marker */},
+val_t NEW_ReduceAction217(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction217;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction217(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction217;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction217____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction217_parser___ReduceAction217___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7693;
+  fra.me.meth = LOCATE_NEW_ReduceAction217_parser___ReduceAction217___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7693 */
+  fra.me.REG[0] = NEW_ReduceAction217();
+  INIT_ATTRIBUTES__ReduceAction217(fra.me.REG[0]);
+  parser___ReduceAction217___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction217(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction218[51] = {
+  {(bigint) 1315 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction218 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction218 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1315 /* 4: ReduceAction218 < ReduceAction218: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83511,14 +98985,9 @@ const classtable_elt_t VFT_ReduceAction511[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction511 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction218 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83526,7 +98995,6 @@ const classtable_elt_t VFT_ReduceAction511[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83534,41 +99002,93 @@ const classtable_elt_t VFT_ReduceAction511[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction511 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction511___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction218 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction218___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction511 < ReduceAction511: superclass init_table position */},
-  {(bigint) parser___ReduceAction511___init},
+  {(bigint) 2 /* 49: ReduceAction218 < ReduceAction218: superclass init_table position */},
+  {(bigint) parser___ReduceAction218___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction511(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction511;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction218::_goto */
+void INIT_ATTRIBUTES__ReduceAction218(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction218;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction511(val_t self, char *from) {
-}
-val_t NEW_ReduceAction511_parser___ReduceAction511___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction511();
-  parser___ReduceAction511___init(self, init_table);
-  CHECKNEW_ReduceAction511(self, "parser::ReduceAction511::init for ReduceAction511");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction512[48] = {
-  {(bigint) 1343 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction512 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction512 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1343 /* 3: ReduceAction512 < ReduceAction512: superclass typecheck marker */},
+val_t NEW_ReduceAction218(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction218;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction218(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction218;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction218____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction218_parser___ReduceAction218___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7718;
+  fra.me.meth = LOCATE_NEW_ReduceAction218_parser___ReduceAction218___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7718 */
+  fra.me.REG[0] = NEW_ReduceAction218();
+  INIT_ATTRIBUTES__ReduceAction218(fra.me.REG[0]);
+  parser___ReduceAction218___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction218(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction219[51] = {
+  {(bigint) 1311 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction219 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction219 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1311 /* 4: ReduceAction219 < ReduceAction219: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83581,14 +99101,9 @@ const classtable_elt_t VFT_ReduceAction512[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction512 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction219 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83596,7 +99111,6 @@ const classtable_elt_t VFT_ReduceAction512[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83604,41 +99118,93 @@ const classtable_elt_t VFT_ReduceAction512[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction512 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction512___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction219 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction219___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction512 < ReduceAction512: superclass init_table position */},
-  {(bigint) parser___ReduceAction512___init},
+  {(bigint) 2 /* 49: ReduceAction219 < ReduceAction219: superclass init_table position */},
+  {(bigint) parser___ReduceAction219___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction512(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction512;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction512(val_t self, char *from) {
-}
-val_t NEW_ReduceAction512_parser___ReduceAction512___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction512();
-  parser___ReduceAction512___init(self, init_table);
-  CHECKNEW_ReduceAction512(self, "parser::ReduceAction512::init for ReduceAction512");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction219::_goto */
+void INIT_ATTRIBUTES__ReduceAction219(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction219;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction513[48] = {
-  {(bigint) 1339 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction513 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction513 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1339 /* 3: ReduceAction513 < ReduceAction513: superclass typecheck marker */},
+val_t NEW_ReduceAction219(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction219;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction219(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction219;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction219____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction219_parser___ReduceAction219___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7735;
+  fra.me.meth = LOCATE_NEW_ReduceAction219_parser___ReduceAction219___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7735 */
+  fra.me.REG[0] = NEW_ReduceAction219();
+  INIT_ATTRIBUTES__ReduceAction219(fra.me.REG[0]);
+  parser___ReduceAction219___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction219(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction220[51] = {
+  {(bigint) 1303 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction220 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction220 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1303 /* 4: ReduceAction220 < ReduceAction220: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83651,14 +99217,9 @@ const classtable_elt_t VFT_ReduceAction513[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction513 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction220 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83666,7 +99227,6 @@ const classtable_elt_t VFT_ReduceAction513[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83674,41 +99234,93 @@ const classtable_elt_t VFT_ReduceAction513[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction513 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction513___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction220 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction220___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction513 < ReduceAction513: superclass init_table position */},
-  {(bigint) parser___ReduceAction513___init},
+  {(bigint) 2 /* 49: ReduceAction220 < ReduceAction220: superclass init_table position */},
+  {(bigint) parser___ReduceAction220___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction513(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction513;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction513(val_t self, char *from) {
-}
-val_t NEW_ReduceAction513_parser___ReduceAction513___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction513();
-  parser___ReduceAction513___init(self, init_table);
-  CHECKNEW_ReduceAction513(self, "parser::ReduceAction513::init for ReduceAction513");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction220::_goto */
+void INIT_ATTRIBUTES__ReduceAction220(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction220;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction514[48] = {
-  {(bigint) 1335 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction514 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction514 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1335 /* 3: ReduceAction514 < ReduceAction514: superclass typecheck marker */},
+val_t NEW_ReduceAction220(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction220;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction220(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction220;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction220____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction220_parser___ReduceAction220___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7754;
+  fra.me.meth = LOCATE_NEW_ReduceAction220_parser___ReduceAction220___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7754 */
+  fra.me.REG[0] = NEW_ReduceAction220();
+  INIT_ATTRIBUTES__ReduceAction220(fra.me.REG[0]);
+  parser___ReduceAction220___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction220(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction221[51] = {
+  {(bigint) 1299 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction221 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction221 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1299 /* 4: ReduceAction221 < ReduceAction221: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83721,14 +99333,9 @@ const classtable_elt_t VFT_ReduceAction514[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction514 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction221 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83736,7 +99343,6 @@ const classtable_elt_t VFT_ReduceAction514[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83744,41 +99350,93 @@ const classtable_elt_t VFT_ReduceAction514[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction514 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction514___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction221 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction221___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction514 < ReduceAction514: superclass init_table position */},
-  {(bigint) parser___ReduceAction514___init},
+  {(bigint) 2 /* 49: ReduceAction221 < ReduceAction221: superclass init_table position */},
+  {(bigint) parser___ReduceAction221___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction514(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction514;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction514(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction221::_goto */
+void INIT_ATTRIBUTES__ReduceAction221(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction221;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction514_parser___ReduceAction514___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction514();
-  parser___ReduceAction514___init(self, init_table);
-  CHECKNEW_ReduceAction514(self, "parser::ReduceAction514::init for ReduceAction514");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction515[48] = {
-  {(bigint) 1331 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction515 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction515 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1331 /* 3: ReduceAction515 < ReduceAction515: superclass typecheck marker */},
+val_t NEW_ReduceAction221(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction221;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction221(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction221;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction221____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction221_parser___ReduceAction221___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7776;
+  fra.me.meth = LOCATE_NEW_ReduceAction221_parser___ReduceAction221___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7776 */
+  fra.me.REG[0] = NEW_ReduceAction221();
+  INIT_ATTRIBUTES__ReduceAction221(fra.me.REG[0]);
+  parser___ReduceAction221___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction221(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction222[51] = {
+  {(bigint) 1295 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction222 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction222 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1295 /* 4: ReduceAction222 < ReduceAction222: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83791,14 +99449,9 @@ const classtable_elt_t VFT_ReduceAction515[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction515 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction222 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83806,7 +99459,6 @@ const classtable_elt_t VFT_ReduceAction515[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83814,41 +99466,93 @@ const classtable_elt_t VFT_ReduceAction515[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction515 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction515___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction222 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction222___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction515 < ReduceAction515: superclass init_table position */},
-  {(bigint) parser___ReduceAction515___init},
+  {(bigint) 2 /* 49: ReduceAction222 < ReduceAction222: superclass init_table position */},
+  {(bigint) parser___ReduceAction222___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction515(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction515;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction222::_goto */
+void INIT_ATTRIBUTES__ReduceAction222(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction222;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction515(val_t self, char *from) {
-}
-val_t NEW_ReduceAction515_parser___ReduceAction515___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction515();
-  parser___ReduceAction515___init(self, init_table);
-  CHECKNEW_ReduceAction515(self, "parser::ReduceAction515::init for ReduceAction515");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction516[48] = {
-  {(bigint) 1327 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction516 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction516 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1327 /* 3: ReduceAction516 < ReduceAction516: superclass typecheck marker */},
+val_t NEW_ReduceAction222(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction222;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction222(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction222;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction222____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction222_parser___ReduceAction222___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7798;
+  fra.me.meth = LOCATE_NEW_ReduceAction222_parser___ReduceAction222___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7798 */
+  fra.me.REG[0] = NEW_ReduceAction222();
+  INIT_ATTRIBUTES__ReduceAction222(fra.me.REG[0]);
+  parser___ReduceAction222___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction222(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction223[51] = {
+  {(bigint) 1291 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction223 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction223 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1291 /* 4: ReduceAction223 < ReduceAction223: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83861,14 +99565,9 @@ const classtable_elt_t VFT_ReduceAction516[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction516 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction223 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83876,7 +99575,6 @@ const classtable_elt_t VFT_ReduceAction516[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83884,41 +99582,93 @@ const classtable_elt_t VFT_ReduceAction516[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction516 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction516___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction223 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction223___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction516 < ReduceAction516: superclass init_table position */},
-  {(bigint) parser___ReduceAction516___init},
+  {(bigint) 2 /* 49: ReduceAction223 < ReduceAction223: superclass init_table position */},
+  {(bigint) parser___ReduceAction223___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction516(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction516;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction516(val_t self, char *from) {
-}
-val_t NEW_ReduceAction516_parser___ReduceAction516___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction516();
-  parser___ReduceAction516___init(self, init_table);
-  CHECKNEW_ReduceAction516(self, "parser::ReduceAction516::init for ReduceAction516");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction223::_goto */
+void INIT_ATTRIBUTES__ReduceAction223(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction223;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction517[48] = {
-  {(bigint) 1323 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction517 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction517 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1323 /* 3: ReduceAction517 < ReduceAction517: superclass typecheck marker */},
+val_t NEW_ReduceAction223(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction223;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction223(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction223;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction223____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction223_parser___ReduceAction223___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7823;
+  fra.me.meth = LOCATE_NEW_ReduceAction223_parser___ReduceAction223___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7823 */
+  fra.me.REG[0] = NEW_ReduceAction223();
+  INIT_ATTRIBUTES__ReduceAction223(fra.me.REG[0]);
+  parser___ReduceAction223___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction223(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction230[51] = {
+  {(bigint) 1283 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction230 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction230 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1283 /* 4: ReduceAction230 < ReduceAction230: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83931,14 +99681,9 @@ const classtable_elt_t VFT_ReduceAction517[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction517 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction230 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -83946,7 +99691,6 @@ const classtable_elt_t VFT_ReduceAction517[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -83954,41 +99698,93 @@ const classtable_elt_t VFT_ReduceAction517[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction517 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction517___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction230 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction230___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction517 < ReduceAction517: superclass init_table position */},
-  {(bigint) parser___ReduceAction517___init},
+  {(bigint) 2 /* 49: ReduceAction230 < ReduceAction230: superclass init_table position */},
+  {(bigint) parser___ReduceAction230___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction517(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction517;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction517(val_t self, char *from) {
-}
-val_t NEW_ReduceAction517_parser___ReduceAction517___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction517();
-  parser___ReduceAction517___init(self, init_table);
-  CHECKNEW_ReduceAction517(self, "parser::ReduceAction517::init for ReduceAction517");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction230::_goto */
+void INIT_ATTRIBUTES__ReduceAction230(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction230;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction518[48] = {
-  {(bigint) 1319 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction518 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction518 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1319 /* 3: ReduceAction518 < ReduceAction518: superclass typecheck marker */},
+val_t NEW_ReduceAction230(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction230;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction230(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction230;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction230____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction230_parser___ReduceAction230___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7854;
+  fra.me.meth = LOCATE_NEW_ReduceAction230_parser___ReduceAction230___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7854 */
+  fra.me.REG[0] = NEW_ReduceAction230();
+  INIT_ATTRIBUTES__ReduceAction230(fra.me.REG[0]);
+  parser___ReduceAction230___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction230(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction231[51] = {
+  {(bigint) 1279 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction231 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction231 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1279 /* 4: ReduceAction231 < ReduceAction231: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84001,14 +99797,9 @@ const classtable_elt_t VFT_ReduceAction518[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction518 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction231 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84016,7 +99807,6 @@ const classtable_elt_t VFT_ReduceAction518[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84024,41 +99814,93 @@ const classtable_elt_t VFT_ReduceAction518[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction518 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction518___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction231 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction231___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction518 < ReduceAction518: superclass init_table position */},
-  {(bigint) parser___ReduceAction518___init},
+  {(bigint) 2 /* 49: ReduceAction231 < ReduceAction231: superclass init_table position */},
+  {(bigint) parser___ReduceAction231___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction518(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction518;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction518(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction231::_goto */
+void INIT_ATTRIBUTES__ReduceAction231(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction231;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction518_parser___ReduceAction518___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction518();
-  parser___ReduceAction518___init(self, init_table);
-  CHECKNEW_ReduceAction518(self, "parser::ReduceAction518::init for ReduceAction518");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction519[48] = {
-  {(bigint) 1315 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction519 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction519 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1315 /* 3: ReduceAction519 < ReduceAction519: superclass typecheck marker */},
+val_t NEW_ReduceAction231(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction231;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction231(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction231;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction231____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction231_parser___ReduceAction231___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7882;
+  fra.me.meth = LOCATE_NEW_ReduceAction231_parser___ReduceAction231___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7882 */
+  fra.me.REG[0] = NEW_ReduceAction231();
+  INIT_ATTRIBUTES__ReduceAction231(fra.me.REG[0]);
+  parser___ReduceAction231___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction231(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction232[51] = {
+  {(bigint) 1275 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction232 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction232 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1275 /* 4: ReduceAction232 < ReduceAction232: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84071,14 +99913,9 @@ const classtable_elt_t VFT_ReduceAction519[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction519 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction232 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84086,7 +99923,6 @@ const classtable_elt_t VFT_ReduceAction519[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84094,41 +99930,93 @@ const classtable_elt_t VFT_ReduceAction519[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction519 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction519___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction232 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction232___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction519 < ReduceAction519: superclass init_table position */},
-  {(bigint) parser___ReduceAction519___init},
+  {(bigint) 2 /* 49: ReduceAction232 < ReduceAction232: superclass init_table position */},
+  {(bigint) parser___ReduceAction232___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction519(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction519;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction232::_goto */
+void INIT_ATTRIBUTES__ReduceAction232(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction232;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction519(val_t self, char *from) {
-}
-val_t NEW_ReduceAction519_parser___ReduceAction519___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction519();
-  parser___ReduceAction519___init(self, init_table);
-  CHECKNEW_ReduceAction519(self, "parser::ReduceAction519::init for ReduceAction519");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction520[48] = {
-  {(bigint) 1307 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction520 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction520 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1307 /* 3: ReduceAction520 < ReduceAction520: superclass typecheck marker */},
+val_t NEW_ReduceAction232(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction232;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction232(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction232;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction232____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction232_parser___ReduceAction232___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7917;
+  fra.me.meth = LOCATE_NEW_ReduceAction232_parser___ReduceAction232___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7917 */
+  fra.me.REG[0] = NEW_ReduceAction232();
+  INIT_ATTRIBUTES__ReduceAction232(fra.me.REG[0]);
+  parser___ReduceAction232___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction232(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction233[51] = {
+  {(bigint) 1271 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction233 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction233 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1271 /* 4: ReduceAction233 < ReduceAction233: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84141,14 +100029,9 @@ const classtable_elt_t VFT_ReduceAction520[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction520 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction233 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84156,7 +100039,6 @@ const classtable_elt_t VFT_ReduceAction520[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84164,41 +100046,93 @@ const classtable_elt_t VFT_ReduceAction520[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction520 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction520___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction233 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction233___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction520 < ReduceAction520: superclass init_table position */},
-  {(bigint) parser___ReduceAction520___init},
+  {(bigint) 2 /* 49: ReduceAction233 < ReduceAction233: superclass init_table position */},
+  {(bigint) parser___ReduceAction233___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction520(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction520;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction520(val_t self, char *from) {
-}
-val_t NEW_ReduceAction520_parser___ReduceAction520___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction520();
-  parser___ReduceAction520___init(self, init_table);
-  CHECKNEW_ReduceAction520(self, "parser::ReduceAction520::init for ReduceAction520");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction233::_goto */
+void INIT_ATTRIBUTES__ReduceAction233(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction233;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction521[48] = {
-  {(bigint) 1303 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction521 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction521 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1303 /* 3: ReduceAction521 < ReduceAction521: superclass typecheck marker */},
+val_t NEW_ReduceAction233(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction233;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction233(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction233;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction233____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction233_parser___ReduceAction233___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7949;
+  fra.me.meth = LOCATE_NEW_ReduceAction233_parser___ReduceAction233___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7949 */
+  fra.me.REG[0] = NEW_ReduceAction233();
+  INIT_ATTRIBUTES__ReduceAction233(fra.me.REG[0]);
+  parser___ReduceAction233___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction233(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction234[51] = {
+  {(bigint) 1267 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction234 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction234 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1267 /* 4: ReduceAction234 < ReduceAction234: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84211,14 +100145,9 @@ const classtable_elt_t VFT_ReduceAction521[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction521 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction234 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84226,7 +100155,6 @@ const classtable_elt_t VFT_ReduceAction521[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84234,41 +100162,93 @@ const classtable_elt_t VFT_ReduceAction521[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction521 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction521___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction234 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction234___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction521 < ReduceAction521: superclass init_table position */},
-  {(bigint) parser___ReduceAction521___init},
+  {(bigint) 2 /* 49: ReduceAction234 < ReduceAction234: superclass init_table position */},
+  {(bigint) parser___ReduceAction234___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction521(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction521;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction521(val_t self, char *from) {
-}
-val_t NEW_ReduceAction521_parser___ReduceAction521___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction521();
-  parser___ReduceAction521___init(self, init_table);
-  CHECKNEW_ReduceAction521(self, "parser::ReduceAction521::init for ReduceAction521");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction234::_goto */
+void INIT_ATTRIBUTES__ReduceAction234(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction234;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction522[48] = {
-  {(bigint) 1299 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction522 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction522 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1299 /* 3: ReduceAction522 < ReduceAction522: superclass typecheck marker */},
+val_t NEW_ReduceAction234(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction234;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction234(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction234;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction234____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction234_parser___ReduceAction234___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 7973;
+  fra.me.meth = LOCATE_NEW_ReduceAction234_parser___ReduceAction234___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:7973 */
+  fra.me.REG[0] = NEW_ReduceAction234();
+  INIT_ATTRIBUTES__ReduceAction234(fra.me.REG[0]);
+  parser___ReduceAction234___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction234(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction235[51] = {
+  {(bigint) 1263 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction235 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction235 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1263 /* 4: ReduceAction235 < ReduceAction235: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84281,14 +100261,9 @@ const classtable_elt_t VFT_ReduceAction522[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction522 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction235 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84296,7 +100271,6 @@ const classtable_elt_t VFT_ReduceAction522[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84304,41 +100278,93 @@ const classtable_elt_t VFT_ReduceAction522[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction522 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction522___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction235 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction235___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction522 < ReduceAction522: superclass init_table position */},
-  {(bigint) parser___ReduceAction522___init},
+  {(bigint) 2 /* 49: ReduceAction235 < ReduceAction235: superclass init_table position */},
+  {(bigint) parser___ReduceAction235___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction522(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction522;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction522(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction235::_goto */
+void INIT_ATTRIBUTES__ReduceAction235(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction235;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction522_parser___ReduceAction522___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction522();
-  parser___ReduceAction522___init(self, init_table);
-  CHECKNEW_ReduceAction522(self, "parser::ReduceAction522::init for ReduceAction522");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction523[48] = {
-  {(bigint) 1295 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction523 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction523 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1295 /* 3: ReduceAction523 < ReduceAction523: superclass typecheck marker */},
+val_t NEW_ReduceAction235(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction235;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction235(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction235;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction235____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction235_parser___ReduceAction235___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8000;
+  fra.me.meth = LOCATE_NEW_ReduceAction235_parser___ReduceAction235___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8000 */
+  fra.me.REG[0] = NEW_ReduceAction235();
+  INIT_ATTRIBUTES__ReduceAction235(fra.me.REG[0]);
+  parser___ReduceAction235___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction235(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction236[51] = {
+  {(bigint) 1259 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction236 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction236 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1259 /* 4: ReduceAction236 < ReduceAction236: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84351,14 +100377,9 @@ const classtable_elt_t VFT_ReduceAction523[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction523 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction236 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84366,7 +100387,6 @@ const classtable_elt_t VFT_ReduceAction523[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84374,41 +100394,93 @@ const classtable_elt_t VFT_ReduceAction523[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction523 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction523___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction236 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction236___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction523 < ReduceAction523: superclass init_table position */},
-  {(bigint) parser___ReduceAction523___init},
+  {(bigint) 2 /* 49: ReduceAction236 < ReduceAction236: superclass init_table position */},
+  {(bigint) parser___ReduceAction236___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction523(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction523;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction236::_goto */
+void INIT_ATTRIBUTES__ReduceAction236(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction236;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction523(val_t self, char *from) {
-}
-val_t NEW_ReduceAction523_parser___ReduceAction523___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction523();
-  parser___ReduceAction523___init(self, init_table);
-  CHECKNEW_ReduceAction523(self, "parser::ReduceAction523::init for ReduceAction523");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction524[48] = {
-  {(bigint) 1291 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction524 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction524 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1291 /* 3: ReduceAction524 < ReduceAction524: superclass typecheck marker */},
+val_t NEW_ReduceAction236(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction236;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction236(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction236;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction236____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction236_parser___ReduceAction236___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8029;
+  fra.me.meth = LOCATE_NEW_ReduceAction236_parser___ReduceAction236___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8029 */
+  fra.me.REG[0] = NEW_ReduceAction236();
+  INIT_ATTRIBUTES__ReduceAction236(fra.me.REG[0]);
+  parser___ReduceAction236___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction236(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction237[51] = {
+  {(bigint) 1255 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction237 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction237 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1255 /* 4: ReduceAction237 < ReduceAction237: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84421,14 +100493,9 @@ const classtable_elt_t VFT_ReduceAction524[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction524 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction237 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84436,7 +100503,6 @@ const classtable_elt_t VFT_ReduceAction524[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84444,41 +100510,93 @@ const classtable_elt_t VFT_ReduceAction524[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction524 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction524___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction237 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction237___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction524 < ReduceAction524: superclass init_table position */},
-  {(bigint) parser___ReduceAction524___init},
+  {(bigint) 2 /* 49: ReduceAction237 < ReduceAction237: superclass init_table position */},
+  {(bigint) parser___ReduceAction237___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction524(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction524;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction524(val_t self, char *from) {
-}
-val_t NEW_ReduceAction524_parser___ReduceAction524___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction524();
-  parser___ReduceAction524___init(self, init_table);
-  CHECKNEW_ReduceAction524(self, "parser::ReduceAction524::init for ReduceAction524");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction237::_goto */
+void INIT_ATTRIBUTES__ReduceAction237(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction237;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction525[48] = {
-  {(bigint) 1287 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction525 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction525 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1287 /* 3: ReduceAction525 < ReduceAction525: superclass typecheck marker */},
+val_t NEW_ReduceAction237(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction237;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction237(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction237;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction237____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction237_parser___ReduceAction237___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8055;
+  fra.me.meth = LOCATE_NEW_ReduceAction237_parser___ReduceAction237___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8055 */
+  fra.me.REG[0] = NEW_ReduceAction237();
+  INIT_ATTRIBUTES__ReduceAction237(fra.me.REG[0]);
+  parser___ReduceAction237___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction237(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction238[51] = {
+  {(bigint) 1251 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction238 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction238 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1251 /* 4: ReduceAction238 < ReduceAction238: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84491,14 +100609,9 @@ const classtable_elt_t VFT_ReduceAction525[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction525 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction238 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84506,7 +100619,6 @@ const classtable_elt_t VFT_ReduceAction525[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84514,41 +100626,93 @@ const classtable_elt_t VFT_ReduceAction525[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction525 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction525___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction238 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction238___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction525 < ReduceAction525: superclass init_table position */},
-  {(bigint) parser___ReduceAction525___init},
+  {(bigint) 2 /* 49: ReduceAction238 < ReduceAction238: superclass init_table position */},
+  {(bigint) parser___ReduceAction238___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction525(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction525;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction525(val_t self, char *from) {
-}
-val_t NEW_ReduceAction525_parser___ReduceAction525___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction525();
-  parser___ReduceAction525___init(self, init_table);
-  CHECKNEW_ReduceAction525(self, "parser::ReduceAction525::init for ReduceAction525");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction238::_goto */
+void INIT_ATTRIBUTES__ReduceAction238(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction238;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction526[48] = {
-  {(bigint) 1283 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction526 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction526 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1283 /* 3: ReduceAction526 < ReduceAction526: superclass typecheck marker */},
+val_t NEW_ReduceAction238(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction238;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction238(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction238;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction238____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction238_parser___ReduceAction238___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8076;
+  fra.me.meth = LOCATE_NEW_ReduceAction238_parser___ReduceAction238___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8076 */
+  fra.me.REG[0] = NEW_ReduceAction238();
+  INIT_ATTRIBUTES__ReduceAction238(fra.me.REG[0]);
+  parser___ReduceAction238___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction238(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction239[51] = {
+  {(bigint) 1247 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction239 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction239 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1247 /* 4: ReduceAction239 < ReduceAction239: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84561,14 +100725,9 @@ const classtable_elt_t VFT_ReduceAction526[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction526 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction239 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84576,7 +100735,6 @@ const classtable_elt_t VFT_ReduceAction526[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84584,41 +100742,93 @@ const classtable_elt_t VFT_ReduceAction526[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction526 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction526___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction239 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction239___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction526 < ReduceAction526: superclass init_table position */},
-  {(bigint) parser___ReduceAction526___init},
+  {(bigint) 2 /* 49: ReduceAction239 < ReduceAction239: superclass init_table position */},
+  {(bigint) parser___ReduceAction239___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction526(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction526;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction526(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction239::_goto */
+void INIT_ATTRIBUTES__ReduceAction239(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction239;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction526_parser___ReduceAction526___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction526();
-  parser___ReduceAction526___init(self, init_table);
-  CHECKNEW_ReduceAction526(self, "parser::ReduceAction526::init for ReduceAction526");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction527[48] = {
-  {(bigint) 1279 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction527 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction527 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1279 /* 3: ReduceAction527 < ReduceAction527: superclass typecheck marker */},
+val_t NEW_ReduceAction239(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction239;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction239(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction239;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction239____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction239_parser___ReduceAction239___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8093;
+  fra.me.meth = LOCATE_NEW_ReduceAction239_parser___ReduceAction239___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8093 */
+  fra.me.REG[0] = NEW_ReduceAction239();
+  INIT_ATTRIBUTES__ReduceAction239(fra.me.REG[0]);
+  parser___ReduceAction239___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction239(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction240[51] = {
+  {(bigint) 1239 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction240 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction240 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1239 /* 4: ReduceAction240 < ReduceAction240: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84631,14 +100841,9 @@ const classtable_elt_t VFT_ReduceAction527[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction527 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction240 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84646,7 +100851,6 @@ const classtable_elt_t VFT_ReduceAction527[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84654,41 +100858,93 @@ const classtable_elt_t VFT_ReduceAction527[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction527 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction527___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction240 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction240___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction527 < ReduceAction527: superclass init_table position */},
-  {(bigint) parser___ReduceAction527___init},
+  {(bigint) 2 /* 49: ReduceAction240 < ReduceAction240: superclass init_table position */},
+  {(bigint) parser___ReduceAction240___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction527(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction527;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction240::_goto */
+void INIT_ATTRIBUTES__ReduceAction240(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction240;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction527(val_t self, char *from) {
-}
-val_t NEW_ReduceAction527_parser___ReduceAction527___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction527();
-  parser___ReduceAction527___init(self, init_table);
-  CHECKNEW_ReduceAction527(self, "parser::ReduceAction527::init for ReduceAction527");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction528[48] = {
-  {(bigint) 1275 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction528 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction528 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1275 /* 3: ReduceAction528 < ReduceAction528: superclass typecheck marker */},
+val_t NEW_ReduceAction240(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction240;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction240(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction240;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction240____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction240_parser___ReduceAction240___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8114;
+  fra.me.meth = LOCATE_NEW_ReduceAction240_parser___ReduceAction240___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8114 */
+  fra.me.REG[0] = NEW_ReduceAction240();
+  INIT_ATTRIBUTES__ReduceAction240(fra.me.REG[0]);
+  parser___ReduceAction240___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction240(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction241[51] = {
+  {(bigint) 1235 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction241 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction241 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1235 /* 4: ReduceAction241 < ReduceAction241: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84701,14 +100957,9 @@ const classtable_elt_t VFT_ReduceAction528[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction528 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction241 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84716,7 +100967,6 @@ const classtable_elt_t VFT_ReduceAction528[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84724,41 +100974,93 @@ const classtable_elt_t VFT_ReduceAction528[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction528 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction528___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction241 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction241___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction528 < ReduceAction528: superclass init_table position */},
-  {(bigint) parser___ReduceAction528___init},
+  {(bigint) 2 /* 49: ReduceAction241 < ReduceAction241: superclass init_table position */},
+  {(bigint) parser___ReduceAction241___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction528(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction528;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction528(val_t self, char *from) {
-}
-val_t NEW_ReduceAction528_parser___ReduceAction528___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction528();
-  parser___ReduceAction528___init(self, init_table);
-  CHECKNEW_ReduceAction528(self, "parser::ReduceAction528::init for ReduceAction528");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction241::_goto */
+void INIT_ATTRIBUTES__ReduceAction241(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction241;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction529[48] = {
-  {(bigint) 1271 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction529 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction529 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1271 /* 3: ReduceAction529 < ReduceAction529: superclass typecheck marker */},
+val_t NEW_ReduceAction241(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction241;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction241(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction241;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction241____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction241_parser___ReduceAction241___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8149;
+  fra.me.meth = LOCATE_NEW_ReduceAction241_parser___ReduceAction241___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8149 */
+  fra.me.REG[0] = NEW_ReduceAction241();
+  INIT_ATTRIBUTES__ReduceAction241(fra.me.REG[0]);
+  parser___ReduceAction241___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction241(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction242[51] = {
+  {(bigint) 1231 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction242 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction242 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1231 /* 4: ReduceAction242 < ReduceAction242: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84771,14 +101073,9 @@ const classtable_elt_t VFT_ReduceAction529[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction529 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction242 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84786,7 +101083,6 @@ const classtable_elt_t VFT_ReduceAction529[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84794,41 +101090,93 @@ const classtable_elt_t VFT_ReduceAction529[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction529 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction529___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction242 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction242___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction529 < ReduceAction529: superclass init_table position */},
-  {(bigint) parser___ReduceAction529___init},
+  {(bigint) 2 /* 49: ReduceAction242 < ReduceAction242: superclass init_table position */},
+  {(bigint) parser___ReduceAction242___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction529(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction529;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction529(val_t self, char *from) {
-}
-val_t NEW_ReduceAction529_parser___ReduceAction529___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction529();
-  parser___ReduceAction529___init(self, init_table);
-  CHECKNEW_ReduceAction529(self, "parser::ReduceAction529::init for ReduceAction529");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction242::_goto */
+void INIT_ATTRIBUTES__ReduceAction242(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction242;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction530[48] = {
-  {(bigint) 1263 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction530 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction530 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1263 /* 3: ReduceAction530 < ReduceAction530: superclass typecheck marker */},
+val_t NEW_ReduceAction242(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction242;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction242(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction242;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction242____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction242_parser___ReduceAction242___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8188;
+  fra.me.meth = LOCATE_NEW_ReduceAction242_parser___ReduceAction242___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8188 */
+  fra.me.REG[0] = NEW_ReduceAction242();
+  INIT_ATTRIBUTES__ReduceAction242(fra.me.REG[0]);
+  parser___ReduceAction242___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction242(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction243[51] = {
+  {(bigint) 1227 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction243 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction243 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1227 /* 4: ReduceAction243 < ReduceAction243: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84841,14 +101189,9 @@ const classtable_elt_t VFT_ReduceAction530[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction530 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction243 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84856,7 +101199,6 @@ const classtable_elt_t VFT_ReduceAction530[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84864,41 +101206,93 @@ const classtable_elt_t VFT_ReduceAction530[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction530 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction530___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction243 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction243___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction530 < ReduceAction530: superclass init_table position */},
-  {(bigint) parser___ReduceAction530___init},
+  {(bigint) 2 /* 49: ReduceAction243 < ReduceAction243: superclass init_table position */},
+  {(bigint) parser___ReduceAction243___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction530(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction530;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction530(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction243::_goto */
+void INIT_ATTRIBUTES__ReduceAction243(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction243;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction530_parser___ReduceAction530___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction530();
-  parser___ReduceAction530___init(self, init_table);
-  CHECKNEW_ReduceAction530(self, "parser::ReduceAction530::init for ReduceAction530");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction531[48] = {
-  {(bigint) 1259 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction531 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction531 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1259 /* 3: ReduceAction531 < ReduceAction531: superclass typecheck marker */},
+val_t NEW_ReduceAction243(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction243;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction243(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction243;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction243____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction243_parser___ReduceAction243___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8220;
+  fra.me.meth = LOCATE_NEW_ReduceAction243_parser___ReduceAction243___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8220 */
+  fra.me.REG[0] = NEW_ReduceAction243();
+  INIT_ATTRIBUTES__ReduceAction243(fra.me.REG[0]);
+  parser___ReduceAction243___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction243(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction244[51] = {
+  {(bigint) 1223 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction244 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction244 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1223 /* 4: ReduceAction244 < ReduceAction244: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84911,14 +101305,9 @@ const classtable_elt_t VFT_ReduceAction531[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction531 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction244 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84926,7 +101315,6 @@ const classtable_elt_t VFT_ReduceAction531[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -84934,41 +101322,93 @@ const classtable_elt_t VFT_ReduceAction531[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction531 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction531___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction244 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction244___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction531 < ReduceAction531: superclass init_table position */},
-  {(bigint) parser___ReduceAction531___init},
+  {(bigint) 2 /* 49: ReduceAction244 < ReduceAction244: superclass init_table position */},
+  {(bigint) parser___ReduceAction244___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction531(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction531;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction244::_goto */
+void INIT_ATTRIBUTES__ReduceAction244(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction244;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction531(val_t self, char *from) {
-}
-val_t NEW_ReduceAction531_parser___ReduceAction531___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction531();
-  parser___ReduceAction531___init(self, init_table);
-  CHECKNEW_ReduceAction531(self, "parser::ReduceAction531::init for ReduceAction531");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction532[48] = {
-  {(bigint) 1255 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction532 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction532 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1255 /* 3: ReduceAction532 < ReduceAction532: superclass typecheck marker */},
+val_t NEW_ReduceAction244(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction244;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction244(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction244;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction244____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction244_parser___ReduceAction244___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8256;
+  fra.me.meth = LOCATE_NEW_ReduceAction244_parser___ReduceAction244___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8256 */
+  fra.me.REG[0] = NEW_ReduceAction244();
+  INIT_ATTRIBUTES__ReduceAction244(fra.me.REG[0]);
+  parser___ReduceAction244___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction244(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction245[51] = {
+  {(bigint) 1219 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction245 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction245 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1219 /* 4: ReduceAction245 < ReduceAction245: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84981,14 +101421,9 @@ const classtable_elt_t VFT_ReduceAction532[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction532 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction245 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -84996,7 +101431,6 @@ const classtable_elt_t VFT_ReduceAction532[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85004,41 +101438,93 @@ const classtable_elt_t VFT_ReduceAction532[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction532 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction532___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction245 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction245___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction532 < ReduceAction532: superclass init_table position */},
-  {(bigint) parser___ReduceAction532___init},
+  {(bigint) 2 /* 49: ReduceAction245 < ReduceAction245: superclass init_table position */},
+  {(bigint) parser___ReduceAction245___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction532(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction532;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction532(val_t self, char *from) {
-}
-val_t NEW_ReduceAction532_parser___ReduceAction532___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction532();
-  parser___ReduceAction532___init(self, init_table);
-  CHECKNEW_ReduceAction532(self, "parser::ReduceAction532::init for ReduceAction532");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction245::_goto */
+void INIT_ATTRIBUTES__ReduceAction245(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction245;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction533[48] = {
-  {(bigint) 1251 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction533 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction533 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1251 /* 3: ReduceAction533 < ReduceAction533: superclass typecheck marker */},
+val_t NEW_ReduceAction245(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction245;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction245(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction245;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction245____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction245_parser___ReduceAction245___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8287;
+  fra.me.meth = LOCATE_NEW_ReduceAction245_parser___ReduceAction245___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8287 */
+  fra.me.REG[0] = NEW_ReduceAction245();
+  INIT_ATTRIBUTES__ReduceAction245(fra.me.REG[0]);
+  parser___ReduceAction245___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction245(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction246[51] = {
+  {(bigint) 1215 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction246 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction246 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1215 /* 4: ReduceAction246 < ReduceAction246: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85051,14 +101537,9 @@ const classtable_elt_t VFT_ReduceAction533[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction533 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction246 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85066,7 +101547,6 @@ const classtable_elt_t VFT_ReduceAction533[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85074,41 +101554,93 @@ const classtable_elt_t VFT_ReduceAction533[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction533 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction533___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction246 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction246___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction533 < ReduceAction533: superclass init_table position */},
-  {(bigint) parser___ReduceAction533___init},
+  {(bigint) 2 /* 49: ReduceAction246 < ReduceAction246: superclass init_table position */},
+  {(bigint) parser___ReduceAction246___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction533(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction533;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction533(val_t self, char *from) {
-}
-val_t NEW_ReduceAction533_parser___ReduceAction533___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction533();
-  parser___ReduceAction533___init(self, init_table);
-  CHECKNEW_ReduceAction533(self, "parser::ReduceAction533::init for ReduceAction533");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction246::_goto */
+void INIT_ATTRIBUTES__ReduceAction246(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction246;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction534[48] = {
-  {(bigint) 1247 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction534 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction534 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1247 /* 3: ReduceAction534 < ReduceAction534: superclass typecheck marker */},
+val_t NEW_ReduceAction246(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction246;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction246(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction246;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction246____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction246_parser___ReduceAction246___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8322;
+  fra.me.meth = LOCATE_NEW_ReduceAction246_parser___ReduceAction246___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8322 */
+  fra.me.REG[0] = NEW_ReduceAction246();
+  INIT_ATTRIBUTES__ReduceAction246(fra.me.REG[0]);
+  parser___ReduceAction246___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction246(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction247[51] = {
+  {(bigint) 1211 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction247 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction247 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1211 /* 4: ReduceAction247 < ReduceAction247: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85121,14 +101653,9 @@ const classtable_elt_t VFT_ReduceAction534[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction534 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction247 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85136,7 +101663,6 @@ const classtable_elt_t VFT_ReduceAction534[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85144,41 +101670,93 @@ const classtable_elt_t VFT_ReduceAction534[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction534 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction534___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction247 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction247___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction534 < ReduceAction534: superclass init_table position */},
-  {(bigint) parser___ReduceAction534___init},
+  {(bigint) 2 /* 49: ReduceAction247 < ReduceAction247: superclass init_table position */},
+  {(bigint) parser___ReduceAction247___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction534(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction534;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction534(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction247::_goto */
+void INIT_ATTRIBUTES__ReduceAction247(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction247;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction534_parser___ReduceAction534___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction534();
-  parser___ReduceAction534___init(self, init_table);
-  CHECKNEW_ReduceAction534(self, "parser::ReduceAction534::init for ReduceAction534");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction535[48] = {
-  {(bigint) 1243 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction535 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction535 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1243 /* 3: ReduceAction535 < ReduceAction535: superclass typecheck marker */},
+val_t NEW_ReduceAction247(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction247;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction247(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction247;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction247____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction247_parser___ReduceAction247___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8355;
+  fra.me.meth = LOCATE_NEW_ReduceAction247_parser___ReduceAction247___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8355 */
+  fra.me.REG[0] = NEW_ReduceAction247();
+  INIT_ATTRIBUTES__ReduceAction247(fra.me.REG[0]);
+  parser___ReduceAction247___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction247(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction248[51] = {
+  {(bigint) 1207 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction248 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction248 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1207 /* 4: ReduceAction248 < ReduceAction248: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85191,14 +101769,9 @@ const classtable_elt_t VFT_ReduceAction535[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction535 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction248 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85206,7 +101779,6 @@ const classtable_elt_t VFT_ReduceAction535[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85214,41 +101786,93 @@ const classtable_elt_t VFT_ReduceAction535[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction535 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction535___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction248 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction248___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction535 < ReduceAction535: superclass init_table position */},
-  {(bigint) parser___ReduceAction535___init},
+  {(bigint) 2 /* 49: ReduceAction248 < ReduceAction248: superclass init_table position */},
+  {(bigint) parser___ReduceAction248___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction535(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction535;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction248::_goto */
+void INIT_ATTRIBUTES__ReduceAction248(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction248;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction535(val_t self, char *from) {
-}
-val_t NEW_ReduceAction535_parser___ReduceAction535___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction535();
-  parser___ReduceAction535___init(self, init_table);
-  CHECKNEW_ReduceAction535(self, "parser::ReduceAction535::init for ReduceAction535");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction536[48] = {
-  {(bigint) 1239 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction536 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction536 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1239 /* 3: ReduceAction536 < ReduceAction536: superclass typecheck marker */},
+val_t NEW_ReduceAction248(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction248;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction248(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction248;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction248____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction248_parser___ReduceAction248___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8392;
+  fra.me.meth = LOCATE_NEW_ReduceAction248_parser___ReduceAction248___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8392 */
+  fra.me.REG[0] = NEW_ReduceAction248();
+  INIT_ATTRIBUTES__ReduceAction248(fra.me.REG[0]);
+  parser___ReduceAction248___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction248(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction249[51] = {
+  {(bigint) 1203 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction249 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction249 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1203 /* 4: ReduceAction249 < ReduceAction249: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85261,14 +101885,9 @@ const classtable_elt_t VFT_ReduceAction536[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction536 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction249 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85276,7 +101895,6 @@ const classtable_elt_t VFT_ReduceAction536[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85284,41 +101902,93 @@ const classtable_elt_t VFT_ReduceAction536[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction536 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction536___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction249 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction249___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction536 < ReduceAction536: superclass init_table position */},
-  {(bigint) parser___ReduceAction536___init},
+  {(bigint) 2 /* 49: ReduceAction249 < ReduceAction249: superclass init_table position */},
+  {(bigint) parser___ReduceAction249___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction536(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction536;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction536(val_t self, char *from) {
-}
-val_t NEW_ReduceAction536_parser___ReduceAction536___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction536();
-  parser___ReduceAction536___init(self, init_table);
-  CHECKNEW_ReduceAction536(self, "parser::ReduceAction536::init for ReduceAction536");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction249::_goto */
+void INIT_ATTRIBUTES__ReduceAction249(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction249;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction537[48] = {
-  {(bigint) 1235 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction537 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction537 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1235 /* 3: ReduceAction537 < ReduceAction537: superclass typecheck marker */},
+val_t NEW_ReduceAction249(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction249;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction249(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction249;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction249____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction249_parser___ReduceAction249___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8422;
+  fra.me.meth = LOCATE_NEW_ReduceAction249_parser___ReduceAction249___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8422 */
+  fra.me.REG[0] = NEW_ReduceAction249();
+  INIT_ATTRIBUTES__ReduceAction249(fra.me.REG[0]);
+  parser___ReduceAction249___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction249(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction250[51] = {
+  {(bigint) 1195 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction250 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction250 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1195 /* 4: ReduceAction250 < ReduceAction250: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85331,14 +102001,9 @@ const classtable_elt_t VFT_ReduceAction537[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction537 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction250 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85346,7 +102011,6 @@ const classtable_elt_t VFT_ReduceAction537[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85354,41 +102018,93 @@ const classtable_elt_t VFT_ReduceAction537[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction537 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction537___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction250 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction250___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction537 < ReduceAction537: superclass init_table position */},
-  {(bigint) parser___ReduceAction537___init},
+  {(bigint) 2 /* 49: ReduceAction250 < ReduceAction250: superclass init_table position */},
+  {(bigint) parser___ReduceAction250___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction537(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction537;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction537(val_t self, char *from) {
-}
-val_t NEW_ReduceAction537_parser___ReduceAction537___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction537();
-  parser___ReduceAction537___init(self, init_table);
-  CHECKNEW_ReduceAction537(self, "parser::ReduceAction537::init for ReduceAction537");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction250::_goto */
+void INIT_ATTRIBUTES__ReduceAction250(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction250;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction538[48] = {
-  {(bigint) 1231 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction538 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction538 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1231 /* 3: ReduceAction538 < ReduceAction538: superclass typecheck marker */},
+val_t NEW_ReduceAction250(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction250;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction250(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction250;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction250____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction250_parser___ReduceAction250___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8456;
+  fra.me.meth = LOCATE_NEW_ReduceAction250_parser___ReduceAction250___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8456 */
+  fra.me.REG[0] = NEW_ReduceAction250();
+  INIT_ATTRIBUTES__ReduceAction250(fra.me.REG[0]);
+  parser___ReduceAction250___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction250(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction251[51] = {
+  {(bigint) 1191 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction251 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction251 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1191 /* 4: ReduceAction251 < ReduceAction251: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85401,14 +102117,9 @@ const classtable_elt_t VFT_ReduceAction538[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction538 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction251 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85416,7 +102127,6 @@ const classtable_elt_t VFT_ReduceAction538[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85424,41 +102134,93 @@ const classtable_elt_t VFT_ReduceAction538[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction538 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction538___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction251 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction251___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction538 < ReduceAction538: superclass init_table position */},
-  {(bigint) parser___ReduceAction538___init},
+  {(bigint) 2 /* 49: ReduceAction251 < ReduceAction251: superclass init_table position */},
+  {(bigint) parser___ReduceAction251___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction538(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction538;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction538(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction251::_goto */
+void INIT_ATTRIBUTES__ReduceAction251(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction251;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction538_parser___ReduceAction538___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction538();
-  parser___ReduceAction538___init(self, init_table);
-  CHECKNEW_ReduceAction538(self, "parser::ReduceAction538::init for ReduceAction538");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction539[48] = {
-  {(bigint) 1227 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction539 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction539 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1227 /* 3: ReduceAction539 < ReduceAction539: superclass typecheck marker */},
+val_t NEW_ReduceAction251(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction251;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction251(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction251;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction251____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction251_parser___ReduceAction251___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8473;
+  fra.me.meth = LOCATE_NEW_ReduceAction251_parser___ReduceAction251___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8473 */
+  fra.me.REG[0] = NEW_ReduceAction251();
+  INIT_ATTRIBUTES__ReduceAction251(fra.me.REG[0]);
+  parser___ReduceAction251___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction251(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction252[51] = {
+  {(bigint) 1187 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction252 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction252 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1187 /* 4: ReduceAction252 < ReduceAction252: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85471,14 +102233,9 @@ const classtable_elt_t VFT_ReduceAction539[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction539 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction252 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85486,7 +102243,6 @@ const classtable_elt_t VFT_ReduceAction539[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85494,41 +102250,93 @@ const classtable_elt_t VFT_ReduceAction539[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction539 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction539___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction252 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction252___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction539 < ReduceAction539: superclass init_table position */},
-  {(bigint) parser___ReduceAction539___init},
+  {(bigint) 2 /* 49: ReduceAction252 < ReduceAction252: superclass init_table position */},
+  {(bigint) parser___ReduceAction252___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction539(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction539;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction252::_goto */
+void INIT_ATTRIBUTES__ReduceAction252(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction252;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction539(val_t self, char *from) {
-}
-val_t NEW_ReduceAction539_parser___ReduceAction539___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction539();
-  parser___ReduceAction539___init(self, init_table);
-  CHECKNEW_ReduceAction539(self, "parser::ReduceAction539::init for ReduceAction539");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction540[48] = {
-  {(bigint) 1219 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction540 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction540 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1219 /* 3: ReduceAction540 < ReduceAction540: superclass typecheck marker */},
+val_t NEW_ReduceAction252(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction252;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction252(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction252;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction252____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction252_parser___ReduceAction252___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8490;
+  fra.me.meth = LOCATE_NEW_ReduceAction252_parser___ReduceAction252___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8490 */
+  fra.me.REG[0] = NEW_ReduceAction252();
+  INIT_ATTRIBUTES__ReduceAction252(fra.me.REG[0]);
+  parser___ReduceAction252___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction252(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction253[51] = {
+  {(bigint) 1183 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction253 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction253 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1183 /* 4: ReduceAction253 < ReduceAction253: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85541,14 +102349,9 @@ const classtable_elt_t VFT_ReduceAction540[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction540 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction253 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85556,7 +102359,6 @@ const classtable_elt_t VFT_ReduceAction540[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85564,41 +102366,93 @@ const classtable_elt_t VFT_ReduceAction540[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction540 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction540___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction253 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction253___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction540 < ReduceAction540: superclass init_table position */},
-  {(bigint) parser___ReduceAction540___init},
+  {(bigint) 2 /* 49: ReduceAction253 < ReduceAction253: superclass init_table position */},
+  {(bigint) parser___ReduceAction253___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction540(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction540;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction540(val_t self, char *from) {
-}
-val_t NEW_ReduceAction540_parser___ReduceAction540___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction540();
-  parser___ReduceAction540___init(self, init_table);
-  CHECKNEW_ReduceAction540(self, "parser::ReduceAction540::init for ReduceAction540");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction253::_goto */
+void INIT_ATTRIBUTES__ReduceAction253(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction253;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction541[48] = {
-  {(bigint) 1215 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction541 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction541 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1215 /* 3: ReduceAction541 < ReduceAction541: superclass typecheck marker */},
+val_t NEW_ReduceAction253(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction253;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction253(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction253;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction253____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction253_parser___ReduceAction253___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8509;
+  fra.me.meth = LOCATE_NEW_ReduceAction253_parser___ReduceAction253___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8509 */
+  fra.me.REG[0] = NEW_ReduceAction253();
+  INIT_ATTRIBUTES__ReduceAction253(fra.me.REG[0]);
+  parser___ReduceAction253___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction253(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction254[51] = {
+  {(bigint) 1179 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction254 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction254 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1179 /* 4: ReduceAction254 < ReduceAction254: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85611,14 +102465,9 @@ const classtable_elt_t VFT_ReduceAction541[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction541 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction254 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85626,7 +102475,6 @@ const classtable_elt_t VFT_ReduceAction541[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85634,41 +102482,93 @@ const classtable_elt_t VFT_ReduceAction541[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction541 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction541___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction254 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction254___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction541 < ReduceAction541: superclass init_table position */},
-  {(bigint) parser___ReduceAction541___init},
+  {(bigint) 2 /* 49: ReduceAction254 < ReduceAction254: superclass init_table position */},
+  {(bigint) parser___ReduceAction254___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction541(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction541;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction541(val_t self, char *from) {
-}
-val_t NEW_ReduceAction541_parser___ReduceAction541___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction541();
-  parser___ReduceAction541___init(self, init_table);
-  CHECKNEW_ReduceAction541(self, "parser::ReduceAction541::init for ReduceAction541");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction254::_goto */
+void INIT_ATTRIBUTES__ReduceAction254(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction254;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction542[48] = {
-  {(bigint) 1211 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction542 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction542 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1211 /* 3: ReduceAction542 < ReduceAction542: superclass typecheck marker */},
+val_t NEW_ReduceAction254(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction254;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction254(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction254;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction254____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction254_parser___ReduceAction254___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8533;
+  fra.me.meth = LOCATE_NEW_ReduceAction254_parser___ReduceAction254___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8533 */
+  fra.me.REG[0] = NEW_ReduceAction254();
+  INIT_ATTRIBUTES__ReduceAction254(fra.me.REG[0]);
+  parser___ReduceAction254___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction254(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction255[51] = {
+  {(bigint) 1175 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction255 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction255 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1175 /* 4: ReduceAction255 < ReduceAction255: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85681,14 +102581,9 @@ const classtable_elt_t VFT_ReduceAction542[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction542 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction255 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85696,7 +102591,6 @@ const classtable_elt_t VFT_ReduceAction542[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85704,41 +102598,93 @@ const classtable_elt_t VFT_ReduceAction542[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction542 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction542___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction255 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction255___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction542 < ReduceAction542: superclass init_table position */},
-  {(bigint) parser___ReduceAction542___init},
+  {(bigint) 2 /* 49: ReduceAction255 < ReduceAction255: superclass init_table position */},
+  {(bigint) parser___ReduceAction255___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction542(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction542;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction542(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction255::_goto */
+void INIT_ATTRIBUTES__ReduceAction255(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction255;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction542_parser___ReduceAction542___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction542();
-  parser___ReduceAction542___init(self, init_table);
-  CHECKNEW_ReduceAction542(self, "parser::ReduceAction542::init for ReduceAction542");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction543[48] = {
-  {(bigint) 1207 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction543 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction543 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1207 /* 3: ReduceAction543 < ReduceAction543: superclass typecheck marker */},
+val_t NEW_ReduceAction255(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction255;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction255(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction255;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction255____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction255_parser___ReduceAction255___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8560;
+  fra.me.meth = LOCATE_NEW_ReduceAction255_parser___ReduceAction255___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8560 */
+  fra.me.REG[0] = NEW_ReduceAction255();
+  INIT_ATTRIBUTES__ReduceAction255(fra.me.REG[0]);
+  parser___ReduceAction255___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction255(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction256[51] = {
+  {(bigint) 1171 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction256 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction256 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1171 /* 4: ReduceAction256 < ReduceAction256: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85751,14 +102697,9 @@ const classtable_elt_t VFT_ReduceAction543[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction543 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction256 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85766,7 +102707,6 @@ const classtable_elt_t VFT_ReduceAction543[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85774,41 +102714,93 @@ const classtable_elt_t VFT_ReduceAction543[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction543 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction543___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction256 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction256___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction543 < ReduceAction543: superclass init_table position */},
-  {(bigint) parser___ReduceAction543___init},
+  {(bigint) 2 /* 49: ReduceAction256 < ReduceAction256: superclass init_table position */},
+  {(bigint) parser___ReduceAction256___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction543(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction543;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction256::_goto */
+void INIT_ATTRIBUTES__ReduceAction256(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction256;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction543(val_t self, char *from) {
-}
-val_t NEW_ReduceAction543_parser___ReduceAction543___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction543();
-  parser___ReduceAction543___init(self, init_table);
-  CHECKNEW_ReduceAction543(self, "parser::ReduceAction543::init for ReduceAction543");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction544[48] = {
-  {(bigint) 1203 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction544 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction544 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1203 /* 3: ReduceAction544 < ReduceAction544: superclass typecheck marker */},
+val_t NEW_ReduceAction256(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction256;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction256(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction256;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction256____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction256_parser___ReduceAction256___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8591;
+  fra.me.meth = LOCATE_NEW_ReduceAction256_parser___ReduceAction256___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8591 */
+  fra.me.REG[0] = NEW_ReduceAction256();
+  INIT_ATTRIBUTES__ReduceAction256(fra.me.REG[0]);
+  parser___ReduceAction256___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction256(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction257[51] = {
+  {(bigint) 1167 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction257 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction257 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1167 /* 4: ReduceAction257 < ReduceAction257: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85821,14 +102813,9 @@ const classtable_elt_t VFT_ReduceAction544[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction544 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction257 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85836,7 +102823,6 @@ const classtable_elt_t VFT_ReduceAction544[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85844,41 +102830,93 @@ const classtable_elt_t VFT_ReduceAction544[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction544 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction544___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction257 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction257___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction544 < ReduceAction544: superclass init_table position */},
-  {(bigint) parser___ReduceAction544___init},
+  {(bigint) 2 /* 49: ReduceAction257 < ReduceAction257: superclass init_table position */},
+  {(bigint) parser___ReduceAction257___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction544(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction544;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction544(val_t self, char *from) {
-}
-val_t NEW_ReduceAction544_parser___ReduceAction544___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction544();
-  parser___ReduceAction544___init(self, init_table);
-  CHECKNEW_ReduceAction544(self, "parser::ReduceAction544::init for ReduceAction544");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction257::_goto */
+void INIT_ATTRIBUTES__ReduceAction257(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction257;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction545[48] = {
-  {(bigint) 1199 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction545 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction545 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1199 /* 3: ReduceAction545 < ReduceAction545: superclass typecheck marker */},
+val_t NEW_ReduceAction257(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction257;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction257(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction257;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction257____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction257_parser___ReduceAction257___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8625;
+  fra.me.meth = LOCATE_NEW_ReduceAction257_parser___ReduceAction257___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8625 */
+  fra.me.REG[0] = NEW_ReduceAction257();
+  INIT_ATTRIBUTES__ReduceAction257(fra.me.REG[0]);
+  parser___ReduceAction257___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction257(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction258[51] = {
+  {(bigint) 1163 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction258 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction258 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1163 /* 4: ReduceAction258 < ReduceAction258: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85891,14 +102929,9 @@ const classtable_elt_t VFT_ReduceAction545[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction545 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction258 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85906,7 +102939,6 @@ const classtable_elt_t VFT_ReduceAction545[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85914,41 +102946,93 @@ const classtable_elt_t VFT_ReduceAction545[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction545 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction545___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction258 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction258___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction545 < ReduceAction545: superclass init_table position */},
-  {(bigint) parser___ReduceAction545___init},
+  {(bigint) 2 /* 49: ReduceAction258 < ReduceAction258: superclass init_table position */},
+  {(bigint) parser___ReduceAction258___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction545(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction545;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction545(val_t self, char *from) {
-}
-val_t NEW_ReduceAction545_parser___ReduceAction545___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction545();
-  parser___ReduceAction545___init(self, init_table);
-  CHECKNEW_ReduceAction545(self, "parser::ReduceAction545::init for ReduceAction545");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction258::_goto */
+void INIT_ATTRIBUTES__ReduceAction258(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction258;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction546[48] = {
-  {(bigint) 1195 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction546 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction546 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1195 /* 3: ReduceAction546 < ReduceAction546: superclass typecheck marker */},
+val_t NEW_ReduceAction258(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction258;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction258(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction258;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction258____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction258_parser___ReduceAction258___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8656;
+  fra.me.meth = LOCATE_NEW_ReduceAction258_parser___ReduceAction258___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8656 */
+  fra.me.REG[0] = NEW_ReduceAction258();
+  INIT_ATTRIBUTES__ReduceAction258(fra.me.REG[0]);
+  parser___ReduceAction258___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction258(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction259[51] = {
+  {(bigint) 1159 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction259 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction259 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1159 /* 4: ReduceAction259 < ReduceAction259: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85961,14 +103045,9 @@ const classtable_elt_t VFT_ReduceAction546[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction546 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction259 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -85976,7 +103055,6 @@ const classtable_elt_t VFT_ReduceAction546[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -85984,41 +103062,93 @@ const classtable_elt_t VFT_ReduceAction546[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction546 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction546___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction259 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction259___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction546 < ReduceAction546: superclass init_table position */},
-  {(bigint) parser___ReduceAction546___init},
+  {(bigint) 2 /* 49: ReduceAction259 < ReduceAction259: superclass init_table position */},
+  {(bigint) parser___ReduceAction259___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction546(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction546;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction546(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction259::_goto */
+void INIT_ATTRIBUTES__ReduceAction259(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction259;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction546_parser___ReduceAction546___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction546();
-  parser___ReduceAction546___init(self, init_table);
-  CHECKNEW_ReduceAction546(self, "parser::ReduceAction546::init for ReduceAction546");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction547[48] = {
-  {(bigint) 1191 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction547 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction547 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1191 /* 3: ReduceAction547 < ReduceAction547: superclass typecheck marker */},
+val_t NEW_ReduceAction259(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction259;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction259(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction259;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction259____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction259_parser___ReduceAction259___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8684;
+  fra.me.meth = LOCATE_NEW_ReduceAction259_parser___ReduceAction259___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8684 */
+  fra.me.REG[0] = NEW_ReduceAction259();
+  INIT_ATTRIBUTES__ReduceAction259(fra.me.REG[0]);
+  parser___ReduceAction259___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction259(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction260[51] = {
+  {(bigint) 1151 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction260 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction260 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1151 /* 4: ReduceAction260 < ReduceAction260: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86031,14 +103161,9 @@ const classtable_elt_t VFT_ReduceAction547[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction547 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction260 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86046,7 +103171,6 @@ const classtable_elt_t VFT_ReduceAction547[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86054,41 +103178,93 @@ const classtable_elt_t VFT_ReduceAction547[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction547 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction547___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction260 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction260___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction547 < ReduceAction547: superclass init_table position */},
-  {(bigint) parser___ReduceAction547___init},
+  {(bigint) 2 /* 49: ReduceAction260 < ReduceAction260: superclass init_table position */},
+  {(bigint) parser___ReduceAction260___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction547(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction547;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction260::_goto */
+void INIT_ATTRIBUTES__ReduceAction260(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction260;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction547(val_t self, char *from) {
-}
-val_t NEW_ReduceAction547_parser___ReduceAction547___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction547();
-  parser___ReduceAction547___init(self, init_table);
-  CHECKNEW_ReduceAction547(self, "parser::ReduceAction547::init for ReduceAction547");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction548[48] = {
-  {(bigint) 1187 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction548 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction548 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1187 /* 3: ReduceAction548 < ReduceAction548: superclass typecheck marker */},
+val_t NEW_ReduceAction260(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction260;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction260(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction260;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction260____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction260_parser___ReduceAction260___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8721;
+  fra.me.meth = LOCATE_NEW_ReduceAction260_parser___ReduceAction260___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8721 */
+  fra.me.REG[0] = NEW_ReduceAction260();
+  INIT_ATTRIBUTES__ReduceAction260(fra.me.REG[0]);
+  parser___ReduceAction260___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction260(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction261[51] = {
+  {(bigint) 1147 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction261 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction261 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1147 /* 4: ReduceAction261 < ReduceAction261: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86101,14 +103277,9 @@ const classtable_elt_t VFT_ReduceAction548[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction548 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction261 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86116,7 +103287,6 @@ const classtable_elt_t VFT_ReduceAction548[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86124,41 +103294,93 @@ const classtable_elt_t VFT_ReduceAction548[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction548 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction548___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction261 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction261___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction548 < ReduceAction548: superclass init_table position */},
-  {(bigint) parser___ReduceAction548___init},
+  {(bigint) 2 /* 49: ReduceAction261 < ReduceAction261: superclass init_table position */},
+  {(bigint) parser___ReduceAction261___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction548(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction548;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction548(val_t self, char *from) {
-}
-val_t NEW_ReduceAction548_parser___ReduceAction548___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction548();
-  parser___ReduceAction548___init(self, init_table);
-  CHECKNEW_ReduceAction548(self, "parser::ReduceAction548::init for ReduceAction548");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction261::_goto */
+void INIT_ATTRIBUTES__ReduceAction261(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction261;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction549[48] = {
-  {(bigint) 1183 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction549 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction549 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1183 /* 3: ReduceAction549 < ReduceAction549: superclass typecheck marker */},
+val_t NEW_ReduceAction261(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction261;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction261(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction261;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction261____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction261_parser___ReduceAction261___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8755;
+  fra.me.meth = LOCATE_NEW_ReduceAction261_parser___ReduceAction261___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8755 */
+  fra.me.REG[0] = NEW_ReduceAction261();
+  INIT_ATTRIBUTES__ReduceAction261(fra.me.REG[0]);
+  parser___ReduceAction261___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction261(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction262[51] = {
+  {(bigint) 1143 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction262 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction262 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1143 /* 4: ReduceAction262 < ReduceAction262: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86171,14 +103393,9 @@ const classtable_elt_t VFT_ReduceAction549[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction549 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction262 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86186,7 +103403,6 @@ const classtable_elt_t VFT_ReduceAction549[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86194,41 +103410,93 @@ const classtable_elt_t VFT_ReduceAction549[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction549 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction549___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction262 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction262___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction549 < ReduceAction549: superclass init_table position */},
-  {(bigint) parser___ReduceAction549___init},
+  {(bigint) 2 /* 49: ReduceAction262 < ReduceAction262: superclass init_table position */},
+  {(bigint) parser___ReduceAction262___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction549(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction549;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction549(val_t self, char *from) {
-}
-val_t NEW_ReduceAction549_parser___ReduceAction549___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction549();
-  parser___ReduceAction549___init(self, init_table);
-  CHECKNEW_ReduceAction549(self, "parser::ReduceAction549::init for ReduceAction549");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction262::_goto */
+void INIT_ATTRIBUTES__ReduceAction262(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction262;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction550[48] = {
-  {(bigint) 1175 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction550 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction550 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1175 /* 3: ReduceAction550 < ReduceAction550: superclass typecheck marker */},
+val_t NEW_ReduceAction262(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction262;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction262(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction262;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction262____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction262_parser___ReduceAction262___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8786;
+  fra.me.meth = LOCATE_NEW_ReduceAction262_parser___ReduceAction262___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8786 */
+  fra.me.REG[0] = NEW_ReduceAction262();
+  INIT_ATTRIBUTES__ReduceAction262(fra.me.REG[0]);
+  parser___ReduceAction262___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction262(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction263[51] = {
+  {(bigint) 1139 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction263 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction263 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1139 /* 4: ReduceAction263 < ReduceAction263: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86241,14 +103509,9 @@ const classtable_elt_t VFT_ReduceAction550[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction550 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction263 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86256,7 +103519,6 @@ const classtable_elt_t VFT_ReduceAction550[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86264,41 +103526,93 @@ const classtable_elt_t VFT_ReduceAction550[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction550 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction550___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction263 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction263___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction550 < ReduceAction550: superclass init_table position */},
-  {(bigint) parser___ReduceAction550___init},
+  {(bigint) 2 /* 49: ReduceAction263 < ReduceAction263: superclass init_table position */},
+  {(bigint) parser___ReduceAction263___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction550(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction550;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction550(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction263::_goto */
+void INIT_ATTRIBUTES__ReduceAction263(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction263;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction550_parser___ReduceAction550___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction550();
-  parser___ReduceAction550___init(self, init_table);
-  CHECKNEW_ReduceAction550(self, "parser::ReduceAction550::init for ReduceAction550");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction551[48] = {
-  {(bigint) 1171 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction551 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction551 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1171 /* 3: ReduceAction551 < ReduceAction551: superclass typecheck marker */},
+val_t NEW_ReduceAction263(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction263;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction263(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction263;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction263____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction263_parser___ReduceAction263___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8817;
+  fra.me.meth = LOCATE_NEW_ReduceAction263_parser___ReduceAction263___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8817 */
+  fra.me.REG[0] = NEW_ReduceAction263();
+  INIT_ATTRIBUTES__ReduceAction263(fra.me.REG[0]);
+  parser___ReduceAction263___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction263(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction264[51] = {
+  {(bigint) 1135 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction264 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction264 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1135 /* 4: ReduceAction264 < ReduceAction264: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86311,14 +103625,9 @@ const classtable_elt_t VFT_ReduceAction551[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction551 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction264 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86326,7 +103635,6 @@ const classtable_elt_t VFT_ReduceAction551[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86334,41 +103642,93 @@ const classtable_elt_t VFT_ReduceAction551[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction551 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction551___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction264 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction264___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction551 < ReduceAction551: superclass init_table position */},
-  {(bigint) parser___ReduceAction551___init},
+  {(bigint) 2 /* 49: ReduceAction264 < ReduceAction264: superclass init_table position */},
+  {(bigint) parser___ReduceAction264___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction551(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction551;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction264::_goto */
+void INIT_ATTRIBUTES__ReduceAction264(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction264;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction551(val_t self, char *from) {
-}
-val_t NEW_ReduceAction551_parser___ReduceAction551___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction551();
-  parser___ReduceAction551___init(self, init_table);
-  CHECKNEW_ReduceAction551(self, "parser::ReduceAction551::init for ReduceAction551");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction552[48] = {
-  {(bigint) 1167 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction552 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction552 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1167 /* 3: ReduceAction552 < ReduceAction552: superclass typecheck marker */},
+val_t NEW_ReduceAction264(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction264;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction264(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction264;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction264____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction264_parser___ReduceAction264___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8845;
+  fra.me.meth = LOCATE_NEW_ReduceAction264_parser___ReduceAction264___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8845 */
+  fra.me.REG[0] = NEW_ReduceAction264();
+  INIT_ATTRIBUTES__ReduceAction264(fra.me.REG[0]);
+  parser___ReduceAction264___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction264(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction265[51] = {
+  {(bigint) 1131 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction265 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction265 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1131 /* 4: ReduceAction265 < ReduceAction265: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86381,14 +103741,9 @@ const classtable_elt_t VFT_ReduceAction552[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction552 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction265 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86396,7 +103751,6 @@ const classtable_elt_t VFT_ReduceAction552[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86404,41 +103758,93 @@ const classtable_elt_t VFT_ReduceAction552[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction552 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction552___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction265 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction265___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction552 < ReduceAction552: superclass init_table position */},
-  {(bigint) parser___ReduceAction552___init},
+  {(bigint) 2 /* 49: ReduceAction265 < ReduceAction265: superclass init_table position */},
+  {(bigint) parser___ReduceAction265___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction552(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction552;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction552(val_t self, char *from) {
-}
-val_t NEW_ReduceAction552_parser___ReduceAction552___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction552();
-  parser___ReduceAction552___init(self, init_table);
-  CHECKNEW_ReduceAction552(self, "parser::ReduceAction552::init for ReduceAction552");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction265::_goto */
+void INIT_ATTRIBUTES__ReduceAction265(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction265;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction553[48] = {
-  {(bigint) 1163 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction553 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction553 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1163 /* 3: ReduceAction553 < ReduceAction553: superclass typecheck marker */},
+val_t NEW_ReduceAction265(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction265;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction265(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction265;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction265____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction265_parser___ReduceAction265___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8882;
+  fra.me.meth = LOCATE_NEW_ReduceAction265_parser___ReduceAction265___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8882 */
+  fra.me.REG[0] = NEW_ReduceAction265();
+  INIT_ATTRIBUTES__ReduceAction265(fra.me.REG[0]);
+  parser___ReduceAction265___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction265(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction266[51] = {
+  {(bigint) 1127 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction266 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction266 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1127 /* 4: ReduceAction266 < ReduceAction266: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86451,14 +103857,9 @@ const classtable_elt_t VFT_ReduceAction553[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction553 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction266 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86466,7 +103867,6 @@ const classtable_elt_t VFT_ReduceAction553[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86474,41 +103874,93 @@ const classtable_elt_t VFT_ReduceAction553[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction553 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction553___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction266 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction266___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction553 < ReduceAction553: superclass init_table position */},
-  {(bigint) parser___ReduceAction553___init},
+  {(bigint) 2 /* 49: ReduceAction266 < ReduceAction266: superclass init_table position */},
+  {(bigint) parser___ReduceAction266___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction553(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction553;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction553(val_t self, char *from) {
-}
-val_t NEW_ReduceAction553_parser___ReduceAction553___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction553();
-  parser___ReduceAction553___init(self, init_table);
-  CHECKNEW_ReduceAction553(self, "parser::ReduceAction553::init for ReduceAction553");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction266::_goto */
+void INIT_ATTRIBUTES__ReduceAction266(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction266;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction554[48] = {
-  {(bigint) 1159 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction554 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction554 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1159 /* 3: ReduceAction554 < ReduceAction554: superclass typecheck marker */},
+val_t NEW_ReduceAction266(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction266;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction266(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction266;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction266____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction266_parser___ReduceAction266___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8916;
+  fra.me.meth = LOCATE_NEW_ReduceAction266_parser___ReduceAction266___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8916 */
+  fra.me.REG[0] = NEW_ReduceAction266();
+  INIT_ATTRIBUTES__ReduceAction266(fra.me.REG[0]);
+  parser___ReduceAction266___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction266(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction267[51] = {
+  {(bigint) 1123 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction267 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction267 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1123 /* 4: ReduceAction267 < ReduceAction267: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86521,14 +103973,9 @@ const classtable_elt_t VFT_ReduceAction554[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction554 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction267 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86536,7 +103983,6 @@ const classtable_elt_t VFT_ReduceAction554[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86544,42 +103990,93 @@ const classtable_elt_t VFT_ReduceAction554[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction554 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction554___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction267 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction267___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction554 < ReduceAction554: superclass init_table position */},
-  {(bigint) parser___ReduceAction554___init},
+  {(bigint) 2 /* 49: ReduceAction267 < ReduceAction267: superclass init_table position */},
+  {(bigint) parser___ReduceAction267___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction554(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction554;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction554(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction267::_goto */
+void INIT_ATTRIBUTES__ReduceAction267(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction267;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction554_parser___ReduceAction554___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction554();
-  parser___ReduceAction554___init(self, init_table);
-  CHECKNEW_ReduceAction554(self, "parser::ReduceAction554::init for ReduceAction554");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction555[48] = {
-  {(bigint) 1155 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction555 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction555 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1155 /* 3: ReduceAction555 < ReduceAction555: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ReduceAction267(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction267;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction267(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction267;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction267____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction267_parser___ReduceAction267___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8947;
+  fra.me.meth = LOCATE_NEW_ReduceAction267_parser___ReduceAction267___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8947 */
+  fra.me.REG[0] = NEW_ReduceAction267();
+  INIT_ATTRIBUTES__ReduceAction267(fra.me.REG[0]);
+  parser___ReduceAction267___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction267(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction268[51] = {
+  {(bigint) 1119 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction268 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction268 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1119 /* 4: ReduceAction268 < ReduceAction268: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86591,14 +104088,10 @@ const classtable_elt_t VFT_ReduceAction555[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction555 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction268 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86606,7 +104099,6 @@ const classtable_elt_t VFT_ReduceAction555[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86614,41 +104106,93 @@ const classtable_elt_t VFT_ReduceAction555[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction555 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction555___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction268 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction268___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction555 < ReduceAction555: superclass init_table position */},
-  {(bigint) parser___ReduceAction555___init},
+  {(bigint) 2 /* 49: ReduceAction268 < ReduceAction268: superclass init_table position */},
+  {(bigint) parser___ReduceAction268___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction555(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction555;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction555(val_t self, char *from) {
-}
-val_t NEW_ReduceAction555_parser___ReduceAction555___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction555();
-  parser___ReduceAction555___init(self, init_table);
-  CHECKNEW_ReduceAction555(self, "parser::ReduceAction555::init for ReduceAction555");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction268::_goto */
+void INIT_ATTRIBUTES__ReduceAction268(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction268;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction556[48] = {
-  {(bigint) 1151 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction556 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction556 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1151 /* 3: ReduceAction556 < ReduceAction556: superclass typecheck marker */},
+val_t NEW_ReduceAction268(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction268;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction268(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction268;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction268____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction268_parser___ReduceAction268___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8964;
+  fra.me.meth = LOCATE_NEW_ReduceAction268_parser___ReduceAction268___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8964 */
+  fra.me.REG[0] = NEW_ReduceAction268();
+  INIT_ATTRIBUTES__ReduceAction268(fra.me.REG[0]);
+  parser___ReduceAction268___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction268(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction269[51] = {
+  {(bigint) 1115 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction269 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction269 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1115 /* 4: ReduceAction269 < ReduceAction269: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86661,14 +104205,9 @@ const classtable_elt_t VFT_ReduceAction556[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction556 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction269 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86676,7 +104215,6 @@ const classtable_elt_t VFT_ReduceAction556[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86684,41 +104222,93 @@ const classtable_elt_t VFT_ReduceAction556[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction556 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction556___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction269 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction269___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction556 < ReduceAction556: superclass init_table position */},
-  {(bigint) parser___ReduceAction556___init},
+  {(bigint) 2 /* 49: ReduceAction269 < ReduceAction269: superclass init_table position */},
+  {(bigint) parser___ReduceAction269___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction556(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction556;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction556(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction269::_goto */
+void INIT_ATTRIBUTES__ReduceAction269(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction269;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction556_parser___ReduceAction556___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction556();
-  parser___ReduceAction556___init(self, init_table);
-  CHECKNEW_ReduceAction556(self, "parser::ReduceAction556::init for ReduceAction556");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction557[48] = {
-  {(bigint) 1147 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction557 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction557 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1147 /* 3: ReduceAction557 < ReduceAction557: superclass typecheck marker */},
+val_t NEW_ReduceAction269(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction269;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction269(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction269;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction269____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction269_parser___ReduceAction269___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 8981;
+  fra.me.meth = LOCATE_NEW_ReduceAction269_parser___ReduceAction269___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:8981 */
+  fra.me.REG[0] = NEW_ReduceAction269();
+  INIT_ATTRIBUTES__ReduceAction269(fra.me.REG[0]);
+  parser___ReduceAction269___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction269(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction270[51] = {
+  {(bigint) 1107 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction270 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction270 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1107 /* 4: ReduceAction270 < ReduceAction270: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86731,14 +104321,9 @@ const classtable_elt_t VFT_ReduceAction557[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction557 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction270 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86746,7 +104331,6 @@ const classtable_elt_t VFT_ReduceAction557[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86754,41 +104338,93 @@ const classtable_elt_t VFT_ReduceAction557[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction557 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction557___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction270 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction270___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction557 < ReduceAction557: superclass init_table position */},
-  {(bigint) parser___ReduceAction557___init},
+  {(bigint) 2 /* 49: ReduceAction270 < ReduceAction270: superclass init_table position */},
+  {(bigint) parser___ReduceAction270___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction557(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction557;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction270::_goto */
+void INIT_ATTRIBUTES__ReduceAction270(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction270;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction557(val_t self, char *from) {
-}
-val_t NEW_ReduceAction557_parser___ReduceAction557___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction557();
-  parser___ReduceAction557___init(self, init_table);
-  CHECKNEW_ReduceAction557(self, "parser::ReduceAction557::init for ReduceAction557");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction558[48] = {
-  {(bigint) 1143 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction558 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction558 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1143 /* 3: ReduceAction558 < ReduceAction558: superclass typecheck marker */},
+val_t NEW_ReduceAction270(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction270;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction270(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction270;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction270____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction270_parser___ReduceAction270___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9006;
+  fra.me.meth = LOCATE_NEW_ReduceAction270_parser___ReduceAction270___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9006 */
+  fra.me.REG[0] = NEW_ReduceAction270();
+  INIT_ATTRIBUTES__ReduceAction270(fra.me.REG[0]);
+  parser___ReduceAction270___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction270(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction271[51] = {
+  {(bigint) 1103 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction271 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction271 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1103 /* 4: ReduceAction271 < ReduceAction271: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86801,14 +104437,9 @@ const classtable_elt_t VFT_ReduceAction558[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction558 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction271 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86816,7 +104447,6 @@ const classtable_elt_t VFT_ReduceAction558[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86824,41 +104454,93 @@ const classtable_elt_t VFT_ReduceAction558[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction558 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction558___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction271 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction271___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction558 < ReduceAction558: superclass init_table position */},
-  {(bigint) parser___ReduceAction558___init},
+  {(bigint) 2 /* 49: ReduceAction271 < ReduceAction271: superclass init_table position */},
+  {(bigint) parser___ReduceAction271___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction558(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction558;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction558(val_t self, char *from) {
-}
-val_t NEW_ReduceAction558_parser___ReduceAction558___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction558();
-  parser___ReduceAction558___init(self, init_table);
-  CHECKNEW_ReduceAction558(self, "parser::ReduceAction558::init for ReduceAction558");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction271::_goto */
+void INIT_ATTRIBUTES__ReduceAction271(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction271;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction559[48] = {
-  {(bigint) 1139 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction559 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction559 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1139 /* 3: ReduceAction559 < ReduceAction559: superclass typecheck marker */},
+val_t NEW_ReduceAction271(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction271;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction271(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction271;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction271____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction271_parser___ReduceAction271___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9028;
+  fra.me.meth = LOCATE_NEW_ReduceAction271_parser___ReduceAction271___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9028 */
+  fra.me.REG[0] = NEW_ReduceAction271();
+  INIT_ATTRIBUTES__ReduceAction271(fra.me.REG[0]);
+  parser___ReduceAction271___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction271(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction272[51] = {
+  {(bigint) 1099 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction272 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction272 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1099 /* 4: ReduceAction272 < ReduceAction272: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86871,14 +104553,9 @@ const classtable_elt_t VFT_ReduceAction559[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction559 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction272 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86886,7 +104563,6 @@ const classtable_elt_t VFT_ReduceAction559[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86894,41 +104570,93 @@ const classtable_elt_t VFT_ReduceAction559[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction559 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction559___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction272 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction272___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction559 < ReduceAction559: superclass init_table position */},
-  {(bigint) parser___ReduceAction559___init},
+  {(bigint) 2 /* 49: ReduceAction272 < ReduceAction272: superclass init_table position */},
+  {(bigint) parser___ReduceAction272___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction559(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction559;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction559(val_t self, char *from) {
-}
-val_t NEW_ReduceAction559_parser___ReduceAction559___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction559();
-  parser___ReduceAction559___init(self, init_table);
-  CHECKNEW_ReduceAction559(self, "parser::ReduceAction559::init for ReduceAction559");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction272::_goto */
+void INIT_ATTRIBUTES__ReduceAction272(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction272;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction560[48] = {
-  {(bigint) 1131 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction560 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction560 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1131 /* 3: ReduceAction560 < ReduceAction560: superclass typecheck marker */},
+val_t NEW_ReduceAction272(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction272;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction272(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction272;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction272____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction272_parser___ReduceAction272___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9061;
+  fra.me.meth = LOCATE_NEW_ReduceAction272_parser___ReduceAction272___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9061 */
+  fra.me.REG[0] = NEW_ReduceAction272();
+  INIT_ATTRIBUTES__ReduceAction272(fra.me.REG[0]);
+  parser___ReduceAction272___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction272(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction273[51] = {
+  {(bigint) 1095 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction273 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction273 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1095 /* 4: ReduceAction273 < ReduceAction273: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86941,14 +104669,9 @@ const classtable_elt_t VFT_ReduceAction560[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction560 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction273 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -86956,7 +104679,6 @@ const classtable_elt_t VFT_ReduceAction560[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -86964,41 +104686,93 @@ const classtable_elt_t VFT_ReduceAction560[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction560 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction560___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction273 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction273___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction560 < ReduceAction560: superclass init_table position */},
-  {(bigint) parser___ReduceAction560___init},
+  {(bigint) 2 /* 49: ReduceAction273 < ReduceAction273: superclass init_table position */},
+  {(bigint) parser___ReduceAction273___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction560(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction560;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction560(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction273::_goto */
+void INIT_ATTRIBUTES__ReduceAction273(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction273;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction560_parser___ReduceAction560___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction560();
-  parser___ReduceAction560___init(self, init_table);
-  CHECKNEW_ReduceAction560(self, "parser::ReduceAction560::init for ReduceAction560");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction561[48] = {
-  {(bigint) 1127 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction561 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction561 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1127 /* 3: ReduceAction561 < ReduceAction561: superclass typecheck marker */},
+val_t NEW_ReduceAction273(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction273;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction273(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction273;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction273____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction273_parser___ReduceAction273___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9090;
+  fra.me.meth = LOCATE_NEW_ReduceAction273_parser___ReduceAction273___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9090 */
+  fra.me.REG[0] = NEW_ReduceAction273();
+  INIT_ATTRIBUTES__ReduceAction273(fra.me.REG[0]);
+  parser___ReduceAction273___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction273(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction274[51] = {
+  {(bigint) 1091 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction274 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction274 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1091 /* 4: ReduceAction274 < ReduceAction274: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87011,14 +104785,9 @@ const classtable_elt_t VFT_ReduceAction561[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction561 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction274 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87026,7 +104795,6 @@ const classtable_elt_t VFT_ReduceAction561[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87034,41 +104802,93 @@ const classtable_elt_t VFT_ReduceAction561[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction561 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction561___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction274 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction274___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction561 < ReduceAction561: superclass init_table position */},
-  {(bigint) parser___ReduceAction561___init},
+  {(bigint) 2 /* 49: ReduceAction274 < ReduceAction274: superclass init_table position */},
+  {(bigint) parser___ReduceAction274___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction561(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction561;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction274::_goto */
+void INIT_ATTRIBUTES__ReduceAction274(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction274;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction561(val_t self, char *from) {
-}
-val_t NEW_ReduceAction561_parser___ReduceAction561___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction561();
-  parser___ReduceAction561___init(self, init_table);
-  CHECKNEW_ReduceAction561(self, "parser::ReduceAction561::init for ReduceAction561");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction562[48] = {
-  {(bigint) 1123 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction562 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction562 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1123 /* 3: ReduceAction562 < ReduceAction562: superclass typecheck marker */},
+val_t NEW_ReduceAction274(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction274;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction274(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction274;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction274____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction274_parser___ReduceAction274___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9123;
+  fra.me.meth = LOCATE_NEW_ReduceAction274_parser___ReduceAction274___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9123 */
+  fra.me.REG[0] = NEW_ReduceAction274();
+  INIT_ATTRIBUTES__ReduceAction274(fra.me.REG[0]);
+  parser___ReduceAction274___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction274(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction275[51] = {
+  {(bigint) 1087 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction275 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction275 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1087 /* 4: ReduceAction275 < ReduceAction275: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87081,14 +104901,9 @@ const classtable_elt_t VFT_ReduceAction562[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction562 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction275 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87096,7 +104911,6 @@ const classtable_elt_t VFT_ReduceAction562[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87104,41 +104918,93 @@ const classtable_elt_t VFT_ReduceAction562[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction562 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction562___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction275 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction275___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction562 < ReduceAction562: superclass init_table position */},
-  {(bigint) parser___ReduceAction562___init},
+  {(bigint) 2 /* 49: ReduceAction275 < ReduceAction275: superclass init_table position */},
+  {(bigint) parser___ReduceAction275___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction562(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction562;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction562(val_t self, char *from) {
-}
-val_t NEW_ReduceAction562_parser___ReduceAction562___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction562();
-  parser___ReduceAction562___init(self, init_table);
-  CHECKNEW_ReduceAction562(self, "parser::ReduceAction562::init for ReduceAction562");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction275::_goto */
+void INIT_ATTRIBUTES__ReduceAction275(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction275;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction563[48] = {
-  {(bigint) 1119 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction563 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction563 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1119 /* 3: ReduceAction563 < ReduceAction563: superclass typecheck marker */},
+val_t NEW_ReduceAction275(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction275;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction275(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction275;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction275____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction275_parser___ReduceAction275___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9152;
+  fra.me.meth = LOCATE_NEW_ReduceAction275_parser___ReduceAction275___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9152 */
+  fra.me.REG[0] = NEW_ReduceAction275();
+  INIT_ATTRIBUTES__ReduceAction275(fra.me.REG[0]);
+  parser___ReduceAction275___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction275(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction276[51] = {
+  {(bigint) 1083 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction276 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction276 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1083 /* 4: ReduceAction276 < ReduceAction276: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87151,14 +105017,9 @@ const classtable_elt_t VFT_ReduceAction563[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction563 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction276 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87166,7 +105027,6 @@ const classtable_elt_t VFT_ReduceAction563[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87174,41 +105034,93 @@ const classtable_elt_t VFT_ReduceAction563[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction563 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction563___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction276 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction276___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction563 < ReduceAction563: superclass init_table position */},
-  {(bigint) parser___ReduceAction563___init},
+  {(bigint) 2 /* 49: ReduceAction276 < ReduceAction276: superclass init_table position */},
+  {(bigint) parser___ReduceAction276___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction563(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction563;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction563(val_t self, char *from) {
-}
-val_t NEW_ReduceAction563_parser___ReduceAction563___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction563();
-  parser___ReduceAction563___init(self, init_table);
-  CHECKNEW_ReduceAction563(self, "parser::ReduceAction563::init for ReduceAction563");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction276::_goto */
+void INIT_ATTRIBUTES__ReduceAction276(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction276;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction564[48] = {
-  {(bigint) 1115 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction564 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction564 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1115 /* 3: ReduceAction564 < ReduceAction564: superclass typecheck marker */},
+val_t NEW_ReduceAction276(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction276;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction276(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction276;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction276____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction276_parser___ReduceAction276___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9182;
+  fra.me.meth = LOCATE_NEW_ReduceAction276_parser___ReduceAction276___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9182 */
+  fra.me.REG[0] = NEW_ReduceAction276();
+  INIT_ATTRIBUTES__ReduceAction276(fra.me.REG[0]);
+  parser___ReduceAction276___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction276(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction279[51] = {
+  {(bigint) 1079 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction279 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction279 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1079 /* 4: ReduceAction279 < ReduceAction279: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87221,14 +105133,9 @@ const classtable_elt_t VFT_ReduceAction564[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction564 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction279 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87236,7 +105143,6 @@ const classtable_elt_t VFT_ReduceAction564[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87244,41 +105150,93 @@ const classtable_elt_t VFT_ReduceAction564[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction564 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction564___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction279 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction279___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction564 < ReduceAction564: superclass init_table position */},
-  {(bigint) parser___ReduceAction564___init},
+  {(bigint) 2 /* 49: ReduceAction279 < ReduceAction279: superclass init_table position */},
+  {(bigint) parser___ReduceAction279___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction564(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction564;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction564(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction279::_goto */
+void INIT_ATTRIBUTES__ReduceAction279(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction279;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction564_parser___ReduceAction564___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction564();
-  parser___ReduceAction564___init(self, init_table);
-  CHECKNEW_ReduceAction564(self, "parser::ReduceAction564::init for ReduceAction564");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction565[48] = {
-  {(bigint) 1111 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction565 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction565 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1111 /* 3: ReduceAction565 < ReduceAction565: superclass typecheck marker */},
+val_t NEW_ReduceAction279(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction279;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction279(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction279;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction279____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction279_parser___ReduceAction279___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9207;
+  fra.me.meth = LOCATE_NEW_ReduceAction279_parser___ReduceAction279___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9207 */
+  fra.me.REG[0] = NEW_ReduceAction279();
+  INIT_ATTRIBUTES__ReduceAction279(fra.me.REG[0]);
+  parser___ReduceAction279___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction279(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction280[51] = {
+  {(bigint) 1071 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction280 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction280 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1071 /* 4: ReduceAction280 < ReduceAction280: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87291,14 +105249,9 @@ const classtable_elt_t VFT_ReduceAction565[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction565 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction280 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87306,7 +105259,6 @@ const classtable_elt_t VFT_ReduceAction565[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87314,41 +105266,93 @@ const classtable_elt_t VFT_ReduceAction565[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction565 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction565___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction280 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction280___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction565 < ReduceAction565: superclass init_table position */},
-  {(bigint) parser___ReduceAction565___init},
+  {(bigint) 2 /* 49: ReduceAction280 < ReduceAction280: superclass init_table position */},
+  {(bigint) parser___ReduceAction280___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction565(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction565;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction280::_goto */
+void INIT_ATTRIBUTES__ReduceAction280(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction280;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction565(val_t self, char *from) {
-}
-val_t NEW_ReduceAction565_parser___ReduceAction565___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction565();
-  parser___ReduceAction565___init(self, init_table);
-  CHECKNEW_ReduceAction565(self, "parser::ReduceAction565::init for ReduceAction565");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction566[48] = {
-  {(bigint) 1107 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction566 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction566 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1107 /* 3: ReduceAction566 < ReduceAction566: superclass typecheck marker */},
+val_t NEW_ReduceAction280(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction280;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction280(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction280;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction280____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction280_parser___ReduceAction280___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9229;
+  fra.me.meth = LOCATE_NEW_ReduceAction280_parser___ReduceAction280___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9229 */
+  fra.me.REG[0] = NEW_ReduceAction280();
+  INIT_ATTRIBUTES__ReduceAction280(fra.me.REG[0]);
+  parser___ReduceAction280___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction280(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction281[51] = {
+  {(bigint) 1067 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction281 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction281 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1067 /* 4: ReduceAction281 < ReduceAction281: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87361,14 +105365,9 @@ const classtable_elt_t VFT_ReduceAction566[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction566 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction281 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87376,7 +105375,6 @@ const classtable_elt_t VFT_ReduceAction566[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87384,41 +105382,93 @@ const classtable_elt_t VFT_ReduceAction566[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction566 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction566___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction281 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction281___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction566 < ReduceAction566: superclass init_table position */},
-  {(bigint) parser___ReduceAction566___init},
+  {(bigint) 2 /* 49: ReduceAction281 < ReduceAction281: superclass init_table position */},
+  {(bigint) parser___ReduceAction281___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction566(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction566;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction566(val_t self, char *from) {
-}
-val_t NEW_ReduceAction566_parser___ReduceAction566___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction566();
-  parser___ReduceAction566___init(self, init_table);
-  CHECKNEW_ReduceAction566(self, "parser::ReduceAction566::init for ReduceAction566");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction281::_goto */
+void INIT_ATTRIBUTES__ReduceAction281(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction281;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction567[48] = {
-  {(bigint) 1103 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction567 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction567 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1103 /* 3: ReduceAction567 < ReduceAction567: superclass typecheck marker */},
+val_t NEW_ReduceAction281(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction281;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction281(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction281;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction281____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction281_parser___ReduceAction281___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9264;
+  fra.me.meth = LOCATE_NEW_ReduceAction281_parser___ReduceAction281___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9264 */
+  fra.me.REG[0] = NEW_ReduceAction281();
+  INIT_ATTRIBUTES__ReduceAction281(fra.me.REG[0]);
+  parser___ReduceAction281___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction281(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction282[51] = {
+  {(bigint) 1063 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction282 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction282 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1063 /* 4: ReduceAction282 < ReduceAction282: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87431,14 +105481,9 @@ const classtable_elt_t VFT_ReduceAction567[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction567 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction282 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87446,7 +105491,6 @@ const classtable_elt_t VFT_ReduceAction567[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87454,41 +105498,93 @@ const classtable_elt_t VFT_ReduceAction567[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction567 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction567___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction282 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction282___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction567 < ReduceAction567: superclass init_table position */},
-  {(bigint) parser___ReduceAction567___init},
+  {(bigint) 2 /* 49: ReduceAction282 < ReduceAction282: superclass init_table position */},
+  {(bigint) parser___ReduceAction282___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction567(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction567;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction567(val_t self, char *from) {
-}
-val_t NEW_ReduceAction567_parser___ReduceAction567___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction567();
-  parser___ReduceAction567___init(self, init_table);
-  CHECKNEW_ReduceAction567(self, "parser::ReduceAction567::init for ReduceAction567");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction282::_goto */
+void INIT_ATTRIBUTES__ReduceAction282(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction282;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction568[48] = {
-  {(bigint) 1099 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction568 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction568 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1099 /* 3: ReduceAction568 < ReduceAction568: superclass typecheck marker */},
+val_t NEW_ReduceAction282(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction282;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction282(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction282;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction282____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction282_parser___ReduceAction282___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9296;
+  fra.me.meth = LOCATE_NEW_ReduceAction282_parser___ReduceAction282___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9296 */
+  fra.me.REG[0] = NEW_ReduceAction282();
+  INIT_ATTRIBUTES__ReduceAction282(fra.me.REG[0]);
+  parser___ReduceAction282___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction282(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction283[51] = {
+  {(bigint) 1059 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction283 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction283 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1059 /* 4: ReduceAction283 < ReduceAction283: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87501,14 +105597,9 @@ const classtable_elt_t VFT_ReduceAction568[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction568 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction283 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87516,7 +105607,6 @@ const classtable_elt_t VFT_ReduceAction568[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87524,41 +105614,93 @@ const classtable_elt_t VFT_ReduceAction568[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction568 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction568___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction283 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction283___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction568 < ReduceAction568: superclass init_table position */},
-  {(bigint) parser___ReduceAction568___init},
+  {(bigint) 2 /* 49: ReduceAction283 < ReduceAction283: superclass init_table position */},
+  {(bigint) parser___ReduceAction283___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction568(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction568;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction568(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction283::_goto */
+void INIT_ATTRIBUTES__ReduceAction283(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction283;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction568_parser___ReduceAction568___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction568();
-  parser___ReduceAction568___init(self, init_table);
-  CHECKNEW_ReduceAction568(self, "parser::ReduceAction568::init for ReduceAction568");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction569[48] = {
-  {(bigint) 1095 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction569 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction569 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1095 /* 3: ReduceAction569 < ReduceAction569: superclass typecheck marker */},
+val_t NEW_ReduceAction283(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction283;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction283(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction283;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction283____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction283_parser___ReduceAction283___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9338;
+  fra.me.meth = LOCATE_NEW_ReduceAction283_parser___ReduceAction283___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9338 */
+  fra.me.REG[0] = NEW_ReduceAction283();
+  INIT_ATTRIBUTES__ReduceAction283(fra.me.REG[0]);
+  parser___ReduceAction283___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction283(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction284[51] = {
+  {(bigint) 1055 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction284 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction284 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1055 /* 4: ReduceAction284 < ReduceAction284: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87571,14 +105713,9 @@ const classtable_elt_t VFT_ReduceAction569[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction569 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction284 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87586,7 +105723,6 @@ const classtable_elt_t VFT_ReduceAction569[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87594,41 +105730,93 @@ const classtable_elt_t VFT_ReduceAction569[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction569 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction569___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction284 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction284___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction569 < ReduceAction569: superclass init_table position */},
-  {(bigint) parser___ReduceAction569___init},
+  {(bigint) 2 /* 49: ReduceAction284 < ReduceAction284: superclass init_table position */},
+  {(bigint) parser___ReduceAction284___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction569(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction569;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction284::_goto */
+void INIT_ATTRIBUTES__ReduceAction284(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction284;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction569(val_t self, char *from) {
-}
-val_t NEW_ReduceAction569_parser___ReduceAction569___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction569();
-  parser___ReduceAction569___init(self, init_table);
-  CHECKNEW_ReduceAction569(self, "parser::ReduceAction569::init for ReduceAction569");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction570[48] = {
-  {(bigint) 1087 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction570 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction570 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1087 /* 3: ReduceAction570 < ReduceAction570: superclass typecheck marker */},
+val_t NEW_ReduceAction284(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction284;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction284(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction284;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction284____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction284_parser___ReduceAction284___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9377;
+  fra.me.meth = LOCATE_NEW_ReduceAction284_parser___ReduceAction284___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9377 */
+  fra.me.REG[0] = NEW_ReduceAction284();
+  INIT_ATTRIBUTES__ReduceAction284(fra.me.REG[0]);
+  parser___ReduceAction284___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction284(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction285[51] = {
+  {(bigint) 1051 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction285 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction285 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1051 /* 4: ReduceAction285 < ReduceAction285: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87641,14 +105829,9 @@ const classtable_elt_t VFT_ReduceAction570[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction570 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction285 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87656,7 +105839,6 @@ const classtable_elt_t VFT_ReduceAction570[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87664,41 +105846,93 @@ const classtable_elt_t VFT_ReduceAction570[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction570 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction570___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction285 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction285___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction570 < ReduceAction570: superclass init_table position */},
-  {(bigint) parser___ReduceAction570___init},
+  {(bigint) 2 /* 49: ReduceAction285 < ReduceAction285: superclass init_table position */},
+  {(bigint) parser___ReduceAction285___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction570(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction570;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction570(val_t self, char *from) {
-}
-val_t NEW_ReduceAction570_parser___ReduceAction570___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction570();
-  parser___ReduceAction570___init(self, init_table);
-  CHECKNEW_ReduceAction570(self, "parser::ReduceAction570::init for ReduceAction570");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction285::_goto */
+void INIT_ATTRIBUTES__ReduceAction285(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction285;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction571[48] = {
-  {(bigint) 1083 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction571 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction571 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1083 /* 3: ReduceAction571 < ReduceAction571: superclass typecheck marker */},
+val_t NEW_ReduceAction285(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction285;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction285(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction285;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction285____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction285_parser___ReduceAction285___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9404;
+  fra.me.meth = LOCATE_NEW_ReduceAction285_parser___ReduceAction285___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9404 */
+  fra.me.REG[0] = NEW_ReduceAction285();
+  INIT_ATTRIBUTES__ReduceAction285(fra.me.REG[0]);
+  parser___ReduceAction285___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction285(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction286[51] = {
+  {(bigint) 1047 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction286 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction286 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1047 /* 4: ReduceAction286 < ReduceAction286: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87711,14 +105945,9 @@ const classtable_elt_t VFT_ReduceAction571[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction571 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction286 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87726,7 +105955,6 @@ const classtable_elt_t VFT_ReduceAction571[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87734,41 +105962,93 @@ const classtable_elt_t VFT_ReduceAction571[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction571 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction571___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction286 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction286___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction571 < ReduceAction571: superclass init_table position */},
-  {(bigint) parser___ReduceAction571___init},
+  {(bigint) 2 /* 49: ReduceAction286 < ReduceAction286: superclass init_table position */},
+  {(bigint) parser___ReduceAction286___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction571(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction571;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction571(val_t self, char *from) {
-}
-val_t NEW_ReduceAction571_parser___ReduceAction571___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction571();
-  parser___ReduceAction571___init(self, init_table);
-  CHECKNEW_ReduceAction571(self, "parser::ReduceAction571::init for ReduceAction571");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction286::_goto */
+void INIT_ATTRIBUTES__ReduceAction286(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction286;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction572[48] = {
-  {(bigint) 1079 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction572 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction572 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1079 /* 3: ReduceAction572 < ReduceAction572: superclass typecheck marker */},
+val_t NEW_ReduceAction286(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction286;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction286(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction286;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction286____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction286_parser___ReduceAction286___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9434;
+  fra.me.meth = LOCATE_NEW_ReduceAction286_parser___ReduceAction286___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9434 */
+  fra.me.REG[0] = NEW_ReduceAction286();
+  INIT_ATTRIBUTES__ReduceAction286(fra.me.REG[0]);
+  parser___ReduceAction286___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction286(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction287[51] = {
+  {(bigint) 1043 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction287 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction287 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1043 /* 4: ReduceAction287 < ReduceAction287: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87781,14 +106061,9 @@ const classtable_elt_t VFT_ReduceAction572[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction572 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction287 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87796,7 +106071,6 @@ const classtable_elt_t VFT_ReduceAction572[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87804,41 +106078,93 @@ const classtable_elt_t VFT_ReduceAction572[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction572 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction572___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction572 < ReduceAction572: superclass init_table position */},
-  {(bigint) parser___ReduceAction572___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction572(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction572;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction572(val_t self, char *from) {
-}
-val_t NEW_ReduceAction572_parser___ReduceAction572___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction572();
-  parser___ReduceAction572___init(self, init_table);
-  CHECKNEW_ReduceAction572(self, "parser::ReduceAction572::init for ReduceAction572");
-  return self;
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction287 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction287___action},
+  {(bigint) parser___ReduceAction___concat},
+  {(bigint) parser___ReduceAction___init},
+  {(bigint) 2 /* 49: ReduceAction287 < ReduceAction287: superclass init_table position */},
+  {(bigint) parser___ReduceAction287___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction287::_goto */
+void INIT_ATTRIBUTES__ReduceAction287(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction287;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction573[48] = {
-  {(bigint) 1075 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction573 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction573 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1075 /* 3: ReduceAction573 < ReduceAction573: superclass typecheck marker */},
+val_t NEW_ReduceAction287(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction287;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction287(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction287;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction287____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction287_parser___ReduceAction287___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9457;
+  fra.me.meth = LOCATE_NEW_ReduceAction287_parser___ReduceAction287___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9457 */
+  fra.me.REG[0] = NEW_ReduceAction287();
+  INIT_ATTRIBUTES__ReduceAction287(fra.me.REG[0]);
+  parser___ReduceAction287___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction287(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction288[51] = {
+  {(bigint) 1039 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction288 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction288 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1039 /* 4: ReduceAction288 < ReduceAction288: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87851,14 +106177,9 @@ const classtable_elt_t VFT_ReduceAction573[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction573 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction288 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87866,7 +106187,6 @@ const classtable_elt_t VFT_ReduceAction573[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87874,41 +106194,93 @@ const classtable_elt_t VFT_ReduceAction573[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction573 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction573___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction288 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction288___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction573 < ReduceAction573: superclass init_table position */},
-  {(bigint) parser___ReduceAction573___init},
+  {(bigint) 2 /* 49: ReduceAction288 < ReduceAction288: superclass init_table position */},
+  {(bigint) parser___ReduceAction288___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction573(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction573;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction573(val_t self, char *from) {
-}
-val_t NEW_ReduceAction573_parser___ReduceAction573___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction573();
-  parser___ReduceAction573___init(self, init_table);
-  CHECKNEW_ReduceAction573(self, "parser::ReduceAction573::init for ReduceAction573");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction288::_goto */
+void INIT_ATTRIBUTES__ReduceAction288(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction288;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction574[48] = {
-  {(bigint) 1071 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction574 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction574 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1071 /* 3: ReduceAction574 < ReduceAction574: superclass typecheck marker */},
+val_t NEW_ReduceAction288(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction288;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction288(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction288;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction288____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction288_parser___ReduceAction288___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9483;
+  fra.me.meth = LOCATE_NEW_ReduceAction288_parser___ReduceAction288___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9483 */
+  fra.me.REG[0] = NEW_ReduceAction288();
+  INIT_ATTRIBUTES__ReduceAction288(fra.me.REG[0]);
+  parser___ReduceAction288___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction288(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction289[51] = {
+  {(bigint) 1035 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction289 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction289 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1035 /* 4: ReduceAction289 < ReduceAction289: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87921,14 +106293,9 @@ const classtable_elt_t VFT_ReduceAction574[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction574 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction289 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -87936,7 +106303,6 @@ const classtable_elt_t VFT_ReduceAction574[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -87944,41 +106310,93 @@ const classtable_elt_t VFT_ReduceAction574[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction574 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction574___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction289 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction289___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction574 < ReduceAction574: superclass init_table position */},
-  {(bigint) parser___ReduceAction574___init},
+  {(bigint) 2 /* 49: ReduceAction289 < ReduceAction289: superclass init_table position */},
+  {(bigint) parser___ReduceAction289___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction574(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction574;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction574(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction289::_goto */
+void INIT_ATTRIBUTES__ReduceAction289(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction289;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction574_parser___ReduceAction574___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction574();
-  parser___ReduceAction574___init(self, init_table);
-  CHECKNEW_ReduceAction574(self, "parser::ReduceAction574::init for ReduceAction574");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction575[48] = {
-  {(bigint) 1067 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction575 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction575 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1067 /* 3: ReduceAction575 < ReduceAction575: superclass typecheck marker */},
+val_t NEW_ReduceAction289(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction289;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction289(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction289;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction289____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction289_parser___ReduceAction289___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9497;
+  fra.me.meth = LOCATE_NEW_ReduceAction289_parser___ReduceAction289___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9497 */
+  fra.me.REG[0] = NEW_ReduceAction289();
+  INIT_ATTRIBUTES__ReduceAction289(fra.me.REG[0]);
+  parser___ReduceAction289___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction289(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction293[51] = {
+  {(bigint) 1027 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction293 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction293 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1027 /* 4: ReduceAction293 < ReduceAction293: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87991,14 +106409,9 @@ const classtable_elt_t VFT_ReduceAction575[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction575 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction293 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88006,7 +106419,6 @@ const classtable_elt_t VFT_ReduceAction575[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88014,41 +106426,93 @@ const classtable_elt_t VFT_ReduceAction575[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction575 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction575___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction293 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction293___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction575 < ReduceAction575: superclass init_table position */},
-  {(bigint) parser___ReduceAction575___init},
+  {(bigint) 2 /* 49: ReduceAction293 < ReduceAction293: superclass init_table position */},
+  {(bigint) parser___ReduceAction293___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction575(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction575;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction293::_goto */
+void INIT_ATTRIBUTES__ReduceAction293(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction293;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction575(val_t self, char *from) {
-}
-val_t NEW_ReduceAction575_parser___ReduceAction575___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction575();
-  parser___ReduceAction575___init(self, init_table);
-  CHECKNEW_ReduceAction575(self, "parser::ReduceAction575::init for ReduceAction575");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction576[48] = {
-  {(bigint) 1063 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction576 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction576 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1063 /* 3: ReduceAction576 < ReduceAction576: superclass typecheck marker */},
+val_t NEW_ReduceAction293(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction293;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction293(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction293;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction293____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction293_parser___ReduceAction293___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9526;
+  fra.me.meth = LOCATE_NEW_ReduceAction293_parser___ReduceAction293___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9526 */
+  fra.me.REG[0] = NEW_ReduceAction293();
+  INIT_ATTRIBUTES__ReduceAction293(fra.me.REG[0]);
+  parser___ReduceAction293___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction293(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction295[51] = {
+  {(bigint) 1023 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction295 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction295 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1023 /* 4: ReduceAction295 < ReduceAction295: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88061,14 +106525,9 @@ const classtable_elt_t VFT_ReduceAction576[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction576 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction295 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88076,7 +106535,6 @@ const classtable_elt_t VFT_ReduceAction576[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88084,41 +106542,93 @@ const classtable_elt_t VFT_ReduceAction576[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction576 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction576___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction295 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction295___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction576 < ReduceAction576: superclass init_table position */},
-  {(bigint) parser___ReduceAction576___init},
+  {(bigint) 2 /* 49: ReduceAction295 < ReduceAction295: superclass init_table position */},
+  {(bigint) parser___ReduceAction295___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction576(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction576;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction576(val_t self, char *from) {
-}
-val_t NEW_ReduceAction576_parser___ReduceAction576___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction576();
-  parser___ReduceAction576___init(self, init_table);
-  CHECKNEW_ReduceAction576(self, "parser::ReduceAction576::init for ReduceAction576");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction295::_goto */
+void INIT_ATTRIBUTES__ReduceAction295(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction295;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction577[48] = {
-  {(bigint) 1059 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction577 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction577 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1059 /* 3: ReduceAction577 < ReduceAction577: superclass typecheck marker */},
+val_t NEW_ReduceAction295(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction295;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction295(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction295;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction295____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction295_parser___ReduceAction295___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9568;
+  fra.me.meth = LOCATE_NEW_ReduceAction295_parser___ReduceAction295___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9568 */
+  fra.me.REG[0] = NEW_ReduceAction295();
+  INIT_ATTRIBUTES__ReduceAction295(fra.me.REG[0]);
+  parser___ReduceAction295___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction295(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction297[51] = {
+  {(bigint) 1019 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction297 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction297 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1019 /* 4: ReduceAction297 < ReduceAction297: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88131,14 +106641,9 @@ const classtable_elt_t VFT_ReduceAction577[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction577 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction297 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88146,7 +106651,6 @@ const classtable_elt_t VFT_ReduceAction577[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88154,41 +106658,93 @@ const classtable_elt_t VFT_ReduceAction577[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction577 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction577___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction297 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction297___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction577 < ReduceAction577: superclass init_table position */},
-  {(bigint) parser___ReduceAction577___init},
+  {(bigint) 2 /* 49: ReduceAction297 < ReduceAction297: superclass init_table position */},
+  {(bigint) parser___ReduceAction297___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction577(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction577;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction577(val_t self, char *from) {
-}
-val_t NEW_ReduceAction577_parser___ReduceAction577___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction577();
-  parser___ReduceAction577___init(self, init_table);
-  CHECKNEW_ReduceAction577(self, "parser::ReduceAction577::init for ReduceAction577");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction297::_goto */
+void INIT_ATTRIBUTES__ReduceAction297(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction297;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction578[48] = {
-  {(bigint) 1055 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction578 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction578 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1055 /* 3: ReduceAction578 < ReduceAction578: superclass typecheck marker */},
+val_t NEW_ReduceAction297(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction297;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction297(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction297;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction297____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction297_parser___ReduceAction297___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9591;
+  fra.me.meth = LOCATE_NEW_ReduceAction297_parser___ReduceAction297___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9591 */
+  fra.me.REG[0] = NEW_ReduceAction297();
+  INIT_ATTRIBUTES__ReduceAction297(fra.me.REG[0]);
+  parser___ReduceAction297___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction297(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction298[51] = {
+  {(bigint) 1015 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction298 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction298 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1015 /* 4: ReduceAction298 < ReduceAction298: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88201,14 +106757,9 @@ const classtable_elt_t VFT_ReduceAction578[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction578 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction298 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88216,7 +106767,6 @@ const classtable_elt_t VFT_ReduceAction578[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88224,41 +106774,93 @@ const classtable_elt_t VFT_ReduceAction578[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction578 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction578___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction298 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction298___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction578 < ReduceAction578: superclass init_table position */},
-  {(bigint) parser___ReduceAction578___init},
+  {(bigint) 2 /* 49: ReduceAction298 < ReduceAction298: superclass init_table position */},
+  {(bigint) parser___ReduceAction298___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction578(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction578;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction578(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction298::_goto */
+void INIT_ATTRIBUTES__ReduceAction298(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction298;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction578_parser___ReduceAction578___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction578();
-  parser___ReduceAction578___init(self, init_table);
-  CHECKNEW_ReduceAction578(self, "parser::ReduceAction578::init for ReduceAction578");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction579[48] = {
-  {(bigint) 1051 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction579 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction579 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1051 /* 3: ReduceAction579 < ReduceAction579: superclass typecheck marker */},
+val_t NEW_ReduceAction298(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction298;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction298(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction298;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction298____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction298_parser___ReduceAction298___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9614;
+  fra.me.meth = LOCATE_NEW_ReduceAction298_parser___ReduceAction298___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9614 */
+  fra.me.REG[0] = NEW_ReduceAction298();
+  INIT_ATTRIBUTES__ReduceAction298(fra.me.REG[0]);
+  parser___ReduceAction298___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction298(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction299[51] = {
+  {(bigint) 1011 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction299 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction299 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 1011 /* 4: ReduceAction299 < ReduceAction299: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88271,14 +106873,9 @@ const classtable_elt_t VFT_ReduceAction579[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction579 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction299 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88286,7 +106883,6 @@ const classtable_elt_t VFT_ReduceAction579[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88294,41 +106890,93 @@ const classtable_elt_t VFT_ReduceAction579[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction579 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction579___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction299 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction299___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction579 < ReduceAction579: superclass init_table position */},
-  {(bigint) parser___ReduceAction579___init},
+  {(bigint) 2 /* 49: ReduceAction299 < ReduceAction299: superclass init_table position */},
+  {(bigint) parser___ReduceAction299___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction579(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction579;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction299::_goto */
+void INIT_ATTRIBUTES__ReduceAction299(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction299;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction579(val_t self, char *from) {
-}
-val_t NEW_ReduceAction579_parser___ReduceAction579___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction579();
-  parser___ReduceAction579___init(self, init_table);
-  CHECKNEW_ReduceAction579(self, "parser::ReduceAction579::init for ReduceAction579");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction580[48] = {
-  {(bigint) 1043 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction580 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction580 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1043 /* 3: ReduceAction580 < ReduceAction580: superclass typecheck marker */},
+val_t NEW_ReduceAction299(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction299;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction299(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction299;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction299____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction299_parser___ReduceAction299___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9638;
+  fra.me.meth = LOCATE_NEW_ReduceAction299_parser___ReduceAction299___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9638 */
+  fra.me.REG[0] = NEW_ReduceAction299();
+  INIT_ATTRIBUTES__ReduceAction299(fra.me.REG[0]);
+  parser___ReduceAction299___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction299(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction301[51] = {
+  {(bigint) 999 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction301 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction301 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 999 /* 4: ReduceAction301 < ReduceAction301: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88341,14 +106989,9 @@ const classtable_elt_t VFT_ReduceAction580[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction580 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction301 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88356,7 +106999,6 @@ const classtable_elt_t VFT_ReduceAction580[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88364,41 +107006,93 @@ const classtable_elt_t VFT_ReduceAction580[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction580 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction580___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction301 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction301___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction580 < ReduceAction580: superclass init_table position */},
-  {(bigint) parser___ReduceAction580___init},
+  {(bigint) 2 /* 49: ReduceAction301 < ReduceAction301: superclass init_table position */},
+  {(bigint) parser___ReduceAction301___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction580(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction580;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction580(val_t self, char *from) {
-}
-val_t NEW_ReduceAction580_parser___ReduceAction580___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction580();
-  parser___ReduceAction580___init(self, init_table);
-  CHECKNEW_ReduceAction580(self, "parser::ReduceAction580::init for ReduceAction580");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction301::_goto */
+void INIT_ATTRIBUTES__ReduceAction301(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction301;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction581[48] = {
-  {(bigint) 1039 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction581 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction581 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1039 /* 3: ReduceAction581 < ReduceAction581: superclass typecheck marker */},
+val_t NEW_ReduceAction301(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction301;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction301(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction301;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction301____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction301_parser___ReduceAction301___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9660;
+  fra.me.meth = LOCATE_NEW_ReduceAction301_parser___ReduceAction301___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9660 */
+  fra.me.REG[0] = NEW_ReduceAction301();
+  INIT_ATTRIBUTES__ReduceAction301(fra.me.REG[0]);
+  parser___ReduceAction301___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction301(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction303[51] = {
+  {(bigint) 995 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction303 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction303 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 995 /* 4: ReduceAction303 < ReduceAction303: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88411,14 +107105,9 @@ const classtable_elt_t VFT_ReduceAction581[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction581 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction303 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88426,7 +107115,6 @@ const classtable_elt_t VFT_ReduceAction581[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88434,41 +107122,93 @@ const classtable_elt_t VFT_ReduceAction581[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction581 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction581___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction303 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction303___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction581 < ReduceAction581: superclass init_table position */},
-  {(bigint) parser___ReduceAction581___init},
+  {(bigint) 2 /* 49: ReduceAction303 < ReduceAction303: superclass init_table position */},
+  {(bigint) parser___ReduceAction303___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction581(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction581;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction581(val_t self, char *from) {
-}
-val_t NEW_ReduceAction581_parser___ReduceAction581___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction581();
-  parser___ReduceAction581___init(self, init_table);
-  CHECKNEW_ReduceAction581(self, "parser::ReduceAction581::init for ReduceAction581");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction303::_goto */
+void INIT_ATTRIBUTES__ReduceAction303(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction303;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction582[48] = {
-  {(bigint) 1035 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction582 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction582 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1035 /* 3: ReduceAction582 < ReduceAction582: superclass typecheck marker */},
+val_t NEW_ReduceAction303(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction303;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction303(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction303;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction303____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction303_parser___ReduceAction303___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9683;
+  fra.me.meth = LOCATE_NEW_ReduceAction303_parser___ReduceAction303___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9683 */
+  fra.me.REG[0] = NEW_ReduceAction303();
+  INIT_ATTRIBUTES__ReduceAction303(fra.me.REG[0]);
+  parser___ReduceAction303___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction303(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction304[51] = {
+  {(bigint) 991 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction304 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction304 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 991 /* 4: ReduceAction304 < ReduceAction304: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88481,14 +107221,9 @@ const classtable_elt_t VFT_ReduceAction582[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction582 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction304 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88496,7 +107231,6 @@ const classtable_elt_t VFT_ReduceAction582[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88504,41 +107238,93 @@ const classtable_elt_t VFT_ReduceAction582[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction582 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction582___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction304 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction304___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction582 < ReduceAction582: superclass init_table position */},
-  {(bigint) parser___ReduceAction582___init},
+  {(bigint) 2 /* 49: ReduceAction304 < ReduceAction304: superclass init_table position */},
+  {(bigint) parser___ReduceAction304___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction582(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction582;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction582(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction304::_goto */
+void INIT_ATTRIBUTES__ReduceAction304(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction304;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction582_parser___ReduceAction582___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction582();
-  parser___ReduceAction582___init(self, init_table);
-  CHECKNEW_ReduceAction582(self, "parser::ReduceAction582::init for ReduceAction582");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction583[48] = {
-  {(bigint) 1031 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction583 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction583 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1031 /* 3: ReduceAction583 < ReduceAction583: superclass typecheck marker */},
+val_t NEW_ReduceAction304(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction304;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction304(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction304;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction304____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction304_parser___ReduceAction304___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9706;
+  fra.me.meth = LOCATE_NEW_ReduceAction304_parser___ReduceAction304___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9706 */
+  fra.me.REG[0] = NEW_ReduceAction304();
+  INIT_ATTRIBUTES__ReduceAction304(fra.me.REG[0]);
+  parser___ReduceAction304___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction304(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction305[51] = {
+  {(bigint) 987 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction305 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction305 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 987 /* 4: ReduceAction305 < ReduceAction305: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88551,14 +107337,9 @@ const classtable_elt_t VFT_ReduceAction583[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction583 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction305 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88566,7 +107347,6 @@ const classtable_elt_t VFT_ReduceAction583[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88574,41 +107354,93 @@ const classtable_elt_t VFT_ReduceAction583[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction583 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction583___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction305 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction305___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction583 < ReduceAction583: superclass init_table position */},
-  {(bigint) parser___ReduceAction583___init},
+  {(bigint) 2 /* 49: ReduceAction305 < ReduceAction305: superclass init_table position */},
+  {(bigint) parser___ReduceAction305___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction583(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction583;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction305::_goto */
+void INIT_ATTRIBUTES__ReduceAction305(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction305;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction583(val_t self, char *from) {
-}
-val_t NEW_ReduceAction583_parser___ReduceAction583___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction583();
-  parser___ReduceAction583___init(self, init_table);
-  CHECKNEW_ReduceAction583(self, "parser::ReduceAction583::init for ReduceAction583");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction584[48] = {
-  {(bigint) 1027 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction584 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction584 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1027 /* 3: ReduceAction584 < ReduceAction584: superclass typecheck marker */},
+val_t NEW_ReduceAction305(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction305;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction305(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction305;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction305____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction305_parser___ReduceAction305___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9729;
+  fra.me.meth = LOCATE_NEW_ReduceAction305_parser___ReduceAction305___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9729 */
+  fra.me.REG[0] = NEW_ReduceAction305();
+  INIT_ATTRIBUTES__ReduceAction305(fra.me.REG[0]);
+  parser___ReduceAction305___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction305(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction306[51] = {
+  {(bigint) 983 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction306 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction306 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 983 /* 4: ReduceAction306 < ReduceAction306: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88621,14 +107453,9 @@ const classtable_elt_t VFT_ReduceAction584[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction584 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction306 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88636,7 +107463,6 @@ const classtable_elt_t VFT_ReduceAction584[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88644,41 +107470,93 @@ const classtable_elt_t VFT_ReduceAction584[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction584 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction584___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction306 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction306___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction584 < ReduceAction584: superclass init_table position */},
-  {(bigint) parser___ReduceAction584___init},
+  {(bigint) 2 /* 49: ReduceAction306 < ReduceAction306: superclass init_table position */},
+  {(bigint) parser___ReduceAction306___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction584(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction584;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction584(val_t self, char *from) {
-}
-val_t NEW_ReduceAction584_parser___ReduceAction584___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction584();
-  parser___ReduceAction584___init(self, init_table);
-  CHECKNEW_ReduceAction584(self, "parser::ReduceAction584::init for ReduceAction584");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction306::_goto */
+void INIT_ATTRIBUTES__ReduceAction306(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction306;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction585[48] = {
-  {(bigint) 1023 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction585 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction585 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1023 /* 3: ReduceAction585 < ReduceAction585: superclass typecheck marker */},
+val_t NEW_ReduceAction306(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction306;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction306(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction306;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction306____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction306_parser___ReduceAction306___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9752;
+  fra.me.meth = LOCATE_NEW_ReduceAction306_parser___ReduceAction306___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9752 */
+  fra.me.REG[0] = NEW_ReduceAction306();
+  INIT_ATTRIBUTES__ReduceAction306(fra.me.REG[0]);
+  parser___ReduceAction306___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction306(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction307[51] = {
+  {(bigint) 979 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction307 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction307 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 979 /* 4: ReduceAction307 < ReduceAction307: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88691,14 +107569,9 @@ const classtable_elt_t VFT_ReduceAction585[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction585 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction307 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88706,7 +107579,6 @@ const classtable_elt_t VFT_ReduceAction585[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88714,41 +107586,93 @@ const classtable_elt_t VFT_ReduceAction585[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction585 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction585___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction307 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction307___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction585 < ReduceAction585: superclass init_table position */},
-  {(bigint) parser___ReduceAction585___init},
+  {(bigint) 2 /* 49: ReduceAction307 < ReduceAction307: superclass init_table position */},
+  {(bigint) parser___ReduceAction307___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction585(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction585;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction585(val_t self, char *from) {
-}
-val_t NEW_ReduceAction585_parser___ReduceAction585___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction585();
-  parser___ReduceAction585___init(self, init_table);
-  CHECKNEW_ReduceAction585(self, "parser::ReduceAction585::init for ReduceAction585");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction307::_goto */
+void INIT_ATTRIBUTES__ReduceAction307(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction307;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction586[48] = {
-  {(bigint) 1019 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction586 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction586 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1019 /* 3: ReduceAction586 < ReduceAction586: superclass typecheck marker */},
+val_t NEW_ReduceAction307(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction307;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction307(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction307;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction307____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction307_parser___ReduceAction307___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9775;
+  fra.me.meth = LOCATE_NEW_ReduceAction307_parser___ReduceAction307___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9775 */
+  fra.me.REG[0] = NEW_ReduceAction307();
+  INIT_ATTRIBUTES__ReduceAction307(fra.me.REG[0]);
+  parser___ReduceAction307___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction307(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction308[51] = {
+  {(bigint) 975 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction308 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction308 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 975 /* 4: ReduceAction308 < ReduceAction308: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88761,14 +107685,9 @@ const classtable_elt_t VFT_ReduceAction586[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction586 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction308 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88776,7 +107695,6 @@ const classtable_elt_t VFT_ReduceAction586[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88784,41 +107702,93 @@ const classtable_elt_t VFT_ReduceAction586[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction586 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction586___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction308 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction308___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction586 < ReduceAction586: superclass init_table position */},
-  {(bigint) parser___ReduceAction586___init},
+  {(bigint) 2 /* 49: ReduceAction308 < ReduceAction308: superclass init_table position */},
+  {(bigint) parser___ReduceAction308___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction586(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction586;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction586(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction308::_goto */
+void INIT_ATTRIBUTES__ReduceAction308(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction308;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction586_parser___ReduceAction586___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction586();
-  parser___ReduceAction586___init(self, init_table);
-  CHECKNEW_ReduceAction586(self, "parser::ReduceAction586::init for ReduceAction586");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction587[48] = {
-  {(bigint) 1015 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction587 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction587 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1015 /* 3: ReduceAction587 < ReduceAction587: superclass typecheck marker */},
+val_t NEW_ReduceAction308(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction308;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction308(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction308;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction308____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction308_parser___ReduceAction308___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9798;
+  fra.me.meth = LOCATE_NEW_ReduceAction308_parser___ReduceAction308___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9798 */
+  fra.me.REG[0] = NEW_ReduceAction308();
+  INIT_ATTRIBUTES__ReduceAction308(fra.me.REG[0]);
+  parser___ReduceAction308___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction308(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction309[51] = {
+  {(bigint) 971 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction309 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction309 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 971 /* 4: ReduceAction309 < ReduceAction309: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88831,14 +107801,9 @@ const classtable_elt_t VFT_ReduceAction587[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction587 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction309 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88846,7 +107811,6 @@ const classtable_elt_t VFT_ReduceAction587[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88854,41 +107818,93 @@ const classtable_elt_t VFT_ReduceAction587[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction587 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction587___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction309 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction309___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction587 < ReduceAction587: superclass init_table position */},
-  {(bigint) parser___ReduceAction587___init},
+  {(bigint) 2 /* 49: ReduceAction309 < ReduceAction309: superclass init_table position */},
+  {(bigint) parser___ReduceAction309___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction587(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction587;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction309::_goto */
+void INIT_ATTRIBUTES__ReduceAction309(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction309;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction587(val_t self, char *from) {
-}
-val_t NEW_ReduceAction587_parser___ReduceAction587___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction587();
-  parser___ReduceAction587___init(self, init_table);
-  CHECKNEW_ReduceAction587(self, "parser::ReduceAction587::init for ReduceAction587");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction588[48] = {
-  {(bigint) 1011 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction588 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction588 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1011 /* 3: ReduceAction588 < ReduceAction588: superclass typecheck marker */},
+val_t NEW_ReduceAction309(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction309;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction309(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction309;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction309____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction309_parser___ReduceAction309___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9821;
+  fra.me.meth = LOCATE_NEW_ReduceAction309_parser___ReduceAction309___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9821 */
+  fra.me.REG[0] = NEW_ReduceAction309();
+  INIT_ATTRIBUTES__ReduceAction309(fra.me.REG[0]);
+  parser___ReduceAction309___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction309(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction310[51] = {
+  {(bigint) 963 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction310 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction310 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 963 /* 4: ReduceAction310 < ReduceAction310: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88901,14 +107917,9 @@ const classtable_elt_t VFT_ReduceAction588[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction588 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction310 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88916,7 +107927,6 @@ const classtable_elt_t VFT_ReduceAction588[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88924,41 +107934,93 @@ const classtable_elt_t VFT_ReduceAction588[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction588 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction588___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction310 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction310___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction588 < ReduceAction588: superclass init_table position */},
-  {(bigint) parser___ReduceAction588___init},
+  {(bigint) 2 /* 49: ReduceAction310 < ReduceAction310: superclass init_table position */},
+  {(bigint) parser___ReduceAction310___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction588(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction588;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction588(val_t self, char *from) {
-}
-val_t NEW_ReduceAction588_parser___ReduceAction588___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction588();
-  parser___ReduceAction588___init(self, init_table);
-  CHECKNEW_ReduceAction588(self, "parser::ReduceAction588::init for ReduceAction588");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction310::_goto */
+void INIT_ATTRIBUTES__ReduceAction310(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction310;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction589[48] = {
-  {(bigint) 1007 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction589 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction589 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1007 /* 3: ReduceAction589 < ReduceAction589: superclass typecheck marker */},
+val_t NEW_ReduceAction310(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction310;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction310(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction310;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction310____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction310_parser___ReduceAction310___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9844;
+  fra.me.meth = LOCATE_NEW_ReduceAction310_parser___ReduceAction310___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9844 */
+  fra.me.REG[0] = NEW_ReduceAction310();
+  INIT_ATTRIBUTES__ReduceAction310(fra.me.REG[0]);
+  parser___ReduceAction310___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction310(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction311[51] = {
+  {(bigint) 959 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction311 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction311 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 959 /* 4: ReduceAction311 < ReduceAction311: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88971,14 +108033,9 @@ const classtable_elt_t VFT_ReduceAction589[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction589 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction311 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -88986,7 +108043,6 @@ const classtable_elt_t VFT_ReduceAction589[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -88994,43 +108050,93 @@ const classtable_elt_t VFT_ReduceAction589[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction589 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction589___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction311 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction311___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction589 < ReduceAction589: superclass init_table position */},
-  {(bigint) parser___ReduceAction589___init},
+  {(bigint) 2 /* 49: ReduceAction311 < ReduceAction311: superclass init_table position */},
+  {(bigint) parser___ReduceAction311___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction589(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction589;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction589(val_t self, char *from) {
-}
-val_t NEW_ReduceAction589_parser___ReduceAction589___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction589();
-  parser___ReduceAction589___init(self, init_table);
-  CHECKNEW_ReduceAction589(self, "parser::ReduceAction589::init for ReduceAction589");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction311::_goto */
+void INIT_ATTRIBUTES__ReduceAction311(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction311;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction590[48] = {
-  {(bigint) 999 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction590 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction590 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 999 /* 3: ReduceAction590 < ReduceAction590: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ReduceAction311(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction311;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction311(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction311;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction311____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction311_parser___ReduceAction311___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9867;
+  fra.me.meth = LOCATE_NEW_ReduceAction311_parser___ReduceAction311___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9867 */
+  fra.me.REG[0] = NEW_ReduceAction311();
+  INIT_ATTRIBUTES__ReduceAction311(fra.me.REG[0]);
+  parser___ReduceAction311___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction311(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction312[51] = {
+  {(bigint) 955 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction312 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction312 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 955 /* 4: ReduceAction312 < ReduceAction312: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89041,14 +108147,11 @@ const classtable_elt_t VFT_ReduceAction590[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction590 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction312 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89056,7 +108159,6 @@ const classtable_elt_t VFT_ReduceAction590[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89064,41 +108166,93 @@ const classtable_elt_t VFT_ReduceAction590[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction590 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction590___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction312 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction312___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction590 < ReduceAction590: superclass init_table position */},
-  {(bigint) parser___ReduceAction590___init},
+  {(bigint) 2 /* 49: ReduceAction312 < ReduceAction312: superclass init_table position */},
+  {(bigint) parser___ReduceAction312___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction590(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction590;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction590(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction312::_goto */
+void INIT_ATTRIBUTES__ReduceAction312(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction312;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction590_parser___ReduceAction590___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction590();
-  parser___ReduceAction590___init(self, init_table);
-  CHECKNEW_ReduceAction590(self, "parser::ReduceAction590::init for ReduceAction590");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction591[48] = {
-  {(bigint) 995 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction591 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction591 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 995 /* 3: ReduceAction591 < ReduceAction591: superclass typecheck marker */},
+val_t NEW_ReduceAction312(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction312;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction312(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction312;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction312____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction312_parser___ReduceAction312___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9890;
+  fra.me.meth = LOCATE_NEW_ReduceAction312_parser___ReduceAction312___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9890 */
+  fra.me.REG[0] = NEW_ReduceAction312();
+  INIT_ATTRIBUTES__ReduceAction312(fra.me.REG[0]);
+  parser___ReduceAction312___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction312(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction313[51] = {
+  {(bigint) 951 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction313 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction313 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 951 /* 4: ReduceAction313 < ReduceAction313: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89111,14 +108265,9 @@ const classtable_elt_t VFT_ReduceAction591[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction591 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction313 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89126,7 +108275,6 @@ const classtable_elt_t VFT_ReduceAction591[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89134,41 +108282,93 @@ const classtable_elt_t VFT_ReduceAction591[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction591 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction591___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction313 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction313___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction591 < ReduceAction591: superclass init_table position */},
-  {(bigint) parser___ReduceAction591___init},
+  {(bigint) 2 /* 49: ReduceAction313 < ReduceAction313: superclass init_table position */},
+  {(bigint) parser___ReduceAction313___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction591(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction591;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction313::_goto */
+void INIT_ATTRIBUTES__ReduceAction313(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction313;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction591(val_t self, char *from) {
-}
-val_t NEW_ReduceAction591_parser___ReduceAction591___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction591();
-  parser___ReduceAction591___init(self, init_table);
-  CHECKNEW_ReduceAction591(self, "parser::ReduceAction591::init for ReduceAction591");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction592[48] = {
-  {(bigint) 991 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction592 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction592 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 991 /* 3: ReduceAction592 < ReduceAction592: superclass typecheck marker */},
+val_t NEW_ReduceAction313(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction313;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction313(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction313;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction313____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction313_parser___ReduceAction313___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9913;
+  fra.me.meth = LOCATE_NEW_ReduceAction313_parser___ReduceAction313___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9913 */
+  fra.me.REG[0] = NEW_ReduceAction313();
+  INIT_ATTRIBUTES__ReduceAction313(fra.me.REG[0]);
+  parser___ReduceAction313___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction313(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction315[51] = {
+  {(bigint) 947 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction315 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction315 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 947 /* 4: ReduceAction315 < ReduceAction315: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89181,14 +108381,9 @@ const classtable_elt_t VFT_ReduceAction592[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction592 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction315 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89196,7 +108391,6 @@ const classtable_elt_t VFT_ReduceAction592[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89204,41 +108398,93 @@ const classtable_elt_t VFT_ReduceAction592[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction592 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction592___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction315 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction315___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction592 < ReduceAction592: superclass init_table position */},
-  {(bigint) parser___ReduceAction592___init},
+  {(bigint) 2 /* 49: ReduceAction315 < ReduceAction315: superclass init_table position */},
+  {(bigint) parser___ReduceAction315___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction592(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction592;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction592(val_t self, char *from) {
-}
-val_t NEW_ReduceAction592_parser___ReduceAction592___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction592();
-  parser___ReduceAction592___init(self, init_table);
-  CHECKNEW_ReduceAction592(self, "parser::ReduceAction592::init for ReduceAction592");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction315::_goto */
+void INIT_ATTRIBUTES__ReduceAction315(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction315;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction593[48] = {
-  {(bigint) 987 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction593 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction593 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 987 /* 3: ReduceAction593 < ReduceAction593: superclass typecheck marker */},
+val_t NEW_ReduceAction315(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction315;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction315(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction315;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction315____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction315_parser___ReduceAction315___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9936;
+  fra.me.meth = LOCATE_NEW_ReduceAction315_parser___ReduceAction315___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9936 */
+  fra.me.REG[0] = NEW_ReduceAction315();
+  INIT_ATTRIBUTES__ReduceAction315(fra.me.REG[0]);
+  parser___ReduceAction315___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction315(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction316[51] = {
+  {(bigint) 943 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction316 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction316 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 943 /* 4: ReduceAction316 < ReduceAction316: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89251,14 +108497,9 @@ const classtable_elt_t VFT_ReduceAction593[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction593 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction316 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89266,7 +108507,6 @@ const classtable_elt_t VFT_ReduceAction593[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89274,41 +108514,93 @@ const classtable_elt_t VFT_ReduceAction593[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction593 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction593___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction316 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction316___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction593 < ReduceAction593: superclass init_table position */},
-  {(bigint) parser___ReduceAction593___init},
+  {(bigint) 2 /* 49: ReduceAction316 < ReduceAction316: superclass init_table position */},
+  {(bigint) parser___ReduceAction316___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction593(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction593;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction593(val_t self, char *from) {
-}
-val_t NEW_ReduceAction593_parser___ReduceAction593___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction593();
-  parser___ReduceAction593___init(self, init_table);
-  CHECKNEW_ReduceAction593(self, "parser::ReduceAction593::init for ReduceAction593");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction316::_goto */
+void INIT_ATTRIBUTES__ReduceAction316(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction316;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction594[48] = {
-  {(bigint) 983 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction594 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction594 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 983 /* 3: ReduceAction594 < ReduceAction594: superclass typecheck marker */},
+val_t NEW_ReduceAction316(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction316;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction316(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction316;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction316____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction316_parser___ReduceAction316___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9959;
+  fra.me.meth = LOCATE_NEW_ReduceAction316_parser___ReduceAction316___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9959 */
+  fra.me.REG[0] = NEW_ReduceAction316();
+  INIT_ATTRIBUTES__ReduceAction316(fra.me.REG[0]);
+  parser___ReduceAction316___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction316(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction318[51] = {
+  {(bigint) 939 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction318 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction318 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 939 /* 4: ReduceAction318 < ReduceAction318: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89321,14 +108613,9 @@ const classtable_elt_t VFT_ReduceAction594[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction594 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction318 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89336,7 +108623,6 @@ const classtable_elt_t VFT_ReduceAction594[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89344,41 +108630,93 @@ const classtable_elt_t VFT_ReduceAction594[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction594 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction594___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction318 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction318___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction594 < ReduceAction594: superclass init_table position */},
-  {(bigint) parser___ReduceAction594___init},
+  {(bigint) 2 /* 49: ReduceAction318 < ReduceAction318: superclass init_table position */},
+  {(bigint) parser___ReduceAction318___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction594(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction594;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction594(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction318::_goto */
+void INIT_ATTRIBUTES__ReduceAction318(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction318;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction594_parser___ReduceAction594___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction594();
-  parser___ReduceAction594___init(self, init_table);
-  CHECKNEW_ReduceAction594(self, "parser::ReduceAction594::init for ReduceAction594");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction595[48] = {
-  {(bigint) 979 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction595 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction595 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 979 /* 3: ReduceAction595 < ReduceAction595: superclass typecheck marker */},
+val_t NEW_ReduceAction318(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction318;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction318(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction318;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction318____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction318_parser___ReduceAction318___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 9982;
+  fra.me.meth = LOCATE_NEW_ReduceAction318_parser___ReduceAction318___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:9982 */
+  fra.me.REG[0] = NEW_ReduceAction318();
+  INIT_ATTRIBUTES__ReduceAction318(fra.me.REG[0]);
+  parser___ReduceAction318___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction318(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction319[51] = {
+  {(bigint) 935 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction319 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction319 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 935 /* 4: ReduceAction319 < ReduceAction319: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89391,14 +108729,9 @@ const classtable_elt_t VFT_ReduceAction595[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction595 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction319 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89406,7 +108739,6 @@ const classtable_elt_t VFT_ReduceAction595[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89414,41 +108746,93 @@ const classtable_elt_t VFT_ReduceAction595[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction595 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction595___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction319 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction319___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction595 < ReduceAction595: superclass init_table position */},
-  {(bigint) parser___ReduceAction595___init},
+  {(bigint) 2 /* 49: ReduceAction319 < ReduceAction319: superclass init_table position */},
+  {(bigint) parser___ReduceAction319___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction595(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction595;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction319::_goto */
+void INIT_ATTRIBUTES__ReduceAction319(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction319;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction595(val_t self, char *from) {
-}
-val_t NEW_ReduceAction595_parser___ReduceAction595___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction595();
-  parser___ReduceAction595___init(self, init_table);
-  CHECKNEW_ReduceAction595(self, "parser::ReduceAction595::init for ReduceAction595");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction596[48] = {
-  {(bigint) 975 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction596 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction596 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 975 /* 3: ReduceAction596 < ReduceAction596: superclass typecheck marker */},
+val_t NEW_ReduceAction319(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction319;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction319(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction319;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction319____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction319_parser___ReduceAction319___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10005;
+  fra.me.meth = LOCATE_NEW_ReduceAction319_parser___ReduceAction319___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10005 */
+  fra.me.REG[0] = NEW_ReduceAction319();
+  INIT_ATTRIBUTES__ReduceAction319(fra.me.REG[0]);
+  parser___ReduceAction319___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction319(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction320[51] = {
+  {(bigint) 927 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction320 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction320 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 927 /* 4: ReduceAction320 < ReduceAction320: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89461,14 +108845,9 @@ const classtable_elt_t VFT_ReduceAction596[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction596 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction320 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89476,7 +108855,6 @@ const classtable_elt_t VFT_ReduceAction596[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89484,41 +108862,93 @@ const classtable_elt_t VFT_ReduceAction596[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction596 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction596___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction320 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction320___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction596 < ReduceAction596: superclass init_table position */},
-  {(bigint) parser___ReduceAction596___init},
+  {(bigint) 2 /* 49: ReduceAction320 < ReduceAction320: superclass init_table position */},
+  {(bigint) parser___ReduceAction320___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction596(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction596;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction596(val_t self, char *from) {
-}
-val_t NEW_ReduceAction596_parser___ReduceAction596___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction596();
-  parser___ReduceAction596___init(self, init_table);
-  CHECKNEW_ReduceAction596(self, "parser::ReduceAction596::init for ReduceAction596");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction320::_goto */
+void INIT_ATTRIBUTES__ReduceAction320(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction320;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction597[48] = {
-  {(bigint) 971 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction597 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction597 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 971 /* 3: ReduceAction597 < ReduceAction597: superclass typecheck marker */},
+val_t NEW_ReduceAction320(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction320;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction320(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction320;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction320____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction320_parser___ReduceAction320___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10028;
+  fra.me.meth = LOCATE_NEW_ReduceAction320_parser___ReduceAction320___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10028 */
+  fra.me.REG[0] = NEW_ReduceAction320();
+  INIT_ATTRIBUTES__ReduceAction320(fra.me.REG[0]);
+  parser___ReduceAction320___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction320(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction322[51] = {
+  {(bigint) 923 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction322 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction322 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 923 /* 4: ReduceAction322 < ReduceAction322: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89531,14 +108961,9 @@ const classtable_elt_t VFT_ReduceAction597[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction597 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction322 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89546,7 +108971,6 @@ const classtable_elt_t VFT_ReduceAction597[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89554,41 +108978,93 @@ const classtable_elt_t VFT_ReduceAction597[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction597 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction597___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction322 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction322___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction597 < ReduceAction597: superclass init_table position */},
-  {(bigint) parser___ReduceAction597___init},
+  {(bigint) 2 /* 49: ReduceAction322 < ReduceAction322: superclass init_table position */},
+  {(bigint) parser___ReduceAction322___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction597(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction597;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction597(val_t self, char *from) {
-}
-val_t NEW_ReduceAction597_parser___ReduceAction597___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction597();
-  parser___ReduceAction597___init(self, init_table);
-  CHECKNEW_ReduceAction597(self, "parser::ReduceAction597::init for ReduceAction597");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction322::_goto */
+void INIT_ATTRIBUTES__ReduceAction322(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction322;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction598[48] = {
-  {(bigint) 967 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction598 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction598 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 967 /* 3: ReduceAction598 < ReduceAction598: superclass typecheck marker */},
+val_t NEW_ReduceAction322(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction322;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction322(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction322;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction322____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction322_parser___ReduceAction322___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10050;
+  fra.me.meth = LOCATE_NEW_ReduceAction322_parser___ReduceAction322___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10050 */
+  fra.me.REG[0] = NEW_ReduceAction322();
+  INIT_ATTRIBUTES__ReduceAction322(fra.me.REG[0]);
+  parser___ReduceAction322___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction322(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction323[51] = {
+  {(bigint) 919 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction323 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction323 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 919 /* 4: ReduceAction323 < ReduceAction323: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89601,14 +109077,9 @@ const classtable_elt_t VFT_ReduceAction598[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction598 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction323 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89616,7 +109087,6 @@ const classtable_elt_t VFT_ReduceAction598[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89624,41 +109094,93 @@ const classtable_elt_t VFT_ReduceAction598[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction598 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction598___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction323 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction323___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction598 < ReduceAction598: superclass init_table position */},
-  {(bigint) parser___ReduceAction598___init},
+  {(bigint) 2 /* 49: ReduceAction323 < ReduceAction323: superclass init_table position */},
+  {(bigint) parser___ReduceAction323___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction598(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction598;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction598(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction323::_goto */
+void INIT_ATTRIBUTES__ReduceAction323(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction323;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction598_parser___ReduceAction598___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction598();
-  parser___ReduceAction598___init(self, init_table);
-  CHECKNEW_ReduceAction598(self, "parser::ReduceAction598::init for ReduceAction598");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction599[48] = {
-  {(bigint) 963 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction599 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction599 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 963 /* 3: ReduceAction599 < ReduceAction599: superclass typecheck marker */},
+val_t NEW_ReduceAction323(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction323;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction323(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction323;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction323____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction323_parser___ReduceAction323___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10072;
+  fra.me.meth = LOCATE_NEW_ReduceAction323_parser___ReduceAction323___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10072 */
+  fra.me.REG[0] = NEW_ReduceAction323();
+  INIT_ATTRIBUTES__ReduceAction323(fra.me.REG[0]);
+  parser___ReduceAction323___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction323(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction325[51] = {
+  {(bigint) 915 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction325 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction325 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 915 /* 4: ReduceAction325 < ReduceAction325: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89671,14 +109193,9 @@ const classtable_elt_t VFT_ReduceAction599[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction599 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction325 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89686,7 +109203,6 @@ const classtable_elt_t VFT_ReduceAction599[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89694,41 +109210,93 @@ const classtable_elt_t VFT_ReduceAction599[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction599 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction599___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction325 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction325___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction599 < ReduceAction599: superclass init_table position */},
-  {(bigint) parser___ReduceAction599___init},
+  {(bigint) 2 /* 49: ReduceAction325 < ReduceAction325: superclass init_table position */},
+  {(bigint) parser___ReduceAction325___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction599(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction599;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction325::_goto */
+void INIT_ATTRIBUTES__ReduceAction325(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction325;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction599(val_t self, char *from) {
-}
-val_t NEW_ReduceAction599_parser___ReduceAction599___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction599();
-  parser___ReduceAction599___init(self, init_table);
-  CHECKNEW_ReduceAction599(self, "parser::ReduceAction599::init for ReduceAction599");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction600[48] = {
-  {(bigint) 951 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction600 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction600 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 951 /* 3: ReduceAction600 < ReduceAction600: superclass typecheck marker */},
+val_t NEW_ReduceAction325(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction325;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction325(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction325;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction325____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction325_parser___ReduceAction325___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10101;
+  fra.me.meth = LOCATE_NEW_ReduceAction325_parser___ReduceAction325___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10101 */
+  fra.me.REG[0] = NEW_ReduceAction325();
+  INIT_ATTRIBUTES__ReduceAction325(fra.me.REG[0]);
+  parser___ReduceAction325___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction325(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction326[51] = {
+  {(bigint) 911 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction326 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction326 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 911 /* 4: ReduceAction326 < ReduceAction326: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89741,14 +109309,9 @@ const classtable_elt_t VFT_ReduceAction600[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction600 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction326 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89756,7 +109319,6 @@ const classtable_elt_t VFT_ReduceAction600[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89764,41 +109326,93 @@ const classtable_elt_t VFT_ReduceAction600[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction600 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction600___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction326 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction326___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction600 < ReduceAction600: superclass init_table position */},
-  {(bigint) parser___ReduceAction600___init},
+  {(bigint) 2 /* 49: ReduceAction326 < ReduceAction326: superclass init_table position */},
+  {(bigint) parser___ReduceAction326___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction600(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction600;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction600(val_t self, char *from) {
-}
-val_t NEW_ReduceAction600_parser___ReduceAction600___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction600();
-  parser___ReduceAction600___init(self, init_table);
-  CHECKNEW_ReduceAction600(self, "parser::ReduceAction600::init for ReduceAction600");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction326::_goto */
+void INIT_ATTRIBUTES__ReduceAction326(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction326;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction601[48] = {
-  {(bigint) 947 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction601 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction601 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 947 /* 3: ReduceAction601 < ReduceAction601: superclass typecheck marker */},
+val_t NEW_ReduceAction326(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction326;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction326(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction326;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction326____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction326_parser___ReduceAction326___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10128;
+  fra.me.meth = LOCATE_NEW_ReduceAction326_parser___ReduceAction326___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10128 */
+  fra.me.REG[0] = NEW_ReduceAction326();
+  INIT_ATTRIBUTES__ReduceAction326(fra.me.REG[0]);
+  parser___ReduceAction326___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction326(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction327[51] = {
+  {(bigint) 907 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction327 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction327 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 907 /* 4: ReduceAction327 < ReduceAction327: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89811,14 +109425,9 @@ const classtable_elt_t VFT_ReduceAction601[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction601 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction327 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89826,7 +109435,6 @@ const classtable_elt_t VFT_ReduceAction601[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89834,41 +109442,93 @@ const classtable_elt_t VFT_ReduceAction601[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction601 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction601___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction327 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction327___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction601 < ReduceAction601: superclass init_table position */},
-  {(bigint) parser___ReduceAction601___init},
+  {(bigint) 2 /* 49: ReduceAction327 < ReduceAction327: superclass init_table position */},
+  {(bigint) parser___ReduceAction327___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction601(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction601;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction601(val_t self, char *from) {
-}
-val_t NEW_ReduceAction601_parser___ReduceAction601___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction601();
-  parser___ReduceAction601___init(self, init_table);
-  CHECKNEW_ReduceAction601(self, "parser::ReduceAction601::init for ReduceAction601");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction327::_goto */
+void INIT_ATTRIBUTES__ReduceAction327(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction327;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction602[48] = {
-  {(bigint) 943 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction602 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction602 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 943 /* 3: ReduceAction602 < ReduceAction602: superclass typecheck marker */},
+val_t NEW_ReduceAction327(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction327;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction327(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction327;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction327____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction327_parser___ReduceAction327___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10152;
+  fra.me.meth = LOCATE_NEW_ReduceAction327_parser___ReduceAction327___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10152 */
+  fra.me.REG[0] = NEW_ReduceAction327();
+  INIT_ATTRIBUTES__ReduceAction327(fra.me.REG[0]);
+  parser___ReduceAction327___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction327(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction328[51] = {
+  {(bigint) 903 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction328 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction328 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 903 /* 4: ReduceAction328 < ReduceAction328: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89881,14 +109541,9 @@ const classtable_elt_t VFT_ReduceAction602[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction602 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction328 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89896,7 +109551,6 @@ const classtable_elt_t VFT_ReduceAction602[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89904,41 +109558,93 @@ const classtable_elt_t VFT_ReduceAction602[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction602 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction602___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction328 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction328___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction602 < ReduceAction602: superclass init_table position */},
-  {(bigint) parser___ReduceAction602___init},
+  {(bigint) 2 /* 49: ReduceAction328 < ReduceAction328: superclass init_table position */},
+  {(bigint) parser___ReduceAction328___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction602(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction602;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction602(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction328::_goto */
+void INIT_ATTRIBUTES__ReduceAction328(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction328;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction602_parser___ReduceAction602___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction602();
-  parser___ReduceAction602___init(self, init_table);
-  CHECKNEW_ReduceAction602(self, "parser::ReduceAction602::init for ReduceAction602");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction603[48] = {
-  {(bigint) 939 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction603 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction603 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 939 /* 3: ReduceAction603 < ReduceAction603: superclass typecheck marker */},
+val_t NEW_ReduceAction328(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction328;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction328(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction328;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction328____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction328_parser___ReduceAction328___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10175;
+  fra.me.meth = LOCATE_NEW_ReduceAction328_parser___ReduceAction328___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10175 */
+  fra.me.REG[0] = NEW_ReduceAction328();
+  INIT_ATTRIBUTES__ReduceAction328(fra.me.REG[0]);
+  parser___ReduceAction328___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction328(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction329[51] = {
+  {(bigint) 899 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction329 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction329 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 899 /* 4: ReduceAction329 < ReduceAction329: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89951,14 +109657,9 @@ const classtable_elt_t VFT_ReduceAction603[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction603 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction329 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -89966,7 +109667,6 @@ const classtable_elt_t VFT_ReduceAction603[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -89974,41 +109674,93 @@ const classtable_elt_t VFT_ReduceAction603[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction603 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction603___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction329 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction329___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction603 < ReduceAction603: superclass init_table position */},
-  {(bigint) parser___ReduceAction603___init},
+  {(bigint) 2 /* 49: ReduceAction329 < ReduceAction329: superclass init_table position */},
+  {(bigint) parser___ReduceAction329___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction603(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction603;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction329::_goto */
+void INIT_ATTRIBUTES__ReduceAction329(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction329;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction603(val_t self, char *from) {
-}
-val_t NEW_ReduceAction603_parser___ReduceAction603___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction603();
-  parser___ReduceAction603___init(self, init_table);
-  CHECKNEW_ReduceAction603(self, "parser::ReduceAction603::init for ReduceAction603");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction604[48] = {
-  {(bigint) 935 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction604 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction604 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 935 /* 3: ReduceAction604 < ReduceAction604: superclass typecheck marker */},
+val_t NEW_ReduceAction329(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction329;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction329(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction329;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction329____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction329_parser___ReduceAction329___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10195;
+  fra.me.meth = LOCATE_NEW_ReduceAction329_parser___ReduceAction329___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10195 */
+  fra.me.REG[0] = NEW_ReduceAction329();
+  INIT_ATTRIBUTES__ReduceAction329(fra.me.REG[0]);
+  parser___ReduceAction329___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction329(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction336[51] = {
+  {(bigint) 891 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction336 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction336 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 891 /* 4: ReduceAction336 < ReduceAction336: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90021,14 +109773,9 @@ const classtable_elt_t VFT_ReduceAction604[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction604 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction336 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90036,7 +109783,6 @@ const classtable_elt_t VFT_ReduceAction604[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90044,41 +109790,93 @@ const classtable_elt_t VFT_ReduceAction604[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction604 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction604___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction336 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction336___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction604 < ReduceAction604: superclass init_table position */},
-  {(bigint) parser___ReduceAction604___init},
+  {(bigint) 2 /* 49: ReduceAction336 < ReduceAction336: superclass init_table position */},
+  {(bigint) parser___ReduceAction336___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction604(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction604;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction604(val_t self, char *from) {
-}
-val_t NEW_ReduceAction604_parser___ReduceAction604___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction604();
-  parser___ReduceAction604___init(self, init_table);
-  CHECKNEW_ReduceAction604(self, "parser::ReduceAction604::init for ReduceAction604");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction336::_goto */
+void INIT_ATTRIBUTES__ReduceAction336(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction336;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction605[48] = {
-  {(bigint) 931 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction605 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction605 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 931 /* 3: ReduceAction605 < ReduceAction605: superclass typecheck marker */},
+val_t NEW_ReduceAction336(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction336;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction336(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction336;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction336____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction336_parser___ReduceAction336___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10220;
+  fra.me.meth = LOCATE_NEW_ReduceAction336_parser___ReduceAction336___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10220 */
+  fra.me.REG[0] = NEW_ReduceAction336();
+  INIT_ATTRIBUTES__ReduceAction336(fra.me.REG[0]);
+  parser___ReduceAction336___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction336(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction337[51] = {
+  {(bigint) 887 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction337 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction337 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 887 /* 4: ReduceAction337 < ReduceAction337: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90091,14 +109889,9 @@ const classtable_elt_t VFT_ReduceAction605[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction605 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction337 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90106,7 +109899,6 @@ const classtable_elt_t VFT_ReduceAction605[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90114,41 +109906,93 @@ const classtable_elt_t VFT_ReduceAction605[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction605 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction605___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction337 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction337___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction605 < ReduceAction605: superclass init_table position */},
-  {(bigint) parser___ReduceAction605___init},
+  {(bigint) 2 /* 49: ReduceAction337 < ReduceAction337: superclass init_table position */},
+  {(bigint) parser___ReduceAction337___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction605(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction605;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction605(val_t self, char *from) {
-}
-val_t NEW_ReduceAction605_parser___ReduceAction605___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction605();
-  parser___ReduceAction605___init(self, init_table);
-  CHECKNEW_ReduceAction605(self, "parser::ReduceAction605::init for ReduceAction605");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction337::_goto */
+void INIT_ATTRIBUTES__ReduceAction337(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction337;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction606[48] = {
-  {(bigint) 927 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction606 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction606 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 927 /* 3: ReduceAction606 < ReduceAction606: superclass typecheck marker */},
+val_t NEW_ReduceAction337(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction337;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction337(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction337;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction337____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction337_parser___ReduceAction337___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10254;
+  fra.me.meth = LOCATE_NEW_ReduceAction337_parser___ReduceAction337___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10254 */
+  fra.me.REG[0] = NEW_ReduceAction337();
+  INIT_ATTRIBUTES__ReduceAction337(fra.me.REG[0]);
+  parser___ReduceAction337___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction337(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction338[51] = {
+  {(bigint) 883 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction338 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction338 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 883 /* 4: ReduceAction338 < ReduceAction338: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90161,14 +110005,9 @@ const classtable_elt_t VFT_ReduceAction606[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction606 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction338 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90176,7 +110015,6 @@ const classtable_elt_t VFT_ReduceAction606[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90184,41 +110022,93 @@ const classtable_elt_t VFT_ReduceAction606[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction606 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction606___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction338 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction338___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction606 < ReduceAction606: superclass init_table position */},
-  {(bigint) parser___ReduceAction606___init},
+  {(bigint) 2 /* 49: ReduceAction338 < ReduceAction338: superclass init_table position */},
+  {(bigint) parser___ReduceAction338___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction606(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction606;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction606(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction338::_goto */
+void INIT_ATTRIBUTES__ReduceAction338(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction338;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction606_parser___ReduceAction606___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction606();
-  parser___ReduceAction606___init(self, init_table);
-  CHECKNEW_ReduceAction606(self, "parser::ReduceAction606::init for ReduceAction606");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction607[48] = {
-  {(bigint) 923 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction607 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction607 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 923 /* 3: ReduceAction607 < ReduceAction607: superclass typecheck marker */},
+val_t NEW_ReduceAction338(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction338;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction338(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction338;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction338____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction338_parser___ReduceAction338___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10282;
+  fra.me.meth = LOCATE_NEW_ReduceAction338_parser___ReduceAction338___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10282 */
+  fra.me.REG[0] = NEW_ReduceAction338();
+  INIT_ATTRIBUTES__ReduceAction338(fra.me.REG[0]);
+  parser___ReduceAction338___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction338(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction339[51] = {
+  {(bigint) 879 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction339 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction339 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 879 /* 4: ReduceAction339 < ReduceAction339: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90231,14 +110121,9 @@ const classtable_elt_t VFT_ReduceAction607[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction607 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction339 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90246,7 +110131,6 @@ const classtable_elt_t VFT_ReduceAction607[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90254,41 +110138,93 @@ const classtable_elt_t VFT_ReduceAction607[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction607 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction607___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction339 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction339___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction607 < ReduceAction607: superclass init_table position */},
-  {(bigint) parser___ReduceAction607___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction607(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction607;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction607(val_t self, char *from) {
-}
-val_t NEW_ReduceAction607_parser___ReduceAction607___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction607();
-  parser___ReduceAction607___init(self, init_table);
-  CHECKNEW_ReduceAction607(self, "parser::ReduceAction607::init for ReduceAction607");
-  return self;
+  {(bigint) 2 /* 49: ReduceAction339 < ReduceAction339: superclass init_table position */},
+  {(bigint) parser___ReduceAction339___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction339::_goto */
+void INIT_ATTRIBUTES__ReduceAction339(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction339;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction608[48] = {
-  {(bigint) 919 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction608 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction608 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 919 /* 3: ReduceAction608 < ReduceAction608: superclass typecheck marker */},
+val_t NEW_ReduceAction339(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction339;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction339(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction339;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction339____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction339_parser___ReduceAction339___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10310;
+  fra.me.meth = LOCATE_NEW_ReduceAction339_parser___ReduceAction339___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10310 */
+  fra.me.REG[0] = NEW_ReduceAction339();
+  INIT_ATTRIBUTES__ReduceAction339(fra.me.REG[0]);
+  parser___ReduceAction339___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction339(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction340[51] = {
+  {(bigint) 871 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction340 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction340 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 871 /* 4: ReduceAction340 < ReduceAction340: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90301,14 +110237,9 @@ const classtable_elt_t VFT_ReduceAction608[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction608 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction340 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90316,7 +110247,6 @@ const classtable_elt_t VFT_ReduceAction608[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90324,41 +110254,93 @@ const classtable_elt_t VFT_ReduceAction608[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction608 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction608___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction340 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction340___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction608 < ReduceAction608: superclass init_table position */},
-  {(bigint) parser___ReduceAction608___init},
+  {(bigint) 2 /* 49: ReduceAction340 < ReduceAction340: superclass init_table position */},
+  {(bigint) parser___ReduceAction340___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction608(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction608;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction608(val_t self, char *from) {
-}
-val_t NEW_ReduceAction608_parser___ReduceAction608___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction608();
-  parser___ReduceAction608___init(self, init_table);
-  CHECKNEW_ReduceAction608(self, "parser::ReduceAction608::init for ReduceAction608");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction340::_goto */
+void INIT_ATTRIBUTES__ReduceAction340(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction340;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction609[48] = {
-  {(bigint) 915 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction609 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction609 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 915 /* 3: ReduceAction609 < ReduceAction609: superclass typecheck marker */},
+val_t NEW_ReduceAction340(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction340;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction340(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction340;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction340____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction340_parser___ReduceAction340___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10329;
+  fra.me.meth = LOCATE_NEW_ReduceAction340_parser___ReduceAction340___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10329 */
+  fra.me.REG[0] = NEW_ReduceAction340();
+  INIT_ATTRIBUTES__ReduceAction340(fra.me.REG[0]);
+  parser___ReduceAction340___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction340(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction341[51] = {
+  {(bigint) 867 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction341 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction341 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 867 /* 4: ReduceAction341 < ReduceAction341: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90371,14 +110353,9 @@ const classtable_elt_t VFT_ReduceAction609[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction609 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction341 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90386,7 +110363,6 @@ const classtable_elt_t VFT_ReduceAction609[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90394,41 +110370,93 @@ const classtable_elt_t VFT_ReduceAction609[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction609 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction609___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction341 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction341___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction609 < ReduceAction609: superclass init_table position */},
-  {(bigint) parser___ReduceAction609___init},
+  {(bigint) 2 /* 49: ReduceAction341 < ReduceAction341: superclass init_table position */},
+  {(bigint) parser___ReduceAction341___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction609(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction609;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction609(val_t self, char *from) {
-}
-val_t NEW_ReduceAction609_parser___ReduceAction609___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction609();
-  parser___ReduceAction609___init(self, init_table);
-  CHECKNEW_ReduceAction609(self, "parser::ReduceAction609::init for ReduceAction609");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction341::_goto */
+void INIT_ATTRIBUTES__ReduceAction341(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction341;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction610[48] = {
-  {(bigint) 907 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction610 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction610 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 907 /* 3: ReduceAction610 < ReduceAction610: superclass typecheck marker */},
+val_t NEW_ReduceAction341(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction341;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction341(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction341;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction341____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction341_parser___ReduceAction341___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10346;
+  fra.me.meth = LOCATE_NEW_ReduceAction341_parser___ReduceAction341___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10346 */
+  fra.me.REG[0] = NEW_ReduceAction341();
+  INIT_ATTRIBUTES__ReduceAction341(fra.me.REG[0]);
+  parser___ReduceAction341___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction341(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction342[51] = {
+  {(bigint) 863 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction342 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction342 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 863 /* 4: ReduceAction342 < ReduceAction342: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90441,14 +110469,9 @@ const classtable_elt_t VFT_ReduceAction610[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction610 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction342 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90456,7 +110479,6 @@ const classtable_elt_t VFT_ReduceAction610[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90464,41 +110486,93 @@ const classtable_elt_t VFT_ReduceAction610[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction610 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction610___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction342 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction342___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction610 < ReduceAction610: superclass init_table position */},
-  {(bigint) parser___ReduceAction610___init},
+  {(bigint) 2 /* 49: ReduceAction342 < ReduceAction342: superclass init_table position */},
+  {(bigint) parser___ReduceAction342___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction610(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction610;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction610(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction342::_goto */
+void INIT_ATTRIBUTES__ReduceAction342(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction342;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction610_parser___ReduceAction610___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction610();
-  parser___ReduceAction610___init(self, init_table);
-  CHECKNEW_ReduceAction610(self, "parser::ReduceAction610::init for ReduceAction610");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction611[48] = {
-  {(bigint) 903 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction611 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction611 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 903 /* 3: ReduceAction611 < ReduceAction611: superclass typecheck marker */},
+val_t NEW_ReduceAction342(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction342;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction342(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction342;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction342____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction342_parser___ReduceAction342___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10363;
+  fra.me.meth = LOCATE_NEW_ReduceAction342_parser___ReduceAction342___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10363 */
+  fra.me.REG[0] = NEW_ReduceAction342();
+  INIT_ATTRIBUTES__ReduceAction342(fra.me.REG[0]);
+  parser___ReduceAction342___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction342(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction343[51] = {
+  {(bigint) 859 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction343 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction343 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 859 /* 4: ReduceAction343 < ReduceAction343: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90511,14 +110585,9 @@ const classtable_elt_t VFT_ReduceAction611[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction611 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction343 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90526,7 +110595,6 @@ const classtable_elt_t VFT_ReduceAction611[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90534,41 +110602,93 @@ const classtable_elt_t VFT_ReduceAction611[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction611 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction611___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction343 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction343___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction611 < ReduceAction611: superclass init_table position */},
-  {(bigint) parser___ReduceAction611___init},
+  {(bigint) 2 /* 49: ReduceAction343 < ReduceAction343: superclass init_table position */},
+  {(bigint) parser___ReduceAction343___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction611(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction611;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction343::_goto */
+void INIT_ATTRIBUTES__ReduceAction343(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction343;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction611(val_t self, char *from) {
-}
-val_t NEW_ReduceAction611_parser___ReduceAction611___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction611();
-  parser___ReduceAction611___init(self, init_table);
-  CHECKNEW_ReduceAction611(self, "parser::ReduceAction611::init for ReduceAction611");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction612[48] = {
-  {(bigint) 899 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction612 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction612 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 899 /* 3: ReduceAction612 < ReduceAction612: superclass typecheck marker */},
+val_t NEW_ReduceAction343(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction343;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction343(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction343;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction343____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction343_parser___ReduceAction343___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10380;
+  fra.me.meth = LOCATE_NEW_ReduceAction343_parser___ReduceAction343___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10380 */
+  fra.me.REG[0] = NEW_ReduceAction343();
+  INIT_ATTRIBUTES__ReduceAction343(fra.me.REG[0]);
+  parser___ReduceAction343___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction343(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction344[51] = {
+  {(bigint) 855 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction344 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction344 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 855 /* 4: ReduceAction344 < ReduceAction344: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90581,14 +110701,9 @@ const classtable_elt_t VFT_ReduceAction612[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction612 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction344 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90596,7 +110711,6 @@ const classtable_elt_t VFT_ReduceAction612[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90604,41 +110718,93 @@ const classtable_elt_t VFT_ReduceAction612[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction612 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction612___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction344 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction344___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction612 < ReduceAction612: superclass init_table position */},
-  {(bigint) parser___ReduceAction612___init},
+  {(bigint) 2 /* 49: ReduceAction344 < ReduceAction344: superclass init_table position */},
+  {(bigint) parser___ReduceAction344___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction612(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction612;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction612(val_t self, char *from) {
-}
-val_t NEW_ReduceAction612_parser___ReduceAction612___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction612();
-  parser___ReduceAction612___init(self, init_table);
-  CHECKNEW_ReduceAction612(self, "parser::ReduceAction612::init for ReduceAction612");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction344::_goto */
+void INIT_ATTRIBUTES__ReduceAction344(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction344;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction613[48] = {
-  {(bigint) 895 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction613 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction613 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 895 /* 3: ReduceAction613 < ReduceAction613: superclass typecheck marker */},
+val_t NEW_ReduceAction344(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction344;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction344(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction344;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction344____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction344_parser___ReduceAction344___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10397;
+  fra.me.meth = LOCATE_NEW_ReduceAction344_parser___ReduceAction344___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10397 */
+  fra.me.REG[0] = NEW_ReduceAction344();
+  INIT_ATTRIBUTES__ReduceAction344(fra.me.REG[0]);
+  parser___ReduceAction344___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction344(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction345[51] = {
+  {(bigint) 851 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction345 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction345 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 851 /* 4: ReduceAction345 < ReduceAction345: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90651,14 +110817,9 @@ const classtable_elt_t VFT_ReduceAction613[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction613 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction345 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90666,7 +110827,6 @@ const classtable_elt_t VFT_ReduceAction613[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90674,41 +110834,93 @@ const classtable_elt_t VFT_ReduceAction613[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction613 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction613___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction345 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction345___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction613 < ReduceAction613: superclass init_table position */},
-  {(bigint) parser___ReduceAction613___init},
+  {(bigint) 2 /* 49: ReduceAction345 < ReduceAction345: superclass init_table position */},
+  {(bigint) parser___ReduceAction345___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction613(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction613;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction613(val_t self, char *from) {
-}
-val_t NEW_ReduceAction613_parser___ReduceAction613___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction613();
-  parser___ReduceAction613___init(self, init_table);
-  CHECKNEW_ReduceAction613(self, "parser::ReduceAction613::init for ReduceAction613");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction345::_goto */
+void INIT_ATTRIBUTES__ReduceAction345(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction345;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction614[48] = {
-  {(bigint) 891 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction614 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction614 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 891 /* 3: ReduceAction614 < ReduceAction614: superclass typecheck marker */},
+val_t NEW_ReduceAction345(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction345;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction345(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction345;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction345____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction345_parser___ReduceAction345___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10414;
+  fra.me.meth = LOCATE_NEW_ReduceAction345_parser___ReduceAction345___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10414 */
+  fra.me.REG[0] = NEW_ReduceAction345();
+  INIT_ATTRIBUTES__ReduceAction345(fra.me.REG[0]);
+  parser___ReduceAction345___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction345(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction346[51] = {
+  {(bigint) 847 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction346 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction346 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 847 /* 4: ReduceAction346 < ReduceAction346: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90721,14 +110933,9 @@ const classtable_elt_t VFT_ReduceAction614[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction614 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction346 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90736,7 +110943,6 @@ const classtable_elt_t VFT_ReduceAction614[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90744,41 +110950,93 @@ const classtable_elt_t VFT_ReduceAction614[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction614 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction614___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction346 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction346___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction614 < ReduceAction614: superclass init_table position */},
-  {(bigint) parser___ReduceAction614___init},
+  {(bigint) 2 /* 49: ReduceAction346 < ReduceAction346: superclass init_table position */},
+  {(bigint) parser___ReduceAction346___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction614(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction614;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction614(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction346::_goto */
+void INIT_ATTRIBUTES__ReduceAction346(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction346;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction614_parser___ReduceAction614___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction614();
-  parser___ReduceAction614___init(self, init_table);
-  CHECKNEW_ReduceAction614(self, "parser::ReduceAction614::init for ReduceAction614");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction615[48] = {
-  {(bigint) 887 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction615 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction615 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 887 /* 3: ReduceAction615 < ReduceAction615: superclass typecheck marker */},
+val_t NEW_ReduceAction346(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction346;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction346(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction346;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction346____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction346_parser___ReduceAction346___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10431;
+  fra.me.meth = LOCATE_NEW_ReduceAction346_parser___ReduceAction346___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10431 */
+  fra.me.REG[0] = NEW_ReduceAction346();
+  INIT_ATTRIBUTES__ReduceAction346(fra.me.REG[0]);
+  parser___ReduceAction346___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction346(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction347[51] = {
+  {(bigint) 843 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction347 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction347 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 843 /* 4: ReduceAction347 < ReduceAction347: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90791,14 +111049,9 @@ const classtable_elt_t VFT_ReduceAction615[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction615 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction347 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90806,7 +111059,6 @@ const classtable_elt_t VFT_ReduceAction615[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90814,41 +111066,93 @@ const classtable_elt_t VFT_ReduceAction615[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction615 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction615___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction347 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction347___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction615 < ReduceAction615: superclass init_table position */},
-  {(bigint) parser___ReduceAction615___init},
+  {(bigint) 2 /* 49: ReduceAction347 < ReduceAction347: superclass init_table position */},
+  {(bigint) parser___ReduceAction347___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction615(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction615;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction347::_goto */
+void INIT_ATTRIBUTES__ReduceAction347(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction347;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction615(val_t self, char *from) {
-}
-val_t NEW_ReduceAction615_parser___ReduceAction615___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction615();
-  parser___ReduceAction615___init(self, init_table);
-  CHECKNEW_ReduceAction615(self, "parser::ReduceAction615::init for ReduceAction615");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction616[48] = {
-  {(bigint) 883 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction616 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction616 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 883 /* 3: ReduceAction616 < ReduceAction616: superclass typecheck marker */},
+val_t NEW_ReduceAction347(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction347;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction347(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction347;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction347____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction347_parser___ReduceAction347___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10448;
+  fra.me.meth = LOCATE_NEW_ReduceAction347_parser___ReduceAction347___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10448 */
+  fra.me.REG[0] = NEW_ReduceAction347();
+  INIT_ATTRIBUTES__ReduceAction347(fra.me.REG[0]);
+  parser___ReduceAction347___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction347(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction348[51] = {
+  {(bigint) 839 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction348 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction348 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 839 /* 4: ReduceAction348 < ReduceAction348: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90861,14 +111165,9 @@ const classtable_elt_t VFT_ReduceAction616[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction616 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction348 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90876,7 +111175,6 @@ const classtable_elt_t VFT_ReduceAction616[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90884,41 +111182,93 @@ const classtable_elt_t VFT_ReduceAction616[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction616 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction616___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction348 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction348___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction616 < ReduceAction616: superclass init_table position */},
-  {(bigint) parser___ReduceAction616___init},
+  {(bigint) 2 /* 49: ReduceAction348 < ReduceAction348: superclass init_table position */},
+  {(bigint) parser___ReduceAction348___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction616(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction616;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction616(val_t self, char *from) {
-}
-val_t NEW_ReduceAction616_parser___ReduceAction616___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction616();
-  parser___ReduceAction616___init(self, init_table);
-  CHECKNEW_ReduceAction616(self, "parser::ReduceAction616::init for ReduceAction616");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction348::_goto */
+void INIT_ATTRIBUTES__ReduceAction348(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction348;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction617[48] = {
-  {(bigint) 879 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction617 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction617 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 879 /* 3: ReduceAction617 < ReduceAction617: superclass typecheck marker */},
+val_t NEW_ReduceAction348(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction348;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction348(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction348;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction348____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction348_parser___ReduceAction348___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10465;
+  fra.me.meth = LOCATE_NEW_ReduceAction348_parser___ReduceAction348___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10465 */
+  fra.me.REG[0] = NEW_ReduceAction348();
+  INIT_ATTRIBUTES__ReduceAction348(fra.me.REG[0]);
+  parser___ReduceAction348___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction348(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction351[51] = {
+  {(bigint) 831 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction351 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction351 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 831 /* 4: ReduceAction351 < ReduceAction351: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90931,14 +111281,9 @@ const classtable_elt_t VFT_ReduceAction617[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction617 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction351 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -90946,7 +111291,6 @@ const classtable_elt_t VFT_ReduceAction617[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -90954,41 +111298,93 @@ const classtable_elt_t VFT_ReduceAction617[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction617 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction617___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction351 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction351___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction617 < ReduceAction617: superclass init_table position */},
-  {(bigint) parser___ReduceAction617___init},
+  {(bigint) 2 /* 49: ReduceAction351 < ReduceAction351: superclass init_table position */},
+  {(bigint) parser___ReduceAction351___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction617(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction617;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction617(val_t self, char *from) {
-}
-val_t NEW_ReduceAction617_parser___ReduceAction617___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction617();
-  parser___ReduceAction617___init(self, init_table);
-  CHECKNEW_ReduceAction617(self, "parser::ReduceAction617::init for ReduceAction617");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction351::_goto */
+void INIT_ATTRIBUTES__ReduceAction351(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction351;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction618[48] = {
-  {(bigint) 875 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction618 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction618 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 875 /* 3: ReduceAction618 < ReduceAction618: superclass typecheck marker */},
+val_t NEW_ReduceAction351(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction351;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction351(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction351;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction351____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction351_parser___ReduceAction351___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10497;
+  fra.me.meth = LOCATE_NEW_ReduceAction351_parser___ReduceAction351___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10497 */
+  fra.me.REG[0] = NEW_ReduceAction351();
+  INIT_ATTRIBUTES__ReduceAction351(fra.me.REG[0]);
+  parser___ReduceAction351___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction351(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction352[51] = {
+  {(bigint) 827 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction352 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction352 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 827 /* 4: ReduceAction352 < ReduceAction352: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91001,14 +111397,9 @@ const classtable_elt_t VFT_ReduceAction618[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction618 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction352 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91016,7 +111407,6 @@ const classtable_elt_t VFT_ReduceAction618[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91024,41 +111414,93 @@ const classtable_elt_t VFT_ReduceAction618[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction618 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction618___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction352 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction352___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction618 < ReduceAction618: superclass init_table position */},
-  {(bigint) parser___ReduceAction618___init},
+  {(bigint) 2 /* 49: ReduceAction352 < ReduceAction352: superclass init_table position */},
+  {(bigint) parser___ReduceAction352___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction618(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction618;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction618(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction352::_goto */
+void INIT_ATTRIBUTES__ReduceAction352(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction352;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction618_parser___ReduceAction618___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction618();
-  parser___ReduceAction618___init(self, init_table);
-  CHECKNEW_ReduceAction618(self, "parser::ReduceAction618::init for ReduceAction618");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction619[48] = {
-  {(bigint) 871 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction619 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction619 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 871 /* 3: ReduceAction619 < ReduceAction619: superclass typecheck marker */},
+val_t NEW_ReduceAction352(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction352;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction352(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction352;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction352____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction352_parser___ReduceAction352___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10534;
+  fra.me.meth = LOCATE_NEW_ReduceAction352_parser___ReduceAction352___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10534 */
+  fra.me.REG[0] = NEW_ReduceAction352();
+  INIT_ATTRIBUTES__ReduceAction352(fra.me.REG[0]);
+  parser___ReduceAction352___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction352(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction353[51] = {
+  {(bigint) 823 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction353 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction353 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 823 /* 4: ReduceAction353 < ReduceAction353: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91071,14 +111513,9 @@ const classtable_elt_t VFT_ReduceAction619[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction619 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction353 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91086,7 +111523,6 @@ const classtable_elt_t VFT_ReduceAction619[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91094,41 +111530,93 @@ const classtable_elt_t VFT_ReduceAction619[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction619 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction619___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction353 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction353___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction619 < ReduceAction619: superclass init_table position */},
-  {(bigint) parser___ReduceAction619___init},
+  {(bigint) 2 /* 49: ReduceAction353 < ReduceAction353: superclass init_table position */},
+  {(bigint) parser___ReduceAction353___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction619(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction619;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction353::_goto */
+void INIT_ATTRIBUTES__ReduceAction353(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction353;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction619(val_t self, char *from) {
-}
-val_t NEW_ReduceAction619_parser___ReduceAction619___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction619();
-  parser___ReduceAction619___init(self, init_table);
-  CHECKNEW_ReduceAction619(self, "parser::ReduceAction619::init for ReduceAction619");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction620[48] = {
-  {(bigint) 863 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction620 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction620 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 863 /* 3: ReduceAction620 < ReduceAction620: superclass typecheck marker */},
+val_t NEW_ReduceAction353(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction353;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction353(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction353;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction353____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction353_parser___ReduceAction353___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10559;
+  fra.me.meth = LOCATE_NEW_ReduceAction353_parser___ReduceAction353___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10559 */
+  fra.me.REG[0] = NEW_ReduceAction353();
+  INIT_ATTRIBUTES__ReduceAction353(fra.me.REG[0]);
+  parser___ReduceAction353___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction353(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction354[51] = {
+  {(bigint) 819 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction354 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction354 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 819 /* 4: ReduceAction354 < ReduceAction354: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91141,14 +111629,9 @@ const classtable_elt_t VFT_ReduceAction620[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction620 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction354 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91156,7 +111639,6 @@ const classtable_elt_t VFT_ReduceAction620[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91164,41 +111646,93 @@ const classtable_elt_t VFT_ReduceAction620[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction620 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction620___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction354 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction354___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction620 < ReduceAction620: superclass init_table position */},
-  {(bigint) parser___ReduceAction620___init},
+  {(bigint) 2 /* 49: ReduceAction354 < ReduceAction354: superclass init_table position */},
+  {(bigint) parser___ReduceAction354___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction620(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction620;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction620(val_t self, char *from) {
-}
-val_t NEW_ReduceAction620_parser___ReduceAction620___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction620();
-  parser___ReduceAction620___init(self, init_table);
-  CHECKNEW_ReduceAction620(self, "parser::ReduceAction620::init for ReduceAction620");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction354::_goto */
+void INIT_ATTRIBUTES__ReduceAction354(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction354;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction621[48] = {
-  {(bigint) 859 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction621 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction621 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 859 /* 3: ReduceAction621 < ReduceAction621: superclass typecheck marker */},
+val_t NEW_ReduceAction354(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction354;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction354(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction354;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction354____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction354_parser___ReduceAction354___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10588;
+  fra.me.meth = LOCATE_NEW_ReduceAction354_parser___ReduceAction354___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10588 */
+  fra.me.REG[0] = NEW_ReduceAction354();
+  INIT_ATTRIBUTES__ReduceAction354(fra.me.REG[0]);
+  parser___ReduceAction354___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction354(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction355[51] = {
+  {(bigint) 815 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction355 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction355 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 815 /* 4: ReduceAction355 < ReduceAction355: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91211,14 +111745,9 @@ const classtable_elt_t VFT_ReduceAction621[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction621 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction355 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91226,7 +111755,6 @@ const classtable_elt_t VFT_ReduceAction621[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91234,41 +111762,93 @@ const classtable_elt_t VFT_ReduceAction621[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction621 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction621___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction355 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction355___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction621 < ReduceAction621: superclass init_table position */},
-  {(bigint) parser___ReduceAction621___init},
+  {(bigint) 2 /* 49: ReduceAction355 < ReduceAction355: superclass init_table position */},
+  {(bigint) parser___ReduceAction355___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction621(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction621;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction621(val_t self, char *from) {
-}
-val_t NEW_ReduceAction621_parser___ReduceAction621___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction621();
-  parser___ReduceAction621___init(self, init_table);
-  CHECKNEW_ReduceAction621(self, "parser::ReduceAction621::init for ReduceAction621");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction355::_goto */
+void INIT_ATTRIBUTES__ReduceAction355(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction355;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction622[48] = {
-  {(bigint) 855 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction622 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction622 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 855 /* 3: ReduceAction622 < ReduceAction622: superclass typecheck marker */},
+val_t NEW_ReduceAction355(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction355;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction355(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction355;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction355____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction355_parser___ReduceAction355___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10612;
+  fra.me.meth = LOCATE_NEW_ReduceAction355_parser___ReduceAction355___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10612 */
+  fra.me.REG[0] = NEW_ReduceAction355();
+  INIT_ATTRIBUTES__ReduceAction355(fra.me.REG[0]);
+  parser___ReduceAction355___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction355(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction356[51] = {
+  {(bigint) 811 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction356 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction356 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 811 /* 4: ReduceAction356 < ReduceAction356: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91281,14 +111861,9 @@ const classtable_elt_t VFT_ReduceAction622[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction622 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction356 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91296,7 +111871,6 @@ const classtable_elt_t VFT_ReduceAction622[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91304,41 +111878,93 @@ const classtable_elt_t VFT_ReduceAction622[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction622 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction622___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction356 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction356___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction622 < ReduceAction622: superclass init_table position */},
-  {(bigint) parser___ReduceAction622___init},
+  {(bigint) 2 /* 49: ReduceAction356 < ReduceAction356: superclass init_table position */},
+  {(bigint) parser___ReduceAction356___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction622(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction622;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction622(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction356::_goto */
+void INIT_ATTRIBUTES__ReduceAction356(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction356;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction622_parser___ReduceAction622___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction622();
-  parser___ReduceAction622___init(self, init_table);
-  CHECKNEW_ReduceAction622(self, "parser::ReduceAction622::init for ReduceAction622");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction623[48] = {
-  {(bigint) 851 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction623 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction623 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 851 /* 3: ReduceAction623 < ReduceAction623: superclass typecheck marker */},
+val_t NEW_ReduceAction356(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction356;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction356(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction356;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction356____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction356_parser___ReduceAction356___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10629;
+  fra.me.meth = LOCATE_NEW_ReduceAction356_parser___ReduceAction356___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10629 */
+  fra.me.REG[0] = NEW_ReduceAction356();
+  INIT_ATTRIBUTES__ReduceAction356(fra.me.REG[0]);
+  parser___ReduceAction356___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction356(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction358[51] = {
+  {(bigint) 807 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction358 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction358 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 807 /* 4: ReduceAction358 < ReduceAction358: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91351,14 +111977,9 @@ const classtable_elt_t VFT_ReduceAction623[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction623 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction358 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91366,7 +111987,6 @@ const classtable_elt_t VFT_ReduceAction623[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91374,41 +111994,93 @@ const classtable_elt_t VFT_ReduceAction623[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction623 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction623___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction358 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction358___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction623 < ReduceAction623: superclass init_table position */},
-  {(bigint) parser___ReduceAction623___init},
+  {(bigint) 2 /* 49: ReduceAction358 < ReduceAction358: superclass init_table position */},
+  {(bigint) parser___ReduceAction358___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction623(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction623;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction358::_goto */
+void INIT_ATTRIBUTES__ReduceAction358(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction358;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction623(val_t self, char *from) {
-}
-val_t NEW_ReduceAction623_parser___ReduceAction623___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction623();
-  parser___ReduceAction623___init(self, init_table);
-  CHECKNEW_ReduceAction623(self, "parser::ReduceAction623::init for ReduceAction623");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction624[48] = {
-  {(bigint) 847 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction624 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction624 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 847 /* 3: ReduceAction624 < ReduceAction624: superclass typecheck marker */},
+val_t NEW_ReduceAction358(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction358;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction358(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction358;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction358____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction358_parser___ReduceAction358___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10646;
+  fra.me.meth = LOCATE_NEW_ReduceAction358_parser___ReduceAction358___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10646 */
+  fra.me.REG[0] = NEW_ReduceAction358();
+  INIT_ATTRIBUTES__ReduceAction358(fra.me.REG[0]);
+  parser___ReduceAction358___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction358(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction359[51] = {
+  {(bigint) 803 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction359 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction359 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 803 /* 4: ReduceAction359 < ReduceAction359: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91421,14 +112093,9 @@ const classtable_elt_t VFT_ReduceAction624[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction624 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction359 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91436,7 +112103,6 @@ const classtable_elt_t VFT_ReduceAction624[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91444,44 +112110,93 @@ const classtable_elt_t VFT_ReduceAction624[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction624 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction624___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction359 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction359___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction624 < ReduceAction624: superclass init_table position */},
-  {(bigint) parser___ReduceAction624___init},
+  {(bigint) 2 /* 49: ReduceAction359 < ReduceAction359: superclass init_table position */},
+  {(bigint) parser___ReduceAction359___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction624(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction624;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction624(val_t self, char *from) {
-}
-val_t NEW_ReduceAction624_parser___ReduceAction624___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction624();
-  parser___ReduceAction624___init(self, init_table);
-  CHECKNEW_ReduceAction624(self, "parser::ReduceAction624::init for ReduceAction624");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction359::_goto */
+void INIT_ATTRIBUTES__ReduceAction359(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction359;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction625[48] = {
-  {(bigint) 843 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction625 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction625 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 843 /* 3: ReduceAction625 < ReduceAction625: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ReduceAction359(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction359;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction359(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction359;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction359____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction359_parser___ReduceAction359___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10663;
+  fra.me.meth = LOCATE_NEW_ReduceAction359_parser___ReduceAction359___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10663 */
+  fra.me.REG[0] = NEW_ReduceAction359();
+  INIT_ATTRIBUTES__ReduceAction359(fra.me.REG[0]);
+  parser___ReduceAction359___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction359(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction360[51] = {
+  {(bigint) 795 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction360 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction360 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 795 /* 4: ReduceAction360 < ReduceAction360: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91491,14 +112206,12 @@ const classtable_elt_t VFT_ReduceAction625[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction625 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction360 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91506,7 +112219,6 @@ const classtable_elt_t VFT_ReduceAction625[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91514,41 +112226,93 @@ const classtable_elt_t VFT_ReduceAction625[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction625 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction625___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction360 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction360___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction625 < ReduceAction625: superclass init_table position */},
-  {(bigint) parser___ReduceAction625___init},
+  {(bigint) 2 /* 49: ReduceAction360 < ReduceAction360: superclass init_table position */},
+  {(bigint) parser___ReduceAction360___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction625(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction625;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction360::_goto */
+void INIT_ATTRIBUTES__ReduceAction360(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction360;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction625(val_t self, char *from) {
-}
-val_t NEW_ReduceAction625_parser___ReduceAction625___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction625();
-  parser___ReduceAction625___init(self, init_table);
-  CHECKNEW_ReduceAction625(self, "parser::ReduceAction625::init for ReduceAction625");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction626[48] = {
-  {(bigint) 839 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction626 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction626 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 839 /* 3: ReduceAction626 < ReduceAction626: superclass typecheck marker */},
+val_t NEW_ReduceAction360(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction360;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction360(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction360;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction360____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction360_parser___ReduceAction360___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10684;
+  fra.me.meth = LOCATE_NEW_ReduceAction360_parser___ReduceAction360___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10684 */
+  fra.me.REG[0] = NEW_ReduceAction360();
+  INIT_ATTRIBUTES__ReduceAction360(fra.me.REG[0]);
+  parser___ReduceAction360___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction360(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction361[51] = {
+  {(bigint) 791 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction361 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction361 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 791 /* 4: ReduceAction361 < ReduceAction361: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91561,14 +112325,9 @@ const classtable_elt_t VFT_ReduceAction626[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction626 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction361 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91576,7 +112335,6 @@ const classtable_elt_t VFT_ReduceAction626[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91584,41 +112342,93 @@ const classtable_elt_t VFT_ReduceAction626[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction626 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction626___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction361 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction361___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction626 < ReduceAction626: superclass init_table position */},
-  {(bigint) parser___ReduceAction626___init},
+  {(bigint) 2 /* 49: ReduceAction361 < ReduceAction361: superclass init_table position */},
+  {(bigint) parser___ReduceAction361___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction626(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction626;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction626(val_t self, char *from) {
-}
-val_t NEW_ReduceAction626_parser___ReduceAction626___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction626();
-  parser___ReduceAction626___init(self, init_table);
-  CHECKNEW_ReduceAction626(self, "parser::ReduceAction626::init for ReduceAction626");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction361::_goto */
+void INIT_ATTRIBUTES__ReduceAction361(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction361;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction627[48] = {
-  {(bigint) 835 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction627 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction627 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 835 /* 3: ReduceAction627 < ReduceAction627: superclass typecheck marker */},
+val_t NEW_ReduceAction361(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction361;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction361(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction361;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction361____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction361_parser___ReduceAction361___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10709;
+  fra.me.meth = LOCATE_NEW_ReduceAction361_parser___ReduceAction361___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10709 */
+  fra.me.REG[0] = NEW_ReduceAction361();
+  INIT_ATTRIBUTES__ReduceAction361(fra.me.REG[0]);
+  parser___ReduceAction361___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction361(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction363[51] = {
+  {(bigint) 787 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction363 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction363 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 787 /* 4: ReduceAction363 < ReduceAction363: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91631,14 +112441,9 @@ const classtable_elt_t VFT_ReduceAction627[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction627 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction363 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91646,7 +112451,6 @@ const classtable_elt_t VFT_ReduceAction627[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91654,41 +112458,93 @@ const classtable_elt_t VFT_ReduceAction627[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction627 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction627___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction363 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction363___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction627 < ReduceAction627: superclass init_table position */},
-  {(bigint) parser___ReduceAction627___init},
+  {(bigint) 2 /* 49: ReduceAction363 < ReduceAction363: superclass init_table position */},
+  {(bigint) parser___ReduceAction363___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction627(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction627;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction627(val_t self, char *from) {
-}
-val_t NEW_ReduceAction627_parser___ReduceAction627___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction627();
-  parser___ReduceAction627___init(self, init_table);
-  CHECKNEW_ReduceAction627(self, "parser::ReduceAction627::init for ReduceAction627");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction363::_goto */
+void INIT_ATTRIBUTES__ReduceAction363(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction363;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction628[48] = {
-  {(bigint) 831 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction628 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction628 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 831 /* 3: ReduceAction628 < ReduceAction628: superclass typecheck marker */},
+val_t NEW_ReduceAction363(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction363;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction363(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction363;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction363____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction363_parser___ReduceAction363___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10721;
+  fra.me.meth = LOCATE_NEW_ReduceAction363_parser___ReduceAction363___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10721 */
+  fra.me.REG[0] = NEW_ReduceAction363();
+  INIT_ATTRIBUTES__ReduceAction363(fra.me.REG[0]);
+  parser___ReduceAction363___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction363(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction366[51] = {
+  {(bigint) 783 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction366 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction366 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 783 /* 4: ReduceAction366 < ReduceAction366: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91701,14 +112557,9 @@ const classtable_elt_t VFT_ReduceAction628[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction628 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction366 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91716,7 +112567,6 @@ const classtable_elt_t VFT_ReduceAction628[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91724,41 +112574,93 @@ const classtable_elt_t VFT_ReduceAction628[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction628 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction628___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction366 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction366___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction628 < ReduceAction628: superclass init_table position */},
-  {(bigint) parser___ReduceAction628___init},
+  {(bigint) 2 /* 49: ReduceAction366 < ReduceAction366: superclass init_table position */},
+  {(bigint) parser___ReduceAction366___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction628(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction628;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction628(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction366::_goto */
+void INIT_ATTRIBUTES__ReduceAction366(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction366;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction628_parser___ReduceAction628___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction628();
-  parser___ReduceAction628___init(self, init_table);
-  CHECKNEW_ReduceAction628(self, "parser::ReduceAction628::init for ReduceAction628");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction629[48] = {
-  {(bigint) 827 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction629 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction629 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 827 /* 3: ReduceAction629 < ReduceAction629: superclass typecheck marker */},
+val_t NEW_ReduceAction366(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction366;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction366(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction366;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction366____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction366_parser___ReduceAction366___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10738;
+  fra.me.meth = LOCATE_NEW_ReduceAction366_parser___ReduceAction366___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10738 */
+  fra.me.REG[0] = NEW_ReduceAction366();
+  INIT_ATTRIBUTES__ReduceAction366(fra.me.REG[0]);
+  parser___ReduceAction366___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction366(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction371[51] = {
+  {(bigint) 775 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction371 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction371 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 775 /* 4: ReduceAction371 < ReduceAction371: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91771,14 +112673,9 @@ const classtable_elt_t VFT_ReduceAction629[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction629 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction371 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91786,7 +112683,6 @@ const classtable_elt_t VFT_ReduceAction629[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91794,41 +112690,93 @@ const classtable_elt_t VFT_ReduceAction629[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction629 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction629___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction371 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction371___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction629 < ReduceAction629: superclass init_table position */},
-  {(bigint) parser___ReduceAction629___init},
+  {(bigint) 2 /* 49: ReduceAction371 < ReduceAction371: superclass init_table position */},
+  {(bigint) parser___ReduceAction371___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction629(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction629;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction371::_goto */
+void INIT_ATTRIBUTES__ReduceAction371(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction371;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction629(val_t self, char *from) {
-}
-val_t NEW_ReduceAction629_parser___ReduceAction629___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction629();
-  parser___ReduceAction629___init(self, init_table);
-  CHECKNEW_ReduceAction629(self, "parser::ReduceAction629::init for ReduceAction629");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction630[48] = {
-  {(bigint) 819 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction630 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction630 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 819 /* 3: ReduceAction630 < ReduceAction630: superclass typecheck marker */},
+val_t NEW_ReduceAction371(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction371;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction371(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction371;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction371____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction371_parser___ReduceAction371___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10754;
+  fra.me.meth = LOCATE_NEW_ReduceAction371_parser___ReduceAction371___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10754 */
+  fra.me.REG[0] = NEW_ReduceAction371();
+  INIT_ATTRIBUTES__ReduceAction371(fra.me.REG[0]);
+  parser___ReduceAction371___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction371(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction372[51] = {
+  {(bigint) 771 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction372 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction372 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 771 /* 4: ReduceAction372 < ReduceAction372: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91841,14 +112789,9 @@ const classtable_elt_t VFT_ReduceAction630[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction630 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction372 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91856,7 +112799,6 @@ const classtable_elt_t VFT_ReduceAction630[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91864,41 +112806,93 @@ const classtable_elt_t VFT_ReduceAction630[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction630 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction630___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction372 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction372___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction630 < ReduceAction630: superclass init_table position */},
-  {(bigint) parser___ReduceAction630___init},
+  {(bigint) 2 /* 49: ReduceAction372 < ReduceAction372: superclass init_table position */},
+  {(bigint) parser___ReduceAction372___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction630(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction630;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction630(val_t self, char *from) {
-}
-val_t NEW_ReduceAction630_parser___ReduceAction630___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction630();
-  parser___ReduceAction630___init(self, init_table);
-  CHECKNEW_ReduceAction630(self, "parser::ReduceAction630::init for ReduceAction630");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction372::_goto */
+void INIT_ATTRIBUTES__ReduceAction372(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction372;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction631[48] = {
-  {(bigint) 815 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction631 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction631 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 815 /* 3: ReduceAction631 < ReduceAction631: superclass typecheck marker */},
+val_t NEW_ReduceAction372(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction372;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction372(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction372;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction372____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction372_parser___ReduceAction372___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10772;
+  fra.me.meth = LOCATE_NEW_ReduceAction372_parser___ReduceAction372___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10772 */
+  fra.me.REG[0] = NEW_ReduceAction372();
+  INIT_ATTRIBUTES__ReduceAction372(fra.me.REG[0]);
+  parser___ReduceAction372___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction372(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction373[51] = {
+  {(bigint) 767 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction373 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction373 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 767 /* 4: ReduceAction373 < ReduceAction373: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91911,14 +112905,9 @@ const classtable_elt_t VFT_ReduceAction631[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction631 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction373 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91926,7 +112915,6 @@ const classtable_elt_t VFT_ReduceAction631[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -91934,41 +112922,93 @@ const classtable_elt_t VFT_ReduceAction631[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction631 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction631___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction373 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction373___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction631 < ReduceAction631: superclass init_table position */},
-  {(bigint) parser___ReduceAction631___init},
+  {(bigint) 2 /* 49: ReduceAction373 < ReduceAction373: superclass init_table position */},
+  {(bigint) parser___ReduceAction373___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction631(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction631;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction631(val_t self, char *from) {
-}
-val_t NEW_ReduceAction631_parser___ReduceAction631___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction631();
-  parser___ReduceAction631___init(self, init_table);
-  CHECKNEW_ReduceAction631(self, "parser::ReduceAction631::init for ReduceAction631");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction373::_goto */
+void INIT_ATTRIBUTES__ReduceAction373(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction373;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction632[48] = {
-  {(bigint) 811 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction632 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction632 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 811 /* 3: ReduceAction632 < ReduceAction632: superclass typecheck marker */},
+val_t NEW_ReduceAction373(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction373;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction373(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction373;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction373____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction373_parser___ReduceAction373___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10788;
+  fra.me.meth = LOCATE_NEW_ReduceAction373_parser___ReduceAction373___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10788 */
+  fra.me.REG[0] = NEW_ReduceAction373();
+  INIT_ATTRIBUTES__ReduceAction373(fra.me.REG[0]);
+  parser___ReduceAction373___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction373(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction374[51] = {
+  {(bigint) 763 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction374 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction374 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 763 /* 4: ReduceAction374 < ReduceAction374: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91981,14 +113021,9 @@ const classtable_elt_t VFT_ReduceAction632[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction632 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction374 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -91996,7 +113031,6 @@ const classtable_elt_t VFT_ReduceAction632[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92004,41 +113038,93 @@ const classtable_elt_t VFT_ReduceAction632[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction632 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction632___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction374 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction374___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction632 < ReduceAction632: superclass init_table position */},
-  {(bigint) parser___ReduceAction632___init},
+  {(bigint) 2 /* 49: ReduceAction374 < ReduceAction374: superclass init_table position */},
+  {(bigint) parser___ReduceAction374___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction632(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction632;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction632(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction374::_goto */
+void INIT_ATTRIBUTES__ReduceAction374(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction374;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction632_parser___ReduceAction632___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction632();
-  parser___ReduceAction632___init(self, init_table);
-  CHECKNEW_ReduceAction632(self, "parser::ReduceAction632::init for ReduceAction632");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction633[48] = {
-  {(bigint) 807 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction633 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction633 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 807 /* 3: ReduceAction633 < ReduceAction633: superclass typecheck marker */},
+val_t NEW_ReduceAction374(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction374;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction374(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction374;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction374____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction374_parser___ReduceAction374___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10805;
+  fra.me.meth = LOCATE_NEW_ReduceAction374_parser___ReduceAction374___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10805 */
+  fra.me.REG[0] = NEW_ReduceAction374();
+  INIT_ATTRIBUTES__ReduceAction374(fra.me.REG[0]);
+  parser___ReduceAction374___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction374(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction375[51] = {
+  {(bigint) 759 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction375 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction375 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 759 /* 4: ReduceAction375 < ReduceAction375: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92051,14 +113137,9 @@ const classtable_elt_t VFT_ReduceAction633[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction633 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction375 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92066,7 +113147,6 @@ const classtable_elt_t VFT_ReduceAction633[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92074,41 +113154,93 @@ const classtable_elt_t VFT_ReduceAction633[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction633 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction633___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction375 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction375___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction633 < ReduceAction633: superclass init_table position */},
-  {(bigint) parser___ReduceAction633___init},
+  {(bigint) 2 /* 49: ReduceAction375 < ReduceAction375: superclass init_table position */},
+  {(bigint) parser___ReduceAction375___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction633(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction633;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction375::_goto */
+void INIT_ATTRIBUTES__ReduceAction375(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction375;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction633(val_t self, char *from) {
-}
-val_t NEW_ReduceAction633_parser___ReduceAction633___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction633();
-  parser___ReduceAction633___init(self, init_table);
-  CHECKNEW_ReduceAction633(self, "parser::ReduceAction633::init for ReduceAction633");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction634[48] = {
-  {(bigint) 803 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction634 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction634 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 803 /* 3: ReduceAction634 < ReduceAction634: superclass typecheck marker */},
+val_t NEW_ReduceAction375(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction375;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction375(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction375;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction375____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction375_parser___ReduceAction375___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10829;
+  fra.me.meth = LOCATE_NEW_ReduceAction375_parser___ReduceAction375___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10829 */
+  fra.me.REG[0] = NEW_ReduceAction375();
+  INIT_ATTRIBUTES__ReduceAction375(fra.me.REG[0]);
+  parser___ReduceAction375___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction375(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction376[51] = {
+  {(bigint) 755 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction376 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction376 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 755 /* 4: ReduceAction376 < ReduceAction376: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92121,14 +113253,9 @@ const classtable_elt_t VFT_ReduceAction634[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction634 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction376 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92136,7 +113263,6 @@ const classtable_elt_t VFT_ReduceAction634[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92144,41 +113270,93 @@ const classtable_elt_t VFT_ReduceAction634[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction634 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction634___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction376 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction376___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction634 < ReduceAction634: superclass init_table position */},
-  {(bigint) parser___ReduceAction634___init},
+  {(bigint) 2 /* 49: ReduceAction376 < ReduceAction376: superclass init_table position */},
+  {(bigint) parser___ReduceAction376___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction634(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction634;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction634(val_t self, char *from) {
-}
-val_t NEW_ReduceAction634_parser___ReduceAction634___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction634();
-  parser___ReduceAction634___init(self, init_table);
-  CHECKNEW_ReduceAction634(self, "parser::ReduceAction634::init for ReduceAction634");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction376::_goto */
+void INIT_ATTRIBUTES__ReduceAction376(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction376;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction635[48] = {
-  {(bigint) 799 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction635 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction635 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 799 /* 3: ReduceAction635 < ReduceAction635: superclass typecheck marker */},
+val_t NEW_ReduceAction376(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction376;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction376(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction376;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction376____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction376_parser___ReduceAction376___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10848;
+  fra.me.meth = LOCATE_NEW_ReduceAction376_parser___ReduceAction376___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10848 */
+  fra.me.REG[0] = NEW_ReduceAction376();
+  INIT_ATTRIBUTES__ReduceAction376(fra.me.REG[0]);
+  parser___ReduceAction376___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction376(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction377[51] = {
+  {(bigint) 751 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction377 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction377 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 751 /* 4: ReduceAction377 < ReduceAction377: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92191,14 +113369,9 @@ const classtable_elt_t VFT_ReduceAction635[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction635 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction377 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92206,7 +113379,6 @@ const classtable_elt_t VFT_ReduceAction635[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92214,41 +113386,93 @@ const classtable_elt_t VFT_ReduceAction635[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction635 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction635___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction377 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction377___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction635 < ReduceAction635: superclass init_table position */},
-  {(bigint) parser___ReduceAction635___init},
+  {(bigint) 2 /* 49: ReduceAction377 < ReduceAction377: superclass init_table position */},
+  {(bigint) parser___ReduceAction377___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction635(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction635;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction635(val_t self, char *from) {
-}
-val_t NEW_ReduceAction635_parser___ReduceAction635___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction635();
-  parser___ReduceAction635___init(self, init_table);
-  CHECKNEW_ReduceAction635(self, "parser::ReduceAction635::init for ReduceAction635");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction377::_goto */
+void INIT_ATTRIBUTES__ReduceAction377(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction377;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction636[48] = {
-  {(bigint) 795 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction636 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction636 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 795 /* 3: ReduceAction636 < ReduceAction636: superclass typecheck marker */},
+val_t NEW_ReduceAction377(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction377;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction377(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction377;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction377____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction377_parser___ReduceAction377___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10871;
+  fra.me.meth = LOCATE_NEW_ReduceAction377_parser___ReduceAction377___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10871 */
+  fra.me.REG[0] = NEW_ReduceAction377();
+  INIT_ATTRIBUTES__ReduceAction377(fra.me.REG[0]);
+  parser___ReduceAction377___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction377(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction378[51] = {
+  {(bigint) 747 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction378 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction378 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 747 /* 4: ReduceAction378 < ReduceAction378: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92261,14 +113485,9 @@ const classtable_elt_t VFT_ReduceAction636[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction636 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction378 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92276,7 +113495,6 @@ const classtable_elt_t VFT_ReduceAction636[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92284,41 +113502,93 @@ const classtable_elt_t VFT_ReduceAction636[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction636 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction636___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction378 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction378___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction636 < ReduceAction636: superclass init_table position */},
-  {(bigint) parser___ReduceAction636___init},
+  {(bigint) 2 /* 49: ReduceAction378 < ReduceAction378: superclass init_table position */},
+  {(bigint) parser___ReduceAction378___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction636(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction636;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction636(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction378::_goto */
+void INIT_ATTRIBUTES__ReduceAction378(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction378;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction636_parser___ReduceAction636___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction636();
-  parser___ReduceAction636___init(self, init_table);
-  CHECKNEW_ReduceAction636(self, "parser::ReduceAction636::init for ReduceAction636");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction637[48] = {
-  {(bigint) 791 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction637 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction637 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 791 /* 3: ReduceAction637 < ReduceAction637: superclass typecheck marker */},
+val_t NEW_ReduceAction378(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction378;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction378(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction378;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction378____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction378_parser___ReduceAction378___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10891;
+  fra.me.meth = LOCATE_NEW_ReduceAction378_parser___ReduceAction378___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10891 */
+  fra.me.REG[0] = NEW_ReduceAction378();
+  INIT_ATTRIBUTES__ReduceAction378(fra.me.REG[0]);
+  parser___ReduceAction378___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction378(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction379[51] = {
+  {(bigint) 743 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction379 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction379 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 743 /* 4: ReduceAction379 < ReduceAction379: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92331,14 +113601,9 @@ const classtable_elt_t VFT_ReduceAction637[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction637 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction379 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92346,7 +113611,6 @@ const classtable_elt_t VFT_ReduceAction637[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92354,41 +113618,93 @@ const classtable_elt_t VFT_ReduceAction637[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction637 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction637___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction379 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction379___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction637 < ReduceAction637: superclass init_table position */},
-  {(bigint) parser___ReduceAction637___init},
+  {(bigint) 2 /* 49: ReduceAction379 < ReduceAction379: superclass init_table position */},
+  {(bigint) parser___ReduceAction379___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction637(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction637;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction637(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction379::_goto */
+void INIT_ATTRIBUTES__ReduceAction379(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction379;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction637_parser___ReduceAction637___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction637();
-  parser___ReduceAction637___init(self, init_table);
-  CHECKNEW_ReduceAction637(self, "parser::ReduceAction637::init for ReduceAction637");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction638[48] = {
-  {(bigint) 787 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction638 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction638 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 787 /* 3: ReduceAction638 < ReduceAction638: superclass typecheck marker */},
+val_t NEW_ReduceAction379(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction379;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction379(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction379;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction379____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction379_parser___ReduceAction379___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10906;
+  fra.me.meth = LOCATE_NEW_ReduceAction379_parser___ReduceAction379___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10906 */
+  fra.me.REG[0] = NEW_ReduceAction379();
+  INIT_ATTRIBUTES__ReduceAction379(fra.me.REG[0]);
+  parser___ReduceAction379___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction379(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction380[51] = {
+  {(bigint) 739 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction380 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction380 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 739 /* 4: ReduceAction380 < ReduceAction380: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92401,14 +113717,9 @@ const classtable_elt_t VFT_ReduceAction638[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction638 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction380 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92416,7 +113727,6 @@ const classtable_elt_t VFT_ReduceAction638[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92424,41 +113734,93 @@ const classtable_elt_t VFT_ReduceAction638[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction638 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction638___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction380 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction380___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction638 < ReduceAction638: superclass init_table position */},
-  {(bigint) parser___ReduceAction638___init},
+  {(bigint) 2 /* 49: ReduceAction380 < ReduceAction380: superclass init_table position */},
+  {(bigint) parser___ReduceAction380___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction638(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction638;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction638(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction380::_goto */
+void INIT_ATTRIBUTES__ReduceAction380(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction380;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction638_parser___ReduceAction638___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction638();
-  parser___ReduceAction638___init(self, init_table);
-  CHECKNEW_ReduceAction638(self, "parser::ReduceAction638::init for ReduceAction638");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction639[48] = {
-  {(bigint) 783 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction639 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction639 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 783 /* 3: ReduceAction639 < ReduceAction639: superclass typecheck marker */},
+val_t NEW_ReduceAction380(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction380;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction380(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction380;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction380____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction380_parser___ReduceAction380___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10921;
+  fra.me.meth = LOCATE_NEW_ReduceAction380_parser___ReduceAction380___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10921 */
+  fra.me.REG[0] = NEW_ReduceAction380();
+  INIT_ATTRIBUTES__ReduceAction380(fra.me.REG[0]);
+  parser___ReduceAction380___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction380(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction381[51] = {
+  {(bigint) 735 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction381 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction381 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 735 /* 4: ReduceAction381 < ReduceAction381: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92471,14 +113833,9 @@ const classtable_elt_t VFT_ReduceAction639[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction639 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction381 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92486,7 +113843,6 @@ const classtable_elt_t VFT_ReduceAction639[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92494,41 +113850,93 @@ const classtable_elt_t VFT_ReduceAction639[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction639 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction639___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction381 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction381___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction639 < ReduceAction639: superclass init_table position */},
-  {(bigint) parser___ReduceAction639___init},
+  {(bigint) 2 /* 49: ReduceAction381 < ReduceAction381: superclass init_table position */},
+  {(bigint) parser___ReduceAction381___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction639(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction639;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction639(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction381::_goto */
+void INIT_ATTRIBUTES__ReduceAction381(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction381;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction639_parser___ReduceAction639___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction639();
-  parser___ReduceAction639___init(self, init_table);
-  CHECKNEW_ReduceAction639(self, "parser::ReduceAction639::init for ReduceAction639");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction640[48] = {
-  {(bigint) 775 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction640 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction640 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 775 /* 3: ReduceAction640 < ReduceAction640: superclass typecheck marker */},
+val_t NEW_ReduceAction381(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction381;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction381(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction381;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction381____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction381_parser___ReduceAction381___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10932;
+  fra.me.meth = LOCATE_NEW_ReduceAction381_parser___ReduceAction381___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10932 */
+  fra.me.REG[0] = NEW_ReduceAction381();
+  INIT_ATTRIBUTES__ReduceAction381(fra.me.REG[0]);
+  parser___ReduceAction381___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction381(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction383[51] = {
+  {(bigint) 731 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction383 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction383 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 731 /* 4: ReduceAction383 < ReduceAction383: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92541,14 +113949,9 @@ const classtable_elt_t VFT_ReduceAction640[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction640 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction383 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92556,7 +113959,6 @@ const classtable_elt_t VFT_ReduceAction640[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92564,41 +113966,93 @@ const classtable_elt_t VFT_ReduceAction640[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction640 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction640___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction383 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction383___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction640 < ReduceAction640: superclass init_table position */},
-  {(bigint) parser___ReduceAction640___init},
+  {(bigint) 2 /* 49: ReduceAction383 < ReduceAction383: superclass init_table position */},
+  {(bigint) parser___ReduceAction383___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction640(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction640;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction383::_goto */
+void INIT_ATTRIBUTES__ReduceAction383(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction383;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction640(val_t self, char *from) {
-}
-val_t NEW_ReduceAction640_parser___ReduceAction640___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction640();
-  parser___ReduceAction640___init(self, init_table);
-  CHECKNEW_ReduceAction640(self, "parser::ReduceAction640::init for ReduceAction640");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction641[48] = {
-  {(bigint) 771 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction641 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction641 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 771 /* 3: ReduceAction641 < ReduceAction641: superclass typecheck marker */},
+val_t NEW_ReduceAction383(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction383;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction383(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction383;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction383____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction383_parser___ReduceAction383___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10951;
+  fra.me.meth = LOCATE_NEW_ReduceAction383_parser___ReduceAction383___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10951 */
+  fra.me.REG[0] = NEW_ReduceAction383();
+  INIT_ATTRIBUTES__ReduceAction383(fra.me.REG[0]);
+  parser___ReduceAction383___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction383(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction384[51] = {
+  {(bigint) 727 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction384 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction384 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 727 /* 4: ReduceAction384 < ReduceAction384: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92611,14 +114065,9 @@ const classtable_elt_t VFT_ReduceAction641[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction641 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction384 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92626,7 +114075,6 @@ const classtable_elt_t VFT_ReduceAction641[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92634,41 +114082,93 @@ const classtable_elt_t VFT_ReduceAction641[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction641 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction641___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction384 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction384___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction641 < ReduceAction641: superclass init_table position */},
-  {(bigint) parser___ReduceAction641___init},
+  {(bigint) 2 /* 49: ReduceAction384 < ReduceAction384: superclass init_table position */},
+  {(bigint) parser___ReduceAction384___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction641(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction641;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction641(val_t self, char *from) {
-}
-val_t NEW_ReduceAction641_parser___ReduceAction641___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction641();
-  parser___ReduceAction641___init(self, init_table);
-  CHECKNEW_ReduceAction641(self, "parser::ReduceAction641::init for ReduceAction641");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction384::_goto */
+void INIT_ATTRIBUTES__ReduceAction384(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction384;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction642[48] = {
-  {(bigint) 767 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction642 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction642 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 767 /* 3: ReduceAction642 < ReduceAction642: superclass typecheck marker */},
+val_t NEW_ReduceAction384(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction384;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction384(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction384;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction384____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction384_parser___ReduceAction384___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10971;
+  fra.me.meth = LOCATE_NEW_ReduceAction384_parser___ReduceAction384___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10971 */
+  fra.me.REG[0] = NEW_ReduceAction384();
+  INIT_ATTRIBUTES__ReduceAction384(fra.me.REG[0]);
+  parser___ReduceAction384___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction384(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction386[51] = {
+  {(bigint) 723 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction386 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction386 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 723 /* 4: ReduceAction386 < ReduceAction386: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92681,14 +114181,9 @@ const classtable_elt_t VFT_ReduceAction642[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction642 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction386 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92696,7 +114191,6 @@ const classtable_elt_t VFT_ReduceAction642[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92704,41 +114198,93 @@ const classtable_elt_t VFT_ReduceAction642[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction642 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction642___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction386 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction386___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction642 < ReduceAction642: superclass init_table position */},
-  {(bigint) parser___ReduceAction642___init},
+  {(bigint) 2 /* 49: ReduceAction386 < ReduceAction386: superclass init_table position */},
+  {(bigint) parser___ReduceAction386___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction642(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction642;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction642(val_t self, char *from) {
-}
-val_t NEW_ReduceAction642_parser___ReduceAction642___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction642();
-  parser___ReduceAction642___init(self, init_table);
-  CHECKNEW_ReduceAction642(self, "parser::ReduceAction642::init for ReduceAction642");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction386::_goto */
+void INIT_ATTRIBUTES__ReduceAction386(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction386;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction643[48] = {
-  {(bigint) 763 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction643 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction643 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 763 /* 3: ReduceAction643 < ReduceAction643: superclass typecheck marker */},
+val_t NEW_ReduceAction386(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction386;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction386(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction386;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction386____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction386_parser___ReduceAction386___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10982;
+  fra.me.meth = LOCATE_NEW_ReduceAction386_parser___ReduceAction386___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10982 */
+  fra.me.REG[0] = NEW_ReduceAction386();
+  INIT_ATTRIBUTES__ReduceAction386(fra.me.REG[0]);
+  parser___ReduceAction386___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction386(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction387[51] = {
+  {(bigint) 719 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction387 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction387 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 719 /* 4: ReduceAction387 < ReduceAction387: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92751,14 +114297,9 @@ const classtable_elt_t VFT_ReduceAction643[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction643 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction387 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92766,7 +114307,6 @@ const classtable_elt_t VFT_ReduceAction643[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92774,41 +114314,93 @@ const classtable_elt_t VFT_ReduceAction643[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction643 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction643___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction387 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction387___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction643 < ReduceAction643: superclass init_table position */},
-  {(bigint) parser___ReduceAction643___init},
+  {(bigint) 2 /* 49: ReduceAction387 < ReduceAction387: superclass init_table position */},
+  {(bigint) parser___ReduceAction387___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction643(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction643;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction643(val_t self, char *from) {
-}
-val_t NEW_ReduceAction643_parser___ReduceAction643___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction643();
-  parser___ReduceAction643___init(self, init_table);
-  CHECKNEW_ReduceAction643(self, "parser::ReduceAction643::init for ReduceAction643");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction387::_goto */
+void INIT_ATTRIBUTES__ReduceAction387(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction387;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction644[48] = {
-  {(bigint) 759 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction644 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction644 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 759 /* 3: ReduceAction644 < ReduceAction644: superclass typecheck marker */},
+val_t NEW_ReduceAction387(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction387;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction387(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction387;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction387____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction387_parser___ReduceAction387___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 10995;
+  fra.me.meth = LOCATE_NEW_ReduceAction387_parser___ReduceAction387___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:10995 */
+  fra.me.REG[0] = NEW_ReduceAction387();
+  INIT_ATTRIBUTES__ReduceAction387(fra.me.REG[0]);
+  parser___ReduceAction387___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction387(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction388[51] = {
+  {(bigint) 715 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction388 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction388 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 715 /* 4: ReduceAction388 < ReduceAction388: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92821,14 +114413,9 @@ const classtable_elt_t VFT_ReduceAction644[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction644 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction388 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92836,7 +114423,6 @@ const classtable_elt_t VFT_ReduceAction644[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92844,41 +114430,93 @@ const classtable_elt_t VFT_ReduceAction644[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction644 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction644___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction388 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction388___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction644 < ReduceAction644: superclass init_table position */},
-  {(bigint) parser___ReduceAction644___init},
+  {(bigint) 2 /* 49: ReduceAction388 < ReduceAction388: superclass init_table position */},
+  {(bigint) parser___ReduceAction388___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction644(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction644;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction644(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction388::_goto */
+void INIT_ATTRIBUTES__ReduceAction388(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction388;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction644_parser___ReduceAction644___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction644();
-  parser___ReduceAction644___init(self, init_table);
-  CHECKNEW_ReduceAction644(self, "parser::ReduceAction644::init for ReduceAction644");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction645[48] = {
-  {(bigint) 755 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction645 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction645 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 755 /* 3: ReduceAction645 < ReduceAction645: superclass typecheck marker */},
+val_t NEW_ReduceAction388(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction388;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction388(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction388;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction388____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction388_parser___ReduceAction388___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11007;
+  fra.me.meth = LOCATE_NEW_ReduceAction388_parser___ReduceAction388___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11007 */
+  fra.me.REG[0] = NEW_ReduceAction388();
+  INIT_ATTRIBUTES__ReduceAction388(fra.me.REG[0]);
+  parser___ReduceAction388___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction388(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction389[51] = {
+  {(bigint) 711 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction389 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction389 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 711 /* 4: ReduceAction389 < ReduceAction389: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92891,14 +114529,9 @@ const classtable_elt_t VFT_ReduceAction645[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction645 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction389 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92906,7 +114539,6 @@ const classtable_elt_t VFT_ReduceAction645[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92914,41 +114546,93 @@ const classtable_elt_t VFT_ReduceAction645[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction645 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction645___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction389 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction389___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction645 < ReduceAction645: superclass init_table position */},
-  {(bigint) parser___ReduceAction645___init},
+  {(bigint) 2 /* 49: ReduceAction389 < ReduceAction389: superclass init_table position */},
+  {(bigint) parser___ReduceAction389___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction645(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction645;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction389::_goto */
+void INIT_ATTRIBUTES__ReduceAction389(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction389;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction645(val_t self, char *from) {
-}
-val_t NEW_ReduceAction645_parser___ReduceAction645___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction645();
-  parser___ReduceAction645___init(self, init_table);
-  CHECKNEW_ReduceAction645(self, "parser::ReduceAction645::init for ReduceAction645");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction646[48] = {
-  {(bigint) 751 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction646 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction646 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 751 /* 3: ReduceAction646 < ReduceAction646: superclass typecheck marker */},
+val_t NEW_ReduceAction389(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction389;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction389(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction389;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction389____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction389_parser___ReduceAction389___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11020;
+  fra.me.meth = LOCATE_NEW_ReduceAction389_parser___ReduceAction389___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11020 */
+  fra.me.REG[0] = NEW_ReduceAction389();
+  INIT_ATTRIBUTES__ReduceAction389(fra.me.REG[0]);
+  parser___ReduceAction389___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction389(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction637[51] = {
+  {(bigint) 595 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction637 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction637 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 595 /* 4: ReduceAction637 < ReduceAction637: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92961,14 +114645,9 @@ const classtable_elt_t VFT_ReduceAction646[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction646 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction637 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -92976,7 +114655,6 @@ const classtable_elt_t VFT_ReduceAction646[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -92984,41 +114662,93 @@ const classtable_elt_t VFT_ReduceAction646[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction646 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction646___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction637 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction637___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction646 < ReduceAction646: superclass init_table position */},
-  {(bigint) parser___ReduceAction646___init},
+  {(bigint) 2 /* 49: ReduceAction637 < ReduceAction637: superclass init_table position */},
+  {(bigint) parser___ReduceAction637___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction646(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction646;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction646(val_t self, char *from) {
-}
-val_t NEW_ReduceAction646_parser___ReduceAction646___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction646();
-  parser___ReduceAction646___init(self, init_table);
-  CHECKNEW_ReduceAction646(self, "parser::ReduceAction646::init for ReduceAction646");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction637::_goto */
+void INIT_ATTRIBUTES__ReduceAction637(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction637;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction647[48] = {
-  {(bigint) 747 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction647 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction647 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 747 /* 3: ReduceAction647 < ReduceAction647: superclass typecheck marker */},
+val_t NEW_ReduceAction637(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction637;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction637(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction637;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction637____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction637_parser___ReduceAction637___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11045;
+  fra.me.meth = LOCATE_NEW_ReduceAction637_parser___ReduceAction637___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11045 */
+  fra.me.REG[0] = NEW_ReduceAction637();
+  INIT_ATTRIBUTES__ReduceAction637(fra.me.REG[0]);
+  parser___ReduceAction637___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction637(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction638[51] = {
+  {(bigint) 591 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction638 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction638 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 591 /* 4: ReduceAction638 < ReduceAction638: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93031,14 +114761,9 @@ const classtable_elt_t VFT_ReduceAction647[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction647 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction638 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93046,7 +114771,6 @@ const classtable_elt_t VFT_ReduceAction647[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93054,41 +114778,93 @@ const classtable_elt_t VFT_ReduceAction647[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction647 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction647___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction638 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction638___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction647 < ReduceAction647: superclass init_table position */},
-  {(bigint) parser___ReduceAction647___init},
+  {(bigint) 2 /* 49: ReduceAction638 < ReduceAction638: superclass init_table position */},
+  {(bigint) parser___ReduceAction638___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction647(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction647;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction647(val_t self, char *from) {
-}
-val_t NEW_ReduceAction647_parser___ReduceAction647___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction647();
-  parser___ReduceAction647___init(self, init_table);
-  CHECKNEW_ReduceAction647(self, "parser::ReduceAction647::init for ReduceAction647");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction638::_goto */
+void INIT_ATTRIBUTES__ReduceAction638(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction638;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction648[48] = {
-  {(bigint) 743 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction648 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction648 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 743 /* 3: ReduceAction648 < ReduceAction648: superclass typecheck marker */},
+val_t NEW_ReduceAction638(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction638;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction638(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction638;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction638____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction638_parser___ReduceAction638___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11066;
+  fra.me.meth = LOCATE_NEW_ReduceAction638_parser___ReduceAction638___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11066 */
+  fra.me.REG[0] = NEW_ReduceAction638();
+  INIT_ATTRIBUTES__ReduceAction638(fra.me.REG[0]);
+  parser___ReduceAction638___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction638(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction639[51] = {
+  {(bigint) 587 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction639 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction639 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 587 /* 4: ReduceAction639 < ReduceAction639: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93101,14 +114877,9 @@ const classtable_elt_t VFT_ReduceAction648[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction648 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction639 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93116,7 +114887,6 @@ const classtable_elt_t VFT_ReduceAction648[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93124,41 +114894,93 @@ const classtable_elt_t VFT_ReduceAction648[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction648 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction648___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction639 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction639___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction648 < ReduceAction648: superclass init_table position */},
-  {(bigint) parser___ReduceAction648___init},
+  {(bigint) 2 /* 49: ReduceAction639 < ReduceAction639: superclass init_table position */},
+  {(bigint) parser___ReduceAction639___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction648(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction648;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction648(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction639::_goto */
+void INIT_ATTRIBUTES__ReduceAction639(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction639;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction648_parser___ReduceAction648___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction648();
-  parser___ReduceAction648___init(self, init_table);
-  CHECKNEW_ReduceAction648(self, "parser::ReduceAction648::init for ReduceAction648");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction649[48] = {
-  {(bigint) 739 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction649 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction649 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 739 /* 3: ReduceAction649 < ReduceAction649: superclass typecheck marker */},
+val_t NEW_ReduceAction639(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction639;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction639(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction639;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction639____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction639_parser___ReduceAction639___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11095;
+  fra.me.meth = LOCATE_NEW_ReduceAction639_parser___ReduceAction639___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11095 */
+  fra.me.REG[0] = NEW_ReduceAction639();
+  INIT_ATTRIBUTES__ReduceAction639(fra.me.REG[0]);
+  parser___ReduceAction639___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction639(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction642[51] = {
+  {(bigint) 579 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction642 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction642 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 579 /* 4: ReduceAction642 < ReduceAction642: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93171,14 +114993,9 @@ const classtable_elt_t VFT_ReduceAction649[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction649 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction642 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93186,7 +115003,6 @@ const classtable_elt_t VFT_ReduceAction649[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93194,41 +115010,93 @@ const classtable_elt_t VFT_ReduceAction649[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction649 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction649___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction642 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction642___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction649 < ReduceAction649: superclass init_table position */},
-  {(bigint) parser___ReduceAction649___init},
+  {(bigint) 2 /* 49: ReduceAction642 < ReduceAction642: superclass init_table position */},
+  {(bigint) parser___ReduceAction642___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction649(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction649;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction642::_goto */
+void INIT_ATTRIBUTES__ReduceAction642(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction642;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction649(val_t self, char *from) {
-}
-val_t NEW_ReduceAction649_parser___ReduceAction649___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction649();
-  parser___ReduceAction649___init(self, init_table);
-  CHECKNEW_ReduceAction649(self, "parser::ReduceAction649::init for ReduceAction649");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction650[48] = {
-  {(bigint) 731 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction650 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction650 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 731 /* 3: ReduceAction650 < ReduceAction650: superclass typecheck marker */},
+val_t NEW_ReduceAction642(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction642;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction642(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction642;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction642____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction642_parser___ReduceAction642___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11122;
+  fra.me.meth = LOCATE_NEW_ReduceAction642_parser___ReduceAction642___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11122 */
+  fra.me.REG[0] = NEW_ReduceAction642();
+  INIT_ATTRIBUTES__ReduceAction642(fra.me.REG[0]);
+  parser___ReduceAction642___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction642(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction655[51] = {
+  {(bigint) 571 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction655 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction655 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 571 /* 4: ReduceAction655 < ReduceAction655: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93241,14 +115109,9 @@ const classtable_elt_t VFT_ReduceAction650[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction650 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction655 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93256,7 +115119,6 @@ const classtable_elt_t VFT_ReduceAction650[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93264,41 +115126,93 @@ const classtable_elt_t VFT_ReduceAction650[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction650 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction650___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction655 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction655___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction650 < ReduceAction650: superclass init_table position */},
-  {(bigint) parser___ReduceAction650___init},
+  {(bigint) 2 /* 49: ReduceAction655 < ReduceAction655: superclass init_table position */},
+  {(bigint) parser___ReduceAction655___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction650(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction650;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction650(val_t self, char *from) {
-}
-val_t NEW_ReduceAction650_parser___ReduceAction650___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction650();
-  parser___ReduceAction650___init(self, init_table);
-  CHECKNEW_ReduceAction650(self, "parser::ReduceAction650::init for ReduceAction650");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction655::_goto */
+void INIT_ATTRIBUTES__ReduceAction655(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction655;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction651[48] = {
-  {(bigint) 727 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction651 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction651 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 727 /* 3: ReduceAction651 < ReduceAction651: superclass typecheck marker */},
+val_t NEW_ReduceAction655(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction655;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction655(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction655;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction655____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction655_parser___ReduceAction655___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11137;
+  fra.me.meth = LOCATE_NEW_ReduceAction655_parser___ReduceAction655___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11137 */
+  fra.me.REG[0] = NEW_ReduceAction655();
+  INIT_ATTRIBUTES__ReduceAction655(fra.me.REG[0]);
+  parser___ReduceAction655___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction655(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction656[51] = {
+  {(bigint) 567 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction656 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction656 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 567 /* 4: ReduceAction656 < ReduceAction656: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93311,14 +115225,9 @@ const classtable_elt_t VFT_ReduceAction651[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction651 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction656 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93326,7 +115235,6 @@ const classtable_elt_t VFT_ReduceAction651[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93334,41 +115242,93 @@ const classtable_elt_t VFT_ReduceAction651[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction651 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction651___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction656 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction656___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction651 < ReduceAction651: superclass init_table position */},
-  {(bigint) parser___ReduceAction651___init},
+  {(bigint) 2 /* 49: ReduceAction656 < ReduceAction656: superclass init_table position */},
+  {(bigint) parser___ReduceAction656___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction651(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction651;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction651(val_t self, char *from) {
-}
-val_t NEW_ReduceAction651_parser___ReduceAction651___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction651();
-  parser___ReduceAction651___init(self, init_table);
-  CHECKNEW_ReduceAction651(self, "parser::ReduceAction651::init for ReduceAction651");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction656::_goto */
+void INIT_ATTRIBUTES__ReduceAction656(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction656;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction652[48] = {
-  {(bigint) 723 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction652 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction652 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 723 /* 3: ReduceAction652 < ReduceAction652: superclass typecheck marker */},
+val_t NEW_ReduceAction656(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction656;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction656(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction656;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction656____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction656_parser___ReduceAction656___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11150;
+  fra.me.meth = LOCATE_NEW_ReduceAction656_parser___ReduceAction656___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11150 */
+  fra.me.REG[0] = NEW_ReduceAction656();
+  INIT_ATTRIBUTES__ReduceAction656(fra.me.REG[0]);
+  parser___ReduceAction656___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction656(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction663[51] = {
+  {(bigint) 559 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction663 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction663 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 559 /* 4: ReduceAction663 < ReduceAction663: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93381,14 +115341,9 @@ const classtable_elt_t VFT_ReduceAction652[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction652 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction663 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93396,7 +115351,6 @@ const classtable_elt_t VFT_ReduceAction652[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93404,41 +115358,93 @@ const classtable_elt_t VFT_ReduceAction652[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction652 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction652___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction663 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction663___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction652 < ReduceAction652: superclass init_table position */},
-  {(bigint) parser___ReduceAction652___init},
+  {(bigint) 2 /* 49: ReduceAction663 < ReduceAction663: superclass init_table position */},
+  {(bigint) parser___ReduceAction663___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction652(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction652;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction652(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction663::_goto */
+void INIT_ATTRIBUTES__ReduceAction663(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction663;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction652_parser___ReduceAction652___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction652();
-  parser___ReduceAction652___init(self, init_table);
-  CHECKNEW_ReduceAction652(self, "parser::ReduceAction652::init for ReduceAction652");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction653[48] = {
-  {(bigint) 719 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction653 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction653 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 719 /* 3: ReduceAction653 < ReduceAction653: superclass typecheck marker */},
+val_t NEW_ReduceAction663(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction663;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction663(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction663;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction663____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction663_parser___ReduceAction663___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11167;
+  fra.me.meth = LOCATE_NEW_ReduceAction663_parser___ReduceAction663___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11167 */
+  fra.me.REG[0] = NEW_ReduceAction663();
+  INIT_ATTRIBUTES__ReduceAction663(fra.me.REG[0]);
+  parser___ReduceAction663___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction663(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction664[51] = {
+  {(bigint) 555 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction664 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction664 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 555 /* 4: ReduceAction664 < ReduceAction664: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93451,14 +115457,9 @@ const classtable_elt_t VFT_ReduceAction653[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction653 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction664 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93466,7 +115467,6 @@ const classtable_elt_t VFT_ReduceAction653[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93474,41 +115474,93 @@ const classtable_elt_t VFT_ReduceAction653[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction653 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction653___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction664 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction664___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction653 < ReduceAction653: superclass init_table position */},
-  {(bigint) parser___ReduceAction653___init},
+  {(bigint) 2 /* 49: ReduceAction664 < ReduceAction664: superclass init_table position */},
+  {(bigint) parser___ReduceAction664___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction653(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction653;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction664::_goto */
+void INIT_ATTRIBUTES__ReduceAction664(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction664;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction653(val_t self, char *from) {
-}
-val_t NEW_ReduceAction653_parser___ReduceAction653___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction653();
-  parser___ReduceAction653___init(self, init_table);
-  CHECKNEW_ReduceAction653(self, "parser::ReduceAction653::init for ReduceAction653");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction654[48] = {
-  {(bigint) 715 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction654 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction654 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 715 /* 3: ReduceAction654 < ReduceAction654: superclass typecheck marker */},
+val_t NEW_ReduceAction664(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction664;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction664(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction664;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction664____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction664_parser___ReduceAction664___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11188;
+  fra.me.meth = LOCATE_NEW_ReduceAction664_parser___ReduceAction664___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11188 */
+  fra.me.REG[0] = NEW_ReduceAction664();
+  INIT_ATTRIBUTES__ReduceAction664(fra.me.REG[0]);
+  parser___ReduceAction664___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction664(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction665[51] = {
+  {(bigint) 551 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction665 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction665 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 551 /* 4: ReduceAction665 < ReduceAction665: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93521,14 +115573,9 @@ const classtable_elt_t VFT_ReduceAction654[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction654 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction665 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93536,7 +115583,6 @@ const classtable_elt_t VFT_ReduceAction654[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93544,41 +115590,93 @@ const classtable_elt_t VFT_ReduceAction654[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction654 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction654___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction665 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction665___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction654 < ReduceAction654: superclass init_table position */},
-  {(bigint) parser___ReduceAction654___init},
+  {(bigint) 2 /* 49: ReduceAction665 < ReduceAction665: superclass init_table position */},
+  {(bigint) parser___ReduceAction665___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction654(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction654;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction654(val_t self, char *from) {
-}
-val_t NEW_ReduceAction654_parser___ReduceAction654___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction654();
-  parser___ReduceAction654___init(self, init_table);
-  CHECKNEW_ReduceAction654(self, "parser::ReduceAction654::init for ReduceAction654");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction665::_goto */
+void INIT_ATTRIBUTES__ReduceAction665(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction665;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction655[48] = {
-  {(bigint) 711 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction655 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction655 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 711 /* 3: ReduceAction655 < ReduceAction655: superclass typecheck marker */},
+val_t NEW_ReduceAction665(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction665;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction665(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction665;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction665____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction665_parser___ReduceAction665___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11205;
+  fra.me.meth = LOCATE_NEW_ReduceAction665_parser___ReduceAction665___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11205 */
+  fra.me.REG[0] = NEW_ReduceAction665();
+  INIT_ATTRIBUTES__ReduceAction665(fra.me.REG[0]);
+  parser___ReduceAction665___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction665(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction666[51] = {
+  {(bigint) 547 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction666 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction666 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 547 /* 4: ReduceAction666 < ReduceAction666: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93591,14 +115689,9 @@ const classtable_elt_t VFT_ReduceAction655[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction655 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction666 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93606,7 +115699,6 @@ const classtable_elt_t VFT_ReduceAction655[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93614,41 +115706,93 @@ const classtable_elt_t VFT_ReduceAction655[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction655 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction655___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction666 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction666___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction655 < ReduceAction655: superclass init_table position */},
-  {(bigint) parser___ReduceAction655___init},
+  {(bigint) 2 /* 49: ReduceAction666 < ReduceAction666: superclass init_table position */},
+  {(bigint) parser___ReduceAction666___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction655(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction655;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction655(val_t self, char *from) {
-}
-val_t NEW_ReduceAction655_parser___ReduceAction655___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction655();
-  parser___ReduceAction655___init(self, init_table);
-  CHECKNEW_ReduceAction655(self, "parser::ReduceAction655::init for ReduceAction655");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction666::_goto */
+void INIT_ATTRIBUTES__ReduceAction666(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction666;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction656[48] = {
-  {(bigint) 707 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction656 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction656 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 707 /* 3: ReduceAction656 < ReduceAction656: superclass typecheck marker */},
+val_t NEW_ReduceAction666(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction666;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction666(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction666;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction666____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction666_parser___ReduceAction666___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11226;
+  fra.me.meth = LOCATE_NEW_ReduceAction666_parser___ReduceAction666___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11226 */
+  fra.me.REG[0] = NEW_ReduceAction666();
+  INIT_ATTRIBUTES__ReduceAction666(fra.me.REG[0]);
+  parser___ReduceAction666___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction666(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction667[51] = {
+  {(bigint) 543 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction667 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction667 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 543 /* 4: ReduceAction667 < ReduceAction667: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93661,14 +115805,9 @@ const classtable_elt_t VFT_ReduceAction656[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction656 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction667 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93676,7 +115815,6 @@ const classtable_elt_t VFT_ReduceAction656[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93684,41 +115822,93 @@ const classtable_elt_t VFT_ReduceAction656[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction656 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction656___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction667 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction667___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction656 < ReduceAction656: superclass init_table position */},
-  {(bigint) parser___ReduceAction656___init},
+  {(bigint) 2 /* 49: ReduceAction667 < ReduceAction667: superclass init_table position */},
+  {(bigint) parser___ReduceAction667___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction656(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction656;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction656(val_t self, char *from) {
-}
-val_t NEW_ReduceAction656_parser___ReduceAction656___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction656();
-  parser___ReduceAction656___init(self, init_table);
-  CHECKNEW_ReduceAction656(self, "parser::ReduceAction656::init for ReduceAction656");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction667::_goto */
+void INIT_ATTRIBUTES__ReduceAction667(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction667;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction657[48] = {
-  {(bigint) 703 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction657 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction657 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 703 /* 3: ReduceAction657 < ReduceAction657: superclass typecheck marker */},
+val_t NEW_ReduceAction667(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction667;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction667(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction667;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction667____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction667_parser___ReduceAction667___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11243;
+  fra.me.meth = LOCATE_NEW_ReduceAction667_parser___ReduceAction667___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11243 */
+  fra.me.REG[0] = NEW_ReduceAction667();
+  INIT_ATTRIBUTES__ReduceAction667(fra.me.REG[0]);
+  parser___ReduceAction667___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction667(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction668[51] = {
+  {(bigint) 539 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction668 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction668 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 539 /* 4: ReduceAction668 < ReduceAction668: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93731,14 +115921,9 @@ const classtable_elt_t VFT_ReduceAction657[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction657 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction668 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93746,7 +115931,6 @@ const classtable_elt_t VFT_ReduceAction657[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93754,41 +115938,93 @@ const classtable_elt_t VFT_ReduceAction657[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction657 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction657___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction668 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction668___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction657 < ReduceAction657: superclass init_table position */},
-  {(bigint) parser___ReduceAction657___init},
+  {(bigint) 2 /* 49: ReduceAction668 < ReduceAction668: superclass init_table position */},
+  {(bigint) parser___ReduceAction668___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction657(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction657;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction657(val_t self, char *from) {
-}
-val_t NEW_ReduceAction657_parser___ReduceAction657___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction657();
-  parser___ReduceAction657___init(self, init_table);
-  CHECKNEW_ReduceAction657(self, "parser::ReduceAction657::init for ReduceAction657");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction668::_goto */
+void INIT_ATTRIBUTES__ReduceAction668(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction668;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction658[48] = {
-  {(bigint) 699 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction658 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction658 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 699 /* 3: ReduceAction658 < ReduceAction658: superclass typecheck marker */},
+val_t NEW_ReduceAction668(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction668;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction668(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction668;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction668____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction668_parser___ReduceAction668___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11264;
+  fra.me.meth = LOCATE_NEW_ReduceAction668_parser___ReduceAction668___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11264 */
+  fra.me.REG[0] = NEW_ReduceAction668();
+  INIT_ATTRIBUTES__ReduceAction668(fra.me.REG[0]);
+  parser___ReduceAction668___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction668(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction669[51] = {
+  {(bigint) 535 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction669 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction669 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 535 /* 4: ReduceAction669 < ReduceAction669: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93801,14 +116037,9 @@ const classtable_elt_t VFT_ReduceAction658[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction658 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction669 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93816,7 +116047,6 @@ const classtable_elt_t VFT_ReduceAction658[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93824,41 +116054,93 @@ const classtable_elt_t VFT_ReduceAction658[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction658 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction658___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction669 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction669___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction658 < ReduceAction658: superclass init_table position */},
-  {(bigint) parser___ReduceAction658___init},
+  {(bigint) 2 /* 49: ReduceAction669 < ReduceAction669: superclass init_table position */},
+  {(bigint) parser___ReduceAction669___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction658(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction658;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction658(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction669::_goto */
+void INIT_ATTRIBUTES__ReduceAction669(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction669;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction658_parser___ReduceAction658___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction658();
-  parser___ReduceAction658___init(self, init_table);
-  CHECKNEW_ReduceAction658(self, "parser::ReduceAction658::init for ReduceAction658");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction659[48] = {
-  {(bigint) 695 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction659 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction659 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 695 /* 3: ReduceAction659 < ReduceAction659: superclass typecheck marker */},
+val_t NEW_ReduceAction669(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction669;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction669(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction669;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction669____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction669_parser___ReduceAction669___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11281;
+  fra.me.meth = LOCATE_NEW_ReduceAction669_parser___ReduceAction669___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11281 */
+  fra.me.REG[0] = NEW_ReduceAction669();
+  INIT_ATTRIBUTES__ReduceAction669(fra.me.REG[0]);
+  parser___ReduceAction669___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction669(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction670[51] = {
+  {(bigint) 527 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction670 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction670 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 527 /* 4: ReduceAction670 < ReduceAction670: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93871,14 +116153,9 @@ const classtable_elt_t VFT_ReduceAction659[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction659 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction670 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93886,7 +116163,6 @@ const classtable_elt_t VFT_ReduceAction659[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93894,41 +116170,93 @@ const classtable_elt_t VFT_ReduceAction659[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction659 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction659___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction670 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction670___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction659 < ReduceAction659: superclass init_table position */},
-  {(bigint) parser___ReduceAction659___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction659(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction659;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction659(val_t self, char *from) {
-}
-val_t NEW_ReduceAction659_parser___ReduceAction659___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction659();
-  parser___ReduceAction659___init(self, init_table);
-  CHECKNEW_ReduceAction659(self, "parser::ReduceAction659::init for ReduceAction659");
-  return self;
+  {(bigint) 2 /* 49: ReduceAction670 < ReduceAction670: superclass init_table position */},
+  {(bigint) parser___ReduceAction670___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ReduceAction670::_goto */
+void INIT_ATTRIBUTES__ReduceAction670(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction670;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction660[48] = {
-  {(bigint) 687 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction660 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction660 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 687 /* 3: ReduceAction660 < ReduceAction660: superclass typecheck marker */},
+val_t NEW_ReduceAction670(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction670;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction670(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction670;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction670____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction670_parser___ReduceAction670___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11302;
+  fra.me.meth = LOCATE_NEW_ReduceAction670_parser___ReduceAction670___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11302 */
+  fra.me.REG[0] = NEW_ReduceAction670();
+  INIT_ATTRIBUTES__ReduceAction670(fra.me.REG[0]);
+  parser___ReduceAction670___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction670(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction673[51] = {
+  {(bigint) 523 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction673 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction673 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 523 /* 4: ReduceAction673 < ReduceAction673: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93941,14 +116269,9 @@ const classtable_elt_t VFT_ReduceAction660[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction660 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction673 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -93956,7 +116279,6 @@ const classtable_elt_t VFT_ReduceAction660[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -93964,41 +116286,93 @@ const classtable_elt_t VFT_ReduceAction660[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction660 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction660___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction673 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction673___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction660 < ReduceAction660: superclass init_table position */},
-  {(bigint) parser___ReduceAction660___init},
+  {(bigint) 2 /* 49: ReduceAction673 < ReduceAction673: superclass init_table position */},
+  {(bigint) parser___ReduceAction673___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction660(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction660;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction660(val_t self, char *from) {
-}
-val_t NEW_ReduceAction660_parser___ReduceAction660___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction660();
-  parser___ReduceAction660___init(self, init_table);
-  CHECKNEW_ReduceAction660(self, "parser::ReduceAction660::init for ReduceAction660");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction673::_goto */
+void INIT_ATTRIBUTES__ReduceAction673(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction673;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction661[48] = {
-  {(bigint) 683 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction661 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction661 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 683 /* 3: ReduceAction661 < ReduceAction661: superclass typecheck marker */},
+val_t NEW_ReduceAction673(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction673;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction673(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction673;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction673____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction673_parser___ReduceAction673___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11319;
+  fra.me.meth = LOCATE_NEW_ReduceAction673_parser___ReduceAction673___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11319 */
+  fra.me.REG[0] = NEW_ReduceAction673();
+  INIT_ATTRIBUTES__ReduceAction673(fra.me.REG[0]);
+  parser___ReduceAction673___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction673(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction674[51] = {
+  {(bigint) 519 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction674 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction674 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 519 /* 4: ReduceAction674 < ReduceAction674: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94011,14 +116385,9 @@ const classtable_elt_t VFT_ReduceAction661[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction661 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction674 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94026,7 +116395,6 @@ const classtable_elt_t VFT_ReduceAction661[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94034,41 +116402,93 @@ const classtable_elt_t VFT_ReduceAction661[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction661 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction661___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction674 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction674___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction661 < ReduceAction661: superclass init_table position */},
-  {(bigint) parser___ReduceAction661___init},
+  {(bigint) 2 /* 49: ReduceAction674 < ReduceAction674: superclass init_table position */},
+  {(bigint) parser___ReduceAction674___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction661(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction661;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction661(val_t self, char *from) {
-}
-val_t NEW_ReduceAction661_parser___ReduceAction661___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction661();
-  parser___ReduceAction661___init(self, init_table);
-  CHECKNEW_ReduceAction661(self, "parser::ReduceAction661::init for ReduceAction661");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction674::_goto */
+void INIT_ATTRIBUTES__ReduceAction674(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction674;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction662[48] = {
-  {(bigint) 679 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction662 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction662 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 679 /* 3: ReduceAction662 < ReduceAction662: superclass typecheck marker */},
+val_t NEW_ReduceAction674(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction674;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction674(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction674;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction674____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction674_parser___ReduceAction674___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11340;
+  fra.me.meth = LOCATE_NEW_ReduceAction674_parser___ReduceAction674___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11340 */
+  fra.me.REG[0] = NEW_ReduceAction674();
+  INIT_ATTRIBUTES__ReduceAction674(fra.me.REG[0]);
+  parser___ReduceAction674___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction674(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction675[51] = {
+  {(bigint) 515 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction675 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction675 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 515 /* 4: ReduceAction675 < ReduceAction675: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94081,14 +116501,9 @@ const classtable_elt_t VFT_ReduceAction662[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction662 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction675 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94096,7 +116511,6 @@ const classtable_elt_t VFT_ReduceAction662[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94104,41 +116518,93 @@ const classtable_elt_t VFT_ReduceAction662[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction662 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction662___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction675 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction675___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction662 < ReduceAction662: superclass init_table position */},
-  {(bigint) parser___ReduceAction662___init},
+  {(bigint) 2 /* 49: ReduceAction675 < ReduceAction675: superclass init_table position */},
+  {(bigint) parser___ReduceAction675___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction662(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction662;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction662(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction675::_goto */
+void INIT_ATTRIBUTES__ReduceAction675(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction675;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction662_parser___ReduceAction662___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction662();
-  parser___ReduceAction662___init(self, init_table);
-  CHECKNEW_ReduceAction662(self, "parser::ReduceAction662::init for ReduceAction662");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction663[48] = {
-  {(bigint) 675 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction663 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction663 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 675 /* 3: ReduceAction663 < ReduceAction663: superclass typecheck marker */},
+val_t NEW_ReduceAction675(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction675;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction675(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction675;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction675____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction675_parser___ReduceAction675___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11357;
+  fra.me.meth = LOCATE_NEW_ReduceAction675_parser___ReduceAction675___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11357 */
+  fra.me.REG[0] = NEW_ReduceAction675();
+  INIT_ATTRIBUTES__ReduceAction675(fra.me.REG[0]);
+  parser___ReduceAction675___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction675(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction676[51] = {
+  {(bigint) 511 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction676 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction676 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 511 /* 4: ReduceAction676 < ReduceAction676: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94151,14 +116617,9 @@ const classtable_elt_t VFT_ReduceAction663[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction663 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction676 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94166,7 +116627,6 @@ const classtable_elt_t VFT_ReduceAction663[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94174,41 +116634,93 @@ const classtable_elt_t VFT_ReduceAction663[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction663 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction663___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction676 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction676___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction663 < ReduceAction663: superclass init_table position */},
-  {(bigint) parser___ReduceAction663___init},
+  {(bigint) 2 /* 49: ReduceAction676 < ReduceAction676: superclass init_table position */},
+  {(bigint) parser___ReduceAction676___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction663(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction663;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction663(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction676::_goto */
+void INIT_ATTRIBUTES__ReduceAction676(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction676;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction663_parser___ReduceAction663___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction663();
-  parser___ReduceAction663___init(self, init_table);
-  CHECKNEW_ReduceAction663(self, "parser::ReduceAction663::init for ReduceAction663");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction664[48] = {
-  {(bigint) 671 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction664 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction664 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 671 /* 3: ReduceAction664 < ReduceAction664: superclass typecheck marker */},
+val_t NEW_ReduceAction676(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction676;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction676(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction676;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction676____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction676_parser___ReduceAction676___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11378;
+  fra.me.meth = LOCATE_NEW_ReduceAction676_parser___ReduceAction676___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11378 */
+  fra.me.REG[0] = NEW_ReduceAction676();
+  INIT_ATTRIBUTES__ReduceAction676(fra.me.REG[0]);
+  parser___ReduceAction676___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction676(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction677[51] = {
+  {(bigint) 507 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction677 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction677 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 507 /* 4: ReduceAction677 < ReduceAction677: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94221,14 +116733,9 @@ const classtable_elt_t VFT_ReduceAction664[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction664 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction677 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94236,7 +116743,6 @@ const classtable_elt_t VFT_ReduceAction664[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94244,41 +116750,93 @@ const classtable_elt_t VFT_ReduceAction664[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction664 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction664___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction677 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction677___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction664 < ReduceAction664: superclass init_table position */},
-  {(bigint) parser___ReduceAction664___init},
+  {(bigint) 2 /* 49: ReduceAction677 < ReduceAction677: superclass init_table position */},
+  {(bigint) parser___ReduceAction677___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction664(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction664;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction664(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction677::_goto */
+void INIT_ATTRIBUTES__ReduceAction677(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction677;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction664_parser___ReduceAction664___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction664();
-  parser___ReduceAction664___init(self, init_table);
-  CHECKNEW_ReduceAction664(self, "parser::ReduceAction664::init for ReduceAction664");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction665[48] = {
-  {(bigint) 667 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction665 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction665 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 667 /* 3: ReduceAction665 < ReduceAction665: superclass typecheck marker */},
+val_t NEW_ReduceAction677(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction677;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction677(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction677;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction677____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction677_parser___ReduceAction677___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11395;
+  fra.me.meth = LOCATE_NEW_ReduceAction677_parser___ReduceAction677___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11395 */
+  fra.me.REG[0] = NEW_ReduceAction677();
+  INIT_ATTRIBUTES__ReduceAction677(fra.me.REG[0]);
+  parser___ReduceAction677___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction677(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction678[51] = {
+  {(bigint) 503 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction678 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction678 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 503 /* 4: ReduceAction678 < ReduceAction678: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94291,14 +116849,9 @@ const classtable_elt_t VFT_ReduceAction665[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction665 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction678 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94306,7 +116859,6 @@ const classtable_elt_t VFT_ReduceAction665[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94314,41 +116866,93 @@ const classtable_elt_t VFT_ReduceAction665[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction665 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction665___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction678 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction678___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction665 < ReduceAction665: superclass init_table position */},
-  {(bigint) parser___ReduceAction665___init},
+  {(bigint) 2 /* 49: ReduceAction678 < ReduceAction678: superclass init_table position */},
+  {(bigint) parser___ReduceAction678___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction665(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction665;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction665(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction678::_goto */
+void INIT_ATTRIBUTES__ReduceAction678(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction678;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction665_parser___ReduceAction665___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction665();
-  parser___ReduceAction665___init(self, init_table);
-  CHECKNEW_ReduceAction665(self, "parser::ReduceAction665::init for ReduceAction665");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction666[48] = {
-  {(bigint) 663 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction666 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction666 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 663 /* 3: ReduceAction666 < ReduceAction666: superclass typecheck marker */},
+val_t NEW_ReduceAction678(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction678;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction678(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction678;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction678____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction678_parser___ReduceAction678___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11416;
+  fra.me.meth = LOCATE_NEW_ReduceAction678_parser___ReduceAction678___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11416 */
+  fra.me.REG[0] = NEW_ReduceAction678();
+  INIT_ATTRIBUTES__ReduceAction678(fra.me.REG[0]);
+  parser___ReduceAction678___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction678(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction680[51] = {
+  {(bigint) 495 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction680 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction680 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 495 /* 4: ReduceAction680 < ReduceAction680: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94361,14 +116965,9 @@ const classtable_elt_t VFT_ReduceAction666[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction666 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction680 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94376,7 +116975,6 @@ const classtable_elt_t VFT_ReduceAction666[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94384,41 +116982,93 @@ const classtable_elt_t VFT_ReduceAction666[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction666 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction666___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction680 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction680___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction666 < ReduceAction666: superclass init_table position */},
-  {(bigint) parser___ReduceAction666___init},
+  {(bigint) 2 /* 49: ReduceAction680 < ReduceAction680: superclass init_table position */},
+  {(bigint) parser___ReduceAction680___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction666(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction666;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction666(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction680::_goto */
+void INIT_ATTRIBUTES__ReduceAction680(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction680;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction666_parser___ReduceAction666___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction666();
-  parser___ReduceAction666___init(self, init_table);
-  CHECKNEW_ReduceAction666(self, "parser::ReduceAction666::init for ReduceAction666");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction667[48] = {
-  {(bigint) 659 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction667 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction667 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 659 /* 3: ReduceAction667 < ReduceAction667: superclass typecheck marker */},
+val_t NEW_ReduceAction680(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction680;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction680(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction680;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction680____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction680_parser___ReduceAction680___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11437;
+  fra.me.meth = LOCATE_NEW_ReduceAction680_parser___ReduceAction680___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11437 */
+  fra.me.REG[0] = NEW_ReduceAction680();
+  INIT_ATTRIBUTES__ReduceAction680(fra.me.REG[0]);
+  parser___ReduceAction680___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction680(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction682[51] = {
+  {(bigint) 491 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction682 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction682 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 491 /* 4: ReduceAction682 < ReduceAction682: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94431,14 +117081,9 @@ const classtable_elt_t VFT_ReduceAction667[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction667 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction682 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94446,7 +117091,6 @@ const classtable_elt_t VFT_ReduceAction667[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94454,41 +117098,93 @@ const classtable_elt_t VFT_ReduceAction667[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction667 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction667___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction682 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction682___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction667 < ReduceAction667: superclass init_table position */},
-  {(bigint) parser___ReduceAction667___init},
+  {(bigint) 2 /* 49: ReduceAction682 < ReduceAction682: superclass init_table position */},
+  {(bigint) parser___ReduceAction682___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction667(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction667;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction667(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction682::_goto */
+void INIT_ATTRIBUTES__ReduceAction682(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction682;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction667_parser___ReduceAction667___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction667();
-  parser___ReduceAction667___init(self, init_table);
-  CHECKNEW_ReduceAction667(self, "parser::ReduceAction667::init for ReduceAction667");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction668[48] = {
-  {(bigint) 655 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction668 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction668 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 655 /* 3: ReduceAction668 < ReduceAction668: superclass typecheck marker */},
+val_t NEW_ReduceAction682(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction682;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction682(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction682;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction682____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction682_parser___ReduceAction682___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11458;
+  fra.me.meth = LOCATE_NEW_ReduceAction682_parser___ReduceAction682___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11458 */
+  fra.me.REG[0] = NEW_ReduceAction682();
+  INIT_ATTRIBUTES__ReduceAction682(fra.me.REG[0]);
+  parser___ReduceAction682___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction682(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction684[51] = {
+  {(bigint) 487 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction684 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction684 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 487 /* 4: ReduceAction684 < ReduceAction684: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94501,14 +117197,9 @@ const classtable_elt_t VFT_ReduceAction668[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction668 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction684 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94516,7 +117207,6 @@ const classtable_elt_t VFT_ReduceAction668[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94524,41 +117214,93 @@ const classtable_elt_t VFT_ReduceAction668[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction668 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction668___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction684 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction684___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction668 < ReduceAction668: superclass init_table position */},
-  {(bigint) parser___ReduceAction668___init},
+  {(bigint) 2 /* 49: ReduceAction684 < ReduceAction684: superclass init_table position */},
+  {(bigint) parser___ReduceAction684___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction668(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction668;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction668(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction684::_goto */
+void INIT_ATTRIBUTES__ReduceAction684(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction684;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction668_parser___ReduceAction668___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction668();
-  parser___ReduceAction668___init(self, init_table);
-  CHECKNEW_ReduceAction668(self, "parser::ReduceAction668::init for ReduceAction668");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction669[48] = {
-  {(bigint) 651 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction669 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction669 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 651 /* 3: ReduceAction669 < ReduceAction669: superclass typecheck marker */},
+val_t NEW_ReduceAction684(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction684;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction684(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction684;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction684____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction684_parser___ReduceAction684___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11478;
+  fra.me.meth = LOCATE_NEW_ReduceAction684_parser___ReduceAction684___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11478 */
+  fra.me.REG[0] = NEW_ReduceAction684();
+  INIT_ATTRIBUTES__ReduceAction684(fra.me.REG[0]);
+  parser___ReduceAction684___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction684(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction688[51] = {
+  {(bigint) 483 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction688 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction688 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 483 /* 4: ReduceAction688 < ReduceAction688: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94571,14 +117313,9 @@ const classtable_elt_t VFT_ReduceAction669[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction669 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction688 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94586,7 +117323,6 @@ const classtable_elt_t VFT_ReduceAction669[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94594,41 +117330,93 @@ const classtable_elt_t VFT_ReduceAction669[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction669 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction669___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction688 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction688___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction669 < ReduceAction669: superclass init_table position */},
-  {(bigint) parser___ReduceAction669___init},
+  {(bigint) 2 /* 49: ReduceAction688 < ReduceAction688: superclass init_table position */},
+  {(bigint) parser___ReduceAction688___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction669(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction669;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction669(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction688::_goto */
+void INIT_ATTRIBUTES__ReduceAction688(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction688;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction669_parser___ReduceAction669___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction669();
-  parser___ReduceAction669___init(self, init_table);
-  CHECKNEW_ReduceAction669(self, "parser::ReduceAction669::init for ReduceAction669");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction670[48] = {
-  {(bigint) 643 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction670 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction670 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 643 /* 3: ReduceAction670 < ReduceAction670: superclass typecheck marker */},
+val_t NEW_ReduceAction688(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction688;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction688(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction688;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction688____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction688_parser___ReduceAction688___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11499;
+  fra.me.meth = LOCATE_NEW_ReduceAction688_parser___ReduceAction688___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11499 */
+  fra.me.REG[0] = NEW_ReduceAction688();
+  INIT_ATTRIBUTES__ReduceAction688(fra.me.REG[0]);
+  parser___ReduceAction688___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction688(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction689[51] = {
+  {(bigint) 479 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction689 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction689 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 479 /* 4: ReduceAction689 < ReduceAction689: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94641,14 +117429,9 @@ const classtable_elt_t VFT_ReduceAction670[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction670 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction689 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94656,7 +117439,6 @@ const classtable_elt_t VFT_ReduceAction670[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94664,41 +117446,93 @@ const classtable_elt_t VFT_ReduceAction670[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction670 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction670___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction689 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction689___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction670 < ReduceAction670: superclass init_table position */},
-  {(bigint) parser___ReduceAction670___init},
+  {(bigint) 2 /* 49: ReduceAction689 < ReduceAction689: superclass init_table position */},
+  {(bigint) parser___ReduceAction689___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction670(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction670;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction670(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReduceAction689::_goto */
+void INIT_ATTRIBUTES__ReduceAction689(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction689;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction670_parser___ReduceAction670___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction670();
-  parser___ReduceAction670___init(self, init_table);
-  CHECKNEW_ReduceAction670(self, "parser::ReduceAction670::init for ReduceAction670");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction671[48] = {
-  {(bigint) 639 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction671 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction671 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 639 /* 3: ReduceAction671 < ReduceAction671: superclass typecheck marker */},
+val_t NEW_ReduceAction689(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction689;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction689(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction689;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction689____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction689_parser___ReduceAction689___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11516;
+  fra.me.meth = LOCATE_NEW_ReduceAction689_parser___ReduceAction689___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11516 */
+  fra.me.REG[0] = NEW_ReduceAction689();
+  INIT_ATTRIBUTES__ReduceAction689(fra.me.REG[0]);
+  parser___ReduceAction689___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction689(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction690[51] = {
+  {(bigint) 471 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction690 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction690 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 471 /* 4: ReduceAction690 < ReduceAction690: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94711,14 +117545,9 @@ const classtable_elt_t VFT_ReduceAction671[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction671 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction690 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94726,7 +117555,6 @@ const classtable_elt_t VFT_ReduceAction671[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94734,41 +117562,93 @@ const classtable_elt_t VFT_ReduceAction671[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction671 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction671___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction690 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction690___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction671 < ReduceAction671: superclass init_table position */},
-  {(bigint) parser___ReduceAction671___init},
+  {(bigint) 2 /* 49: ReduceAction690 < ReduceAction690: superclass init_table position */},
+  {(bigint) parser___ReduceAction690___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction671(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction671;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ReduceAction690::_goto */
+void INIT_ATTRIBUTES__ReduceAction690(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction690;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction671(val_t self, char *from) {
-}
-val_t NEW_ReduceAction671_parser___ReduceAction671___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction671();
-  parser___ReduceAction671___init(self, init_table);
-  CHECKNEW_ReduceAction671(self, "parser::ReduceAction671::init for ReduceAction671");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction672[48] = {
-  {(bigint) 635 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction672 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction672 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 635 /* 3: ReduceAction672 < ReduceAction672: superclass typecheck marker */},
+val_t NEW_ReduceAction690(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction690;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction690(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction690;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction690____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction690_parser___ReduceAction690___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11537;
+  fra.me.meth = LOCATE_NEW_ReduceAction690_parser___ReduceAction690___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11537 */
+  fra.me.REG[0] = NEW_ReduceAction690();
+  INIT_ATTRIBUTES__ReduceAction690(fra.me.REG[0]);
+  parser___ReduceAction690___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction690(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction691[51] = {
+  {(bigint) 467 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction691 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction691 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 467 /* 4: ReduceAction691 < ReduceAction691: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94781,14 +117661,9 @@ const classtable_elt_t VFT_ReduceAction672[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction672 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction691 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94796,7 +117671,6 @@ const classtable_elt_t VFT_ReduceAction672[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94804,41 +117678,93 @@ const classtable_elt_t VFT_ReduceAction672[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction672 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction672___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction691 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction691___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction672 < ReduceAction672: superclass init_table position */},
-  {(bigint) parser___ReduceAction672___init},
+  {(bigint) 2 /* 49: ReduceAction691 < ReduceAction691: superclass init_table position */},
+  {(bigint) parser___ReduceAction691___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction672(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction672;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction672(val_t self, char *from) {
-}
-val_t NEW_ReduceAction672_parser___ReduceAction672___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction672();
-  parser___ReduceAction672___init(self, init_table);
-  CHECKNEW_ReduceAction672(self, "parser::ReduceAction672::init for ReduceAction672");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction691::_goto */
+void INIT_ATTRIBUTES__ReduceAction691(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction691;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction673[48] = {
-  {(bigint) 631 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction673 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction673 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 631 /* 3: ReduceAction673 < ReduceAction673: superclass typecheck marker */},
+val_t NEW_ReduceAction691(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction691;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction691(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction691;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction691____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction691_parser___ReduceAction691___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11554;
+  fra.me.meth = LOCATE_NEW_ReduceAction691_parser___ReduceAction691___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11554 */
+  fra.me.REG[0] = NEW_ReduceAction691();
+  INIT_ATTRIBUTES__ReduceAction691(fra.me.REG[0]);
+  parser___ReduceAction691___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction691(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReduceAction692[51] = {
+  {(bigint) 463 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReduceAction692 < Object: superclass typecheck marker */},
+  {(bigint) 63 /* 3: ReduceAction692 < ReduceAction: superclass typecheck marker */},
+  {(bigint) 463 /* 4: ReduceAction692 < ReduceAction692: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94851,14 +117777,9 @@ const classtable_elt_t VFT_ReduceAction673[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction673 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ReduceAction692 < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94866,7 +117787,6 @@ const classtable_elt_t VFT_ReduceAction673[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94874,43 +117794,95 @@ const classtable_elt_t VFT_ReduceAction673[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction673 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction673___action},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: ReduceAction692 < ReduceAction: superclass init_table position */},
+  {(bigint) parser___ReduceAction692___action},
+  {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction673 < ReduceAction673: superclass init_table position */},
-  {(bigint) parser___ReduceAction673___init},
+  {(bigint) 2 /* 49: ReduceAction692 < ReduceAction692: superclass init_table position */},
+  {(bigint) parser___ReduceAction692___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction673(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction673;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction673(val_t self, char *from) {
-}
-val_t NEW_ReduceAction673_parser___ReduceAction673___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction673();
-  parser___ReduceAction673___init(self, init_table);
-  CHECKNEW_ReduceAction673(self, "parser::ReduceAction673::init for ReduceAction673");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReduceAction692::_goto */
+void INIT_ATTRIBUTES__ReduceAction692(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReduceAction692;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction674[48] = {
-  {(bigint) 627 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction674 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction674 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 627 /* 3: ReduceAction674 < ReduceAction674: superclass typecheck marker */},
+val_t NEW_ReduceAction692(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReduceAction692;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReduceAction692(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReduceAction692;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_parser___ReduceAction692____goto(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_goto", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReduceAction692_parser___ReduceAction692___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 11575;
+  fra.me.meth = LOCATE_NEW_ReduceAction692_parser___ReduceAction692___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./parser//parser.nit:11575 */
+  fra.me.REG[0] = NEW_ReduceAction692();
+  INIT_ATTRIBUTES__ReduceAction692(fra.me.REG[0]);
+  parser___ReduceAction692___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_ReduceAction692(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_PartialOrder[85] = {
+  {(bigint) 1863 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: PartialOrder < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 251 /* 5: PartialOrder < Collection: superclass typecheck marker */},
+  {(bigint) 1863 /* 6: PartialOrder < PartialOrder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94921,14 +117893,9 @@ const classtable_elt_t VFT_ReduceAction674[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction674 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: PartialOrder < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -94936,7 +117903,6 @@ const classtable_elt_t VFT_ReduceAction674[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -94944,41 +117910,137 @@ const classtable_elt_t VFT_ReduceAction674[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Collection___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction674 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction674___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction674 < ReduceAction674: superclass init_table position */},
-  {(bigint) parser___ReduceAction674___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) string___Collection___join},
+  {(bigint) array___Collection___to_a},
+  {(bigint) 0 /* 62: PartialOrder < Collection: superclass init_table position */},
+  {(bigint) partial_order___PartialOrder___iterator},
+  {(bigint) abstract_collection___Collection___iterate},
+  {(bigint) partial_order___PartialOrder___is_empty},
+  {(bigint) partial_order___PartialOrder___length},
+  {(bigint) partial_order___PartialOrder___has},
+  {(bigint) partial_order___PartialOrder___has_only},
+  {(bigint) partial_order___PartialOrder___count},
+  {(bigint) partial_order___PartialOrder___first},
+  {(bigint) 2 /* 71: PartialOrder < PartialOrder: superclass init_table position */},
+  {(bigint) partial_order___PartialOrder___roots},
+  {(bigint) partial_order___PartialOrder_____bra},
+  {(bigint) partial_order___PartialOrder___to_dot},
+  {(bigint) partial_order___PartialOrder___to_dot_header},
+  {(bigint) partial_order___PartialOrder___to_dot_node},
+  {(bigint) partial_order___PartialOrder___to_dot_edge},
+  {(bigint) partial_order___PartialOrder___select_smallests},
+  {(bigint) partial_order___PartialOrder___add},
+  {(bigint) partial_order___PartialOrder___has_all},
+  {(bigint) partial_order___PartialOrder___new_poe},
+  {(bigint) partial_order___PartialOrder___add_to_smallests},
+  {(bigint) partial_order___PartialOrder___compute_smallers_for},
+  {(bigint) partial_order___PartialOrder___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction674(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute PartialOrder::_elements */
+/* 3: Attribute PartialOrder::_elements_list */
+/* 4: Attribute PartialOrder::_roots */
+void INIT_ATTRIBUTES__PartialOrder(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__PartialOrder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_PartialOrder(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction674;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction674(val_t self, char *from) {
-}
-val_t NEW_ReduceAction674_parser___ReduceAction674___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction674();
-  parser___ReduceAction674___init(self, init_table);
-  CHECKNEW_ReduceAction674(self, "parser::ReduceAction674::init for ReduceAction674");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction675[48] = {
-  {(bigint) 623 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction675 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction675 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 623 /* 3: ReduceAction675 < ReduceAction675: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_PartialOrder;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_PartialOrder(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_PartialOrder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_elements", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____elements_list(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_elements_list", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_partial_order___PartialOrder____roots(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_roots", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_PartialOrder_partial_order___PartialOrder___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 181;
+  fra.me.meth = LOCATE_NEW_PartialOrder_partial_order___PartialOrder___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./metamodel//partial_order.nit:181 */
+  fra.me.REG[0] = NEW_PartialOrder();
+  INIT_ATTRIBUTES__PartialOrder(fra.me.REG[0]);
+  partial_order___PartialOrder___init(fra.me.REG[0], init_table);
+  CHECKNEW_PartialOrder(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_PartialOrderElement[62] = {
+  {(bigint) 103 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: PartialOrderElement < Object: superclass typecheck marker */},
+  {(bigint) 103 /* 3: PartialOrderElement < PartialOrderElement: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94991,14 +118053,9 @@ const classtable_elt_t VFT_ReduceAction675[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction675 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: PartialOrderElement < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95006,7 +118063,6 @@ const classtable_elt_t VFT_ReduceAction675[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95014,41 +118070,158 @@ const classtable_elt_t VFT_ReduceAction675[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction675 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction675___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction675 < ReduceAction675: superclass init_table position */},
-  {(bigint) parser___ReduceAction675___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: PartialOrderElement < PartialOrderElement: superclass init_table position */},
+  {(bigint) partial_order___PartialOrderElement___order},
+  {(bigint) partial_order___PartialOrderElement___value},
+  {(bigint) partial_order___PartialOrderElement___rank},
+  {(bigint) partial_order___PartialOrderElement___direct_greaters},
+  {(bigint) partial_order___PartialOrderElement___direct_smallers},
+  {(bigint) partial_order___PartialOrderElement___greaters},
+  {(bigint) partial_order___PartialOrderElement___greaters_and_self},
+  {(bigint) partial_order___PartialOrderElement___smallers},
+  {(bigint) partial_order___PartialOrderElement___linear_extension},
+  {(bigint) partial_order___PartialOrderElement___reverse_linear_extension},
+  {(bigint) partial_order___PartialOrderElement_____l},
+  {(bigint) partial_order___PartialOrderElement_____leq},
+  {(bigint) partial_order___PartialOrderElement_____g},
+  {(bigint) partial_order___PartialOrderElement_____geq},
+  {(bigint) partial_order___PartialOrderElement___register_direct_smallers},
+  {(bigint) partial_order___PartialOrderElement___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction675(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute PartialOrderElement::_order */
+/* 3: Attribute PartialOrderElement::_value */
+/* 4: Attribute PartialOrderElement::_rank */
+/* 5: Attribute PartialOrderElement::_direct_greaters */
+/* 6: Attribute PartialOrderElement::_direct_smallers */
+/* 7: Attribute PartialOrderElement::_greaters */
+/* 8: Attribute PartialOrderElement::_greaters_and_self_cache */
+/* 9: Attribute PartialOrderElement::_smallers_last_length */
+/* 10: Attribute PartialOrderElement::_smallers_cache */
+/* 11: Attribute PartialOrderElement::_linear_extension_cache */
+/* 12: Attribute PartialOrderElement::_reverse_linear_extension_cache */
+void INIT_ATTRIBUTES__PartialOrderElement(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__PartialOrderElement;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//partial_order.nit:225 */
+  REGB0 = TAG_Int(0);
+  ATTR_partial_order___PartialOrderElement____smallers_last_length(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_PartialOrderElement(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction675;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction675(val_t self, char *from) {
-}
-val_t NEW_ReduceAction675_parser___ReduceAction675___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction675();
-  parser___ReduceAction675___init(self, init_table);
-  CHECKNEW_ReduceAction675(self, "parser::ReduceAction675::init for ReduceAction675");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_PartialOrderElement;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_PartialOrderElement(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_PartialOrderElement;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____order(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_order", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____rank(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_rank", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____direct_greaters(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_direct_greaters", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____direct_smallers(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_direct_smallers", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____greaters(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_greaters", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____smallers_last_length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_smallers_last_length", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_partial_order___PartialOrderElement____smallers_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_smallers_cache", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction676[48] = {
-  {(bigint) 619 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction676 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction676 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 619 /* 3: ReduceAction676 < ReduceAction676: superclass typecheck marker */},
+val_t NEW_PartialOrderElement_partial_order___PartialOrderElement___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 316;
+  fra.me.meth = LOCATE_NEW_PartialOrderElement_partial_order___PartialOrderElement___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./metamodel//partial_order.nit:316 */
+  fra.me.REG[3] = NEW_PartialOrderElement();
+  INIT_ATTRIBUTES__PartialOrderElement(fra.me.REG[3]);
+  partial_order___PartialOrderElement___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_PartialOrderElement(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_MMContext[53] = {
+  {(bigint) 163 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMContext < Object: superclass typecheck marker */},
+  {(bigint) 163 /* 3: MMContext < MMContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95061,14 +118234,10 @@ const classtable_elt_t VFT_ReduceAction676[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction676 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95076,7 +118245,6 @@ const classtable_elt_t VFT_ReduceAction676[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95084,41 +118252,125 @@ const classtable_elt_t VFT_ReduceAction676[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction676 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction676___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction676 < ReduceAction676: superclass init_table position */},
-  {(bigint) parser___ReduceAction676___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: MMContext < MMContext: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMContext___init},
+  {(bigint) abstractmetamodel___MMContext___module_hierarchy},
+  {(bigint) abstractmetamodel___MMContext___class_hierarchy},
+  {(bigint) abstractmetamodel___MMContext___modules},
+  {(bigint) abstractmetamodel___MMContext___add_module},
+  {(bigint) abstractmetamodel___MMContext___add_global_class},
+  {(bigint) abstractmetamodel___MMContext___add_local_class},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction676(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMContext::_module_hierarchy */
+/* 3: Attribute MMContext::_class_hierarchy */
+/* 4: Attribute MMContext::_global_classes */
+/* 5: Attribute MMContext::_modules */
+void INIT_ATTRIBUTES__MMContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:30 */
+  fra.me.REG[1] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:34 */
+  fra.me.REG[1] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:37 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_abstractmetamodel___MMContext____global_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:40 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_abstractmetamodel___MMContext____modules(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMContext(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction676;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction676(val_t self, char *from) {
-}
-val_t NEW_ReduceAction676_parser___ReduceAction676___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction676();
-  parser___ReduceAction676___init(self, init_table);
-  CHECKNEW_ReduceAction676(self, "parser::ReduceAction676::init for ReduceAction676");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_MMContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_module_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_class_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____global_classes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_modules", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction677[48] = {
-  {(bigint) 615 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction677 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction677 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 615 /* 3: ReduceAction677 < ReduceAction677: superclass typecheck marker */},
+val_t NEW_MMContext_abstractmetamodel___MMContext___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 27;
+  fra.me.meth = LOCATE_NEW_MMContext_abstractmetamodel___MMContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./metamodel//abstractmetamodel.nit:27 */
+  fra.me.REG[0] = NEW_MMContext();
+  INIT_ATTRIBUTES__MMContext(fra.me.REG[0]);
+  abstractmetamodel___MMContext___init(fra.me.REG[0], init_table);
+  CHECKNEW_MMContext(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_MMDirectory[55] = {
+  {(bigint) 159 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMDirectory < Object: superclass typecheck marker */},
+  {(bigint) 159 /* 3: MMDirectory < MMDirectory: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95131,14 +118383,10 @@ const classtable_elt_t VFT_ReduceAction677[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction677 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMDirectory < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95146,7 +118394,6 @@ const classtable_elt_t VFT_ReduceAction677[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95154,41 +118401,123 @@ const classtable_elt_t VFT_ReduceAction677[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction677 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction677___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction677 < ReduceAction677: superclass init_table position */},
-  {(bigint) parser___ReduceAction677___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: MMDirectory < MMDirectory: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMDirectory___name},
+  {(bigint) abstractmetamodel___MMDirectory___path},
+  {(bigint) abstractmetamodel___MMDirectory___parent},
+  {(bigint) abstractmetamodel___MMDirectory___owner},
+  {(bigint) abstractmetamodel___MMDirectory___owner__eq},
+  {(bigint) abstractmetamodel___MMDirectory___modules},
+  {(bigint) abstractmetamodel___MMDirectory___add_module},
+  {(bigint) abstractmetamodel___MMDirectory___init},
+  {(bigint) abstractmetamodel___MMDirectory___full_name_for},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction677(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMDirectory::_name */
+/* 3: Attribute MMDirectory::_path */
+/* 4: Attribute MMDirectory::_parent */
+/* 5: Attribute MMDirectory::_owner */
+/* 6: Attribute MMDirectory::_modules */
+void INIT_ATTRIBUTES__MMDirectory(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMDirectory;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:84 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_abstractmetamodel___MMDirectory____owner(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:88 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMDirectory____modules(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMDirectory(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction677;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction677(val_t self, char *from) {
-}
-val_t NEW_ReduceAction677_parser___ReduceAction677___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction677();
-  parser___ReduceAction677___init(self, init_table);
-  CHECKNEW_ReduceAction677(self, "parser::ReduceAction677::init for ReduceAction677");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_MMDirectory;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMDirectory(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMDirectory;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMDirectory____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMDirectory____path(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_path", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMDirectory____modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_modules", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction678[48] = {
-  {(bigint) 611 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction678 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction678 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 611 /* 3: ReduceAction678 < ReduceAction678: superclass typecheck marker */},
+val_t NEW_MMDirectory_abstractmetamodel___MMDirectory___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 97;
+  fra.me.meth = LOCATE_NEW_MMDirectory_abstractmetamodel___MMDirectory___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./metamodel//abstractmetamodel.nit:97 */
+  fra.me.REG[3] = NEW_MMDirectory();
+  INIT_ATTRIBUTES__MMDirectory(fra.me.REG[3]);
+  abstractmetamodel___MMDirectory___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_MMDirectory(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_MMModule[80] = {
+  {(bigint) 139 /* 0: Identity */},
+  {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMModule < Object: superclass typecheck marker */},
+  {(bigint) 139 /* 3: MMModule < MMModule: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95201,14 +118530,10 @@ const classtable_elt_t VFT_ReduceAction678[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction678 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMModule < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95216,7 +118541,6 @@ const classtable_elt_t VFT_ReduceAction678[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95224,41 +118548,256 @@ const classtable_elt_t VFT_ReduceAction678[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMModule___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction678 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction678___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction678 < ReduceAction678: superclass init_table position */},
-  {(bigint) parser___ReduceAction678___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction678(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) abstracttool___MMModule___dump_module_info},
+  {(bigint) syntax_base___MMModule___nodes},
+  {(bigint) syntax_base___MMModule___nodes__eq},
+  {(bigint) mmloader___MMModule___import_supers_modules},
+  {(bigint) inheritance___MMModule___type_any},
+  {(bigint) inheritance___MMModule___import_global_classes},
+  {(bigint) inheritance___MMModule___import_local_classes},
+  {(bigint) static_type___MMModule___type_none},
+  {(bigint) static_type___MMModule___type_bool},
+  {(bigint) 1 /* 54: MMModule < MMModule: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMModule___context},
+  {(bigint) abstractmetamodel___MMModule___name},
+  {(bigint) abstractmetamodel___MMModule___full_name},
+  {(bigint) abstractmetamodel___MMModule___directory},
+  {(bigint) abstractmetamodel___MMModule___location},
+  {(bigint) abstractmetamodel___MMModule___mhe},
+  {(bigint) abstractmetamodel___MMModule___global_classes},
+  {(bigint) abstractmetamodel___MMModule___local_classes},
+  {(bigint) abstractmetamodel___MMModule___class_specialization_hierarchy},
+  {(bigint) abstractmetamodel___MMModule___explicit_imported_modules},
+  {(bigint) abstractmetamodel___MMModule___init},
+  {(bigint) abstractmetamodel___MMModule___add_super_module},
+  {(bigint) abstractmetamodel___MMModule___visibility_for},
+  {(bigint) abstractmetamodel___MMModule_____bra},
+  {(bigint) abstractmetamodel___MMModule___class_by_name},
+  {(bigint) abstractmetamodel___MMModule___has_global_class_named},
+  {(bigint) abstractmetamodel___MMModule___global_class_named},
+  {(bigint) abstractmetamodel___MMModule___set_supers_class},
+  {(bigint) abstractmetamodel___MMModule___register_global_class},
+  {(bigint) compiling___MMModule___compile_separate_module},
+  {(bigint) compiling_global___MMModule___declare_class_tables_to_c},
+  {(bigint) compiling_global___MMModule___compile_mod_to_c},
+  {(bigint) compiling_global___MMModule___compile_local_table_to_c},
+  {(bigint) table_computation___MMModule___local_table},
+  {(bigint) table_computation___MMModule___local_analysis},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMModule::_type_none */
+/* 3: Attribute MMModule::_context */
+/* 4: Attribute MMModule::_name */
+/* 5: Attribute MMModule::_full_name */
+/* 6: Attribute MMModule::_directory */
+/* 7: Attribute MMModule::_location */
+/* 8: Attribute MMModule::_mhe */
+/* 9: Attribute MMModule::_global_classes */
+/* 10: Attribute MMModule::_local_classes */
+/* 11: Attribute MMModule::_class_specialization_hierarchy */
+/* 12: Attribute MMModule::_intrude_modules */
+/* 13: Attribute MMModule::_public_modules */
+/* 14: Attribute MMModule::_private_modules */
+/* 15: Attribute MMModule::_explicit_imported_modules */
+/* 16: Attribute MMModule::_local_class_by_global */
+/* 17: Attribute MMModule::_global_class_by_name */
+/* 18: Attribute MMModule::_local_table */
+void INIT_ATTRIBUTES__MMModule(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMModule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:130 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____global_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:154 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMModule____global_class_by_name(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:151 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMModule____local_class_by_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//static_type.nit:497 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./metamodel//static_type.nit:498 */
+  fra.me.REG[1] = NEW_MMTypeNone_static_type___MMTypeNone___init(fra.me.REG[1]);
+  ATTR_static_type___MMModule____type_none(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:133 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____local_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:136 */
+  fra.me.REG[1] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:139 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____intrude_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:142 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____public_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:145 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____private_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:148 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____explicit_imported_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//table_computation.nit:394 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_table_computation___MMModule____local_table(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMModule(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction678;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction678(val_t self, char *from) {
-}
-val_t NEW_ReduceAction678_parser___ReduceAction678___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction678();
-  parser___ReduceAction678___init(self, init_table);
-  CHECKNEW_ReduceAction678(self, "parser::ReduceAction678::init for ReduceAction678");
-  return self;
+  obj = alloc(sizeof(val_t) * 19);
+  obj->vft = (classtable_elt_t*)VFT_MMModule;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMModule(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMModule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____global_classes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____global_class_by_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_class_by_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____local_class_by_global(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class_by_global", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMModule____type_none(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_type_none", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____context(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____full_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_full_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____directory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_directory", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____location(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_location", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____local_classes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_classes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_class_specialization_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____intrude_modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_intrude_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____public_modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_public_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____private_modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_private_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____explicit_imported_modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_explicit_imported_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___MMModule____local_table(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_table", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction679[48] = {
-  {(bigint) 607 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction679 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction679 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 607 /* 3: ReduceAction679 < ReduceAction679: superclass typecheck marker */},
+val_t NEW_MMModule_abstractmetamodel___MMModule___init(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 156;
+  fra.me.meth = LOCATE_NEW_MMModule_abstractmetamodel___MMModule___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./metamodel//abstractmetamodel.nit:156 */
+  fra.me.REG[4] = NEW_MMModule();
+  INIT_ATTRIBUTES__MMModule(fra.me.REG[4]);
+  abstractmetamodel___MMModule___init(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_MMModule(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+const classtable_elt_t VFT_MMGlobalClass[67] = {
+  {(bigint) 155 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMGlobalClass < Object: superclass typecheck marker */},
+  {(bigint) 155 /* 3: MMGlobalClass < MMGlobalClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95271,14 +118810,10 @@ const classtable_elt_t VFT_ReduceAction679[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction679 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMGlobalClass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95286,7 +118821,6 @@ const classtable_elt_t VFT_ReduceAction679[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95294,41 +118828,166 @@ const classtable_elt_t VFT_ReduceAction679[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMGlobalClass___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction679 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction679___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction679 < ReduceAction679: superclass init_table position */},
-  {(bigint) parser___ReduceAction679___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax_base___MMGlobalClass___check_visibility},
+  {(bigint) 1 /* 46: MMGlobalClass < MMGlobalClass: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMGlobalClass___intro},
+  {(bigint) abstractmetamodel___MMGlobalClass___class_refinement_hierarchy},
+  {(bigint) abstractmetamodel___MMGlobalClass___init},
+  {(bigint) abstractmetamodel___MMGlobalClass___name},
+  {(bigint) abstractmetamodel___MMGlobalClass___mmmodule},
+  {(bigint) abstractmetamodel___MMGlobalClass___register_local_class},
+  {(bigint) abstractmetamodel___MMGlobalClass___is_interface},
+  {(bigint) abstractmetamodel___MMGlobalClass___is_interface__eq},
+  {(bigint) abstractmetamodel___MMGlobalClass___is_abstract},
+  {(bigint) abstractmetamodel___MMGlobalClass___is_abstract__eq},
+  {(bigint) abstractmetamodel___MMGlobalClass___is_enum},
+  {(bigint) abstractmetamodel___MMGlobalClass___is_enum__eq},
+  {(bigint) abstractmetamodel___MMGlobalClass___visibility_level},
+  {(bigint) abstractmetamodel___MMGlobalClass___visibility_level__eq},
+  {(bigint) abstractmetamodel___MMGlobalClass___is_mixin},
+  {(bigint) abstractmetamodel___MMGlobalClass___mixin_of},
+  {(bigint) abstractmetamodel___MMGlobalClass___mixin_of__eq},
+  {(bigint) compiling_base___MMGlobalClass___id_id},
+  {(bigint) compiling_base___MMGlobalClass___color_id},
+  {(bigint) compiling_base___MMGlobalClass___init_table_pos_id},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction679(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMGlobalClass::_intro */
+/* 3: Attribute MMGlobalClass::_class_refinement_hierarchy */
+/* 4: Attribute MMGlobalClass::_is_interface */
+/* 5: Attribute MMGlobalClass::_is_abstract */
+/* 6: Attribute MMGlobalClass::_is_enum */
+/* 7: Attribute MMGlobalClass::_visibility_level */
+/* 8: Attribute MMGlobalClass::_mixin_of */
+void INIT_ATTRIBUTES__MMGlobalClass(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMGlobalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:258 */
+  fra.me.REG[1] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMGlobalClass____class_refinement_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:297 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMGlobalClass____is_interface(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//abstractmetamodel.nit:300 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMGlobalClass____is_abstract(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//abstractmetamodel.nit:303 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMGlobalClass____is_enum(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//abstractmetamodel.nit:308 */
+  REGB0 = TAG_Int(1);
+  ATTR_abstractmetamodel___MMGlobalClass____visibility_level(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//abstractmetamodel.nit:317 */
+  fra.me.REG[1] = fra.me.REG[0];
+  ATTR_abstractmetamodel___MMGlobalClass____mixin_of(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMGlobalClass(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction679;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction679(val_t self, char *from) {
-}
-val_t NEW_ReduceAction679_parser___ReduceAction679___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction679();
-  parser___ReduceAction679___init(self, init_table);
-  CHECKNEW_ReduceAction679(self, "parser::ReduceAction679::init for ReduceAction679");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_MMGlobalClass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMGlobalClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMGlobalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____intro(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_intro", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____class_refinement_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_class_refinement_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____is_interface(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_interface", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____is_abstract(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_abstract", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____is_enum(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_enum", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____visibility_level(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_visibility_level", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalClass____mixin_of(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mixin_of", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction680[48] = {
-  {(bigint) 599 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction680 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction680 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 599 /* 3: ReduceAction680 < ReduceAction680: superclass typecheck marker */},
+val_t NEW_MMGlobalClass_abstractmetamodel___MMGlobalClass___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 260;
+  fra.me.meth = LOCATE_NEW_MMGlobalClass_abstractmetamodel___MMGlobalClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:260 */
+  fra.me.REG[1] = NEW_MMGlobalClass();
+  INIT_ATTRIBUTES__MMGlobalClass(fra.me.REG[1]);
+  abstractmetamodel___MMGlobalClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_MMGlobalClass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_MMLocalClass[113] = {
+  {(bigint) 147 /* 0: Identity */},
+  {(bigint) 25 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMLocalClass < Object: superclass typecheck marker */},
+  {(bigint) 147 /* 3: MMLocalClass < MMLocalClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95341,14 +119000,10 @@ const classtable_elt_t VFT_ReduceAction680[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction680 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMLocalClass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95356,7 +119011,6 @@ const classtable_elt_t VFT_ReduceAction680[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95364,41 +119018,291 @@ const classtable_elt_t VFT_ReduceAction680[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalClass___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction680 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction680___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction680 < ReduceAction680: superclass init_table position */},
-  {(bigint) parser___ReduceAction680___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) abstracttool___MMLocalClass___dump_properties},
+  {(bigint) mmbuilder___MMLocalClass___accept_class_visitor},
+  {(bigint) mmbuilder___MMLocalClass___accept_properties_visitor},
+  {(bigint) genericity___MMLocalClass___get_formal},
+  {(bigint) genericity___MMLocalClass___register_formal},
+  {(bigint) genericity___MMLocalClass___get_instantiate_type},
+  {(bigint) genericity___MMLocalClass___formals_types},
+  {(bigint) static_type___MMLocalClass___get_type},
+  {(bigint) genericity___MMLocalClass___is_generic},
+  {(bigint) inheritance___MMLocalClass___compute_super_classes},
+  {(bigint) inheritance___MMLocalClass___compute_ancestors},
+  {(bigint) inheritance___MMLocalClass___inherit_global_properties},
+  {(bigint) inheritance___MMLocalClass___make_visible_an_inherited_global_property},
+  {(bigint) inheritance___MMLocalClass___add_direct_parent},
+  {(bigint) inheritance___MMLocalClass___computed_super_classes},
+  {(bigint) inheritance___MMLocalClass___computed_ancestors},
+  {(bigint) inheritance___MMLocalClass___ancestor_for},
+  {(bigint) inheritance___MMLocalClass___add_default_any_class},
+  {(bigint) inheritance___MMLocalClass___add_super_classes},
+  {(bigint) inheritance___MMLocalClass___add_explicit_classes},
+  {(bigint) inheritance___MMLocalClass___compute_super_parents},
+  {(bigint) inheritance___MMLocalClass___build_ancestors},
+  {(bigint) inheritance___MMLocalClass___group_ancestors},
+  {(bigint) inheritance___MMLocalClass___merge_ancestors},
+  {(bigint) inheritance___MMLocalClass___inherit_local_property},
+  {(bigint) genericity___MMLocalClass___get_type},
+  {(bigint) static_type___MMLocalClass___add_ancestor},
+  {(bigint) static_type___MMLocalClass___ancestors},
+  {(bigint) static_type___MMLocalClass___ancestor},
+  {(bigint) 1 /* 74: MMLocalClass < MMLocalClass: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalClass___name},
+  {(bigint) abstractmetamodel___MMLocalClass___arity},
+  {(bigint) abstractmetamodel___MMLocalClass___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalClass___global},
+  {(bigint) abstractmetamodel___MMLocalClass___crhe},
+  {(bigint) abstractmetamodel___MMLocalClass___cshe},
+  {(bigint) abstractmetamodel___MMLocalClass___che},
+  {(bigint) inheritance___MMLocalClass___global_properties},
+  {(bigint) abstractmetamodel___MMLocalClass___local_local_properties},
+  {(bigint) abstractmetamodel___MMLocalClass___init},
+  {(bigint) abstractmetamodel___MMLocalClass___for_module},
+  {(bigint) abstractmetamodel___MMLocalClass___new_global},
+  {(bigint) abstractmetamodel___MMLocalClass___set_global},
+  {(bigint) inheritance___MMLocalClass___has_global_property_by_name},
+  {(bigint) abstractmetamodel___MMLocalClass___get_property_by_name},
+  {(bigint) abstractmetamodel___MMLocalClass___attribute},
+  {(bigint) abstractmetamodel___MMLocalClass___method},
+  {(bigint) abstractmetamodel___MMLocalClass___select_method},
+  {(bigint) abstractmetamodel___MMLocalClass___select_attribute},
+  {(bigint) abstractmetamodel___MMLocalClass___super_methods_named},
+  {(bigint) abstractmetamodel___MMLocalClass___register_local_property},
+  {(bigint) abstractmetamodel___MMLocalClass___register_global_property},
+  {(bigint) inheritance___MMLocalClass___has_global_property},
+  {(bigint) inheritance___MMLocalClass_____bra},
+  {(bigint) abstractmetamodel___MMLocalClass___context},
+  {(bigint) abstractmetamodel___MMLocalClass___total_order_compare},
+  {(bigint) virtualtype___MMLocalClass___virtual_type},
+  {(bigint) virtualtype___MMLocalClass___select_virtual_type},
+  {(bigint) primitive_info___MMLocalClass___primitive_info},
+  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
+  {(bigint) icode_generator___MMLocalClass___generate_icode_file},
+  {(bigint) program___MMLocalClass___init_var_iroutine},
+  {(bigint) program___MMLocalClass___init_var_iroutine__eq},
+  {(bigint) program___MMLocalClass___checknew_iroutine},
+  {(bigint) program___MMLocalClass___checknew_iroutine__eq},
+  {(bigint) program___MMLocalClass___new_instance_iroutine},
+  {(bigint) compiling_global___MMLocalClass___declare_tables_to_c},
+  {(bigint) compiling_global___MMLocalClass___compile_tables_to_c},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction680(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMLocalClass::_types */
+/* 3: Attribute MMLocalClass::_formals_types */
+/* 4: Attribute MMLocalClass::_direct_parents */
+/* 5: Attribute MMLocalClass::_computing_super */
+/* 6: Attribute MMLocalClass::_are_global_properties_inherited */
+/* 7: Attribute MMLocalClass::_base_type_cache */
+/* 8: Attribute MMLocalClass::_ancestors */
+/* 9: Attribute MMLocalClass::_name */
+/* 10: Attribute MMLocalClass::_arity */
+/* 11: Attribute MMLocalClass::_mmmodule */
+/* 12: Attribute MMLocalClass::_global */
+/* 13: Attribute MMLocalClass::_crhe */
+/* 14: Attribute MMLocalClass::_cshe */
+/* 15: Attribute MMLocalClass::_che */
+/* 16: Attribute MMLocalClass::_local_property_by_global */
+/* 17: Attribute MMLocalClass::_global_properties */
+/* 18: Attribute MMLocalClass::_local_local_properties */
+/* 19: Attribute MMLocalClass::_properties_by_name */
+/* 20: Attribute MMLocalClass::_primitive_info_cache */
+/* 21: Attribute MMLocalClass::_primitive_info_b */
+/* 22: Attribute MMLocalClass::_init_var_iroutine */
+/* 23: Attribute MMLocalClass::_checknew_iroutine */
+/* 24: Attribute MMLocalClass::_new_instance_iroutine */
+void INIT_ATTRIBUTES__MMLocalClass(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMLocalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//genericity.nit:41 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//genericity.nit:55 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//inheritance.nit:58 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//inheritance.nit:62 */
+  REGB0 = TAG_Bool(false);
+  ATTR_inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//inheritance.nit:109 */
+  REGB0 = TAG_Bool(false);
+  ATTR_inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//abstractmetamodel.nit:353 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:356 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:359 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:362 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./primitive_info.nit:25 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./primitive_info.nit:29 */
+  REGB0 = TAG_Bool(false);
+  ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB0;
+  /* ./program.nit:227 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:229 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:234 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMLocalClass(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction680;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction680(val_t self, char *from) {
-}
-val_t NEW_ReduceAction680_parser___ReduceAction680___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction680();
-  parser___ReduceAction680___init(self, init_table);
-  CHECKNEW_ReduceAction680(self, "parser::ReduceAction680::init for ReduceAction680");
-  return self;
+  obj = alloc(sizeof(val_t) * 25);
+  obj->vft = (classtable_elt_t*)VFT_MMLocalClass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMLocalClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMLocalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_genericity___MMLocalClass____types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_types", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____direct_parents(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____computing_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_computing_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____arity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_arity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_local_properties", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction681[48] = {
-  {(bigint) 595 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction681 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction681 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 595 /* 3: ReduceAction681 < ReduceAction681: superclass typecheck marker */},
+val_t NEW_MMLocalClass_abstractmetamodel___MMLocalClass___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 364;
+  fra.me.meth = LOCATE_NEW_MMLocalClass_abstractmetamodel___MMLocalClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  REGB0 = p2;
+  /* ./metamodel//abstractmetamodel.nit:364 */
+  fra.me.REG[2] = NEW_MMLocalClass();
+  INIT_ATTRIBUTES__MMLocalClass(fra.me.REG[2]);
+  abstractmetamodel___MMLocalClass___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], REGB0, init_table);
+  CHECKNEW_MMLocalClass(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_MMGlobalProperty[62] = {
+  {(bigint) 151 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMGlobalProperty < Object: superclass typecheck marker */},
+  {(bigint) 151 /* 3: MMGlobalProperty < MMGlobalProperty: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95411,14 +119315,10 @@ const classtable_elt_t VFT_ReduceAction681[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction681 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMGlobalProperty < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95426,7 +119326,6 @@ const classtable_elt_t VFT_ReduceAction681[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95434,41 +119333,134 @@ const classtable_elt_t VFT_ReduceAction681[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMGlobalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction681 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction681___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction681 < ReduceAction681: superclass init_table position */},
-  {(bigint) parser___ReduceAction681___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) syntax_base___MMGlobalProperty___check_visibility},
+  {(bigint) virtualtype___MMGlobalProperty___is_virtual_type},
+  {(bigint) 1 /* 47: MMGlobalProperty < MMGlobalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMGlobalProperty___intro},
+  {(bigint) abstractmetamodel___MMGlobalProperty___local_class},
+  {(bigint) abstractmetamodel___MMGlobalProperty___property_hierarchy},
+  {(bigint) abstractmetamodel___MMGlobalProperty___init},
+  {(bigint) abstractmetamodel___MMGlobalProperty___add_local_property},
+  {(bigint) abstractmetamodel___MMGlobalProperty___is_attribute},
+  {(bigint) abstractmetamodel___MMGlobalProperty___is_method},
+  {(bigint) abstractmetamodel___MMGlobalProperty___is_init},
+  {(bigint) abstractmetamodel___MMGlobalProperty___is_init__eq},
+  {(bigint) abstractmetamodel___MMGlobalProperty___is_init_for},
+  {(bigint) abstractmetamodel___MMGlobalProperty___visibility_level},
+  {(bigint) abstractmetamodel___MMGlobalProperty___visibility_level__eq},
+  {(bigint) compiling_base___MMGlobalProperty___meth_call},
+  {(bigint) compiling_base___MMGlobalProperty___attr_access},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction681(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMGlobalProperty::_intro */
+/* 3: Attribute MMGlobalProperty::_property_hierarchy */
+/* 4: Attribute MMGlobalProperty::_is_init */
+/* 5: Attribute MMGlobalProperty::_visibility_level */
+void INIT_ATTRIBUTES__MMGlobalProperty(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMGlobalProperty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:546 */
+  fra.me.REG[1] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMGlobalProperty____property_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:570 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMGlobalProperty____is_init(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//abstractmetamodel.nit:585 */
+  REGB0 = TAG_Int(1);
+  ATTR_abstractmetamodel___MMGlobalProperty____visibility_level(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMGlobalProperty(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction681;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction681(val_t self, char *from) {
-}
-val_t NEW_ReduceAction681_parser___ReduceAction681___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction681();
-  parser___ReduceAction681___init(self, init_table);
-  CHECKNEW_ReduceAction681(self, "parser::ReduceAction681::init for ReduceAction681");
-  return self;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_MMGlobalProperty;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMGlobalProperty(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMGlobalProperty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalProperty____intro(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_intro", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalProperty____property_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalProperty____is_init(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_init", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMGlobalProperty____visibility_level(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_visibility_level", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction682[48] = {
-  {(bigint) 591 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction682 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction682 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 591 /* 3: ReduceAction682 < ReduceAction682: superclass typecheck marker */},
+val_t NEW_MMGlobalProperty_abstractmetamodel___MMGlobalProperty___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 548;
+  fra.me.meth = LOCATE_NEW_MMGlobalProperty_abstractmetamodel___MMGlobalProperty___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:548 */
+  fra.me.REG[1] = NEW_MMGlobalProperty();
+  INIT_ATTRIBUTES__MMGlobalProperty(fra.me.REG[1]);
+  abstractmetamodel___MMGlobalProperty___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_MMGlobalProperty(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_MMLocalProperty[67] = {
+  {(bigint) 143 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMLocalProperty < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMLocalProperty < MMLocalProperty: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95481,14 +119473,10 @@ const classtable_elt_t VFT_ReduceAction682[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction682 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMLocalProperty < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95496,7 +119484,6 @@ const classtable_elt_t VFT_ReduceAction682[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95504,41 +119491,143 @@ const classtable_elt_t VFT_ReduceAction682[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction682 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction682___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction682 < ReduceAction682: superclass init_table position */},
-  {(bigint) parser___ReduceAction682___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax_base___MMLocalProperty___node},
+  {(bigint) syntax_base___MMLocalProperty___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMLocalProperty < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction682(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMLocalProperty::_signature */
+/* 3: Attribute MMLocalProperty::_signatures_cache */
+/* 4: Attribute MMLocalProperty::_name */
+/* 5: Attribute MMLocalProperty::_local_class */
+/* 6: Attribute MMLocalProperty::_global */
+/* 7: Attribute MMLocalProperty::_prhe */
+/* 8: Attribute MMLocalProperty::_need_super */
+/* 9: Attribute MMLocalProperty::_cname_cache */
+void INIT_ATTRIBUTES__MMLocalProperty(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMLocalProperty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMLocalProperty(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction682;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction682(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_MMLocalProperty;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMLocalProperty(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMLocalProperty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction682_parser___ReduceAction682___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction682();
-  parser___ReduceAction682___init(self, init_table);
-  CHECKNEW_ReduceAction682(self, "parser::ReduceAction682::init for ReduceAction682");
-  return self;
+val_t NEW_MMLocalProperty_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 643;
+  fra.me.meth = LOCATE_NEW_MMLocalProperty_abstractmetamodel___MMLocalProperty___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//abstractmetamodel.nit:643 */
+  fra.me.REG[2] = NEW_MMLocalProperty();
+  INIT_ATTRIBUTES__MMLocalProperty(fra.me.REG[2]);
+  abstractmetamodel___MMLocalProperty___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMLocalProperty(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction683[48] = {
-  {(bigint) 587 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction683 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction683 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 587 /* 3: ReduceAction683 < ReduceAction683: superclass typecheck marker */},
+const classtable_elt_t VFT_MMAttribute[69] = {
+  {(bigint) 1975 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMAttribute < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMAttribute < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 1975 /* 4: MMAttribute < MMAttribute: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95551,14 +119640,9 @@ const classtable_elt_t VFT_ReduceAction683[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction683 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMAttribute < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95566,7 +119650,6 @@ const classtable_elt_t VFT_ReduceAction683[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95574,41 +119657,145 @@ const classtable_elt_t VFT_ReduceAction683[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction683 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction683___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction683 < ReduceAction683: superclass init_table position */},
-  {(bigint) parser___ReduceAction683___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax_base___MMLocalProperty___node},
+  {(bigint) syntax_base___MMLocalProperty___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMAttribute < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) icode_base___MMAttribute___iroutine},
+  {(bigint) 2 /* 68: MMAttribute < MMAttribute: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction683(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction683;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction683(val_t self, char *from) {
-}
-val_t NEW_ReduceAction683_parser___ReduceAction683___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction683();
-  parser___ReduceAction683___init(self, init_table);
-  CHECKNEW_ReduceAction683(self, "parser::ReduceAction683::init for ReduceAction683");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction684[48] = {
-  {(bigint) 583 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction684 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction684 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 583 /* 3: ReduceAction684 < ReduceAction684: superclass typecheck marker */},
+/* 1: Object_id */
+/* 2: Attribute MMAttribute::_signature */
+/* 3: Attribute MMAttribute::_signatures_cache */
+/* 4: Attribute MMAttribute::_name */
+/* 5: Attribute MMAttribute::_local_class */
+/* 6: Attribute MMAttribute::_global */
+/* 7: Attribute MMAttribute::_prhe */
+/* 8: Attribute MMAttribute::_need_super */
+/* 9: Attribute MMAttribute::_cname_cache */
+void INIT_ATTRIBUTES__MMAttribute(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMAttribute;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMAttribute(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_MMAttribute;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMAttribute(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMAttribute;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMAttribute_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 643;
+  fra.me.meth = LOCATE_NEW_MMAttribute_abstractmetamodel___MMLocalProperty___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//abstractmetamodel.nit:643 */
+  fra.me.REG[2] = NEW_MMAttribute();
+  INIT_ATTRIBUTES__MMAttribute(fra.me.REG[2]);
+  abstractmetamodel___MMLocalProperty___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMAttribute(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_MMMethod[74] = {
+  {(bigint) 1959 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMMethod < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 1959 /* 4: MMMethod < MMMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95621,14 +119808,9 @@ const classtable_elt_t VFT_ReduceAction684[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction684 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMMethod < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95636,7 +119818,6 @@ const classtable_elt_t VFT_ReduceAction684[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95644,41 +119825,150 @@ const classtable_elt_t VFT_ReduceAction684[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction684 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction684___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction684 < ReduceAction684: superclass init_table position */},
-  {(bigint) parser___ReduceAction684___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax_base___MMLocalProperty___node},
+  {(bigint) syntax_base___MMLocalProperty___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) icode_generator___MMMethod___generate_icode},
+  {(bigint) icode_base___MMMethod___iroutine},
+  {(bigint) 2 /* 69: MMMethod < MMMethod: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMMethod___is_intern},
+  {(bigint) abstractmetamodel___MMMethod___is_abstract},
+  {(bigint) abstractmetamodel___MMMethod___extern_name},
+  {(bigint) compiling_global___MMMethod___compile_property_to_c},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction684(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMMethod::_signature */
+/* 3: Attribute MMMethod::_signatures_cache */
+/* 4: Attribute MMMethod::_name */
+/* 5: Attribute MMMethod::_local_class */
+/* 6: Attribute MMMethod::_global */
+/* 7: Attribute MMMethod::_prhe */
+/* 8: Attribute MMMethod::_need_super */
+/* 9: Attribute MMMethod::_cname_cache */
+void INIT_ATTRIBUTES__MMMethod(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMMethod(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction684;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction684(val_t self, char *from) {
-}
-val_t NEW_ReduceAction684_parser___ReduceAction684___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction684();
-  parser___ReduceAction684___init(self, init_table);
-  CHECKNEW_ReduceAction684(self, "parser::ReduceAction684::init for ReduceAction684");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction685[48] = {
-  {(bigint) 579 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction685 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction685 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 579 /* 3: ReduceAction685 < ReduceAction685: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_MMMethod;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMMethod(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMMethod_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 643;
+  fra.me.meth = LOCATE_NEW_MMMethod_abstractmetamodel___MMLocalProperty___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//abstractmetamodel.nit:643 */
+  fra.me.REG[2] = NEW_MMMethod();
+  INIT_ATTRIBUTES__MMMethod(fra.me.REG[2]);
+  abstractmetamodel___MMLocalProperty___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMMethod(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_MMConcreteClass[118] = {
+  {(bigint) 1971 /* 0: Identity */},
+  {(bigint) 28 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMConcreteClass < Object: superclass typecheck marker */},
+  {(bigint) 147 /* 3: MMConcreteClass < MMLocalClass: superclass typecheck marker */},
+  {(bigint) 1971 /* 4: MMConcreteClass < MMConcreteClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95691,14 +119981,9 @@ const classtable_elt_t VFT_ReduceAction685[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction685 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMConcreteClass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95706,7 +119991,6 @@ const classtable_elt_t VFT_ReduceAction685[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95714,41 +119998,315 @@ const classtable_elt_t VFT_ReduceAction685[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalClass___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction685 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction685___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction685 < ReduceAction685: superclass init_table position */},
-  {(bigint) parser___ReduceAction685___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction685(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction685;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction685(val_t self, char *from) {
-}
-val_t NEW_ReduceAction685_parser___ReduceAction685___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction685();
-  parser___ReduceAction685___init(self, init_table);
-  CHECKNEW_ReduceAction685(self, "parser::ReduceAction685::init for ReduceAction685");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction686[48] = {
-  {(bigint) 575 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction686 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction686 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 575 /* 3: ReduceAction686 < ReduceAction686: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) abstracttool___MMLocalClass___dump_properties},
+  {(bigint) mmbuilder___MMLocalClass___accept_class_visitor},
+  {(bigint) mmbuilder___MMLocalClass___accept_properties_visitor},
+  {(bigint) genericity___MMLocalClass___get_formal},
+  {(bigint) genericity___MMLocalClass___register_formal},
+  {(bigint) genericity___MMLocalClass___get_instantiate_type},
+  {(bigint) genericity___MMLocalClass___formals_types},
+  {(bigint) static_type___MMLocalClass___get_type},
+  {(bigint) genericity___MMLocalClass___is_generic},
+  {(bigint) inheritance___MMLocalClass___compute_super_classes},
+  {(bigint) inheritance___MMLocalClass___compute_ancestors},
+  {(bigint) inheritance___MMLocalClass___inherit_global_properties},
+  {(bigint) inheritance___MMLocalClass___make_visible_an_inherited_global_property},
+  {(bigint) inheritance___MMLocalClass___add_direct_parent},
+  {(bigint) inheritance___MMLocalClass___computed_super_classes},
+  {(bigint) inheritance___MMLocalClass___computed_ancestors},
+  {(bigint) inheritance___MMLocalClass___ancestor_for},
+  {(bigint) inheritance___MMLocalClass___add_default_any_class},
+  {(bigint) inheritance___MMLocalClass___add_super_classes},
+  {(bigint) inheritance___MMLocalClass___add_explicit_classes},
+  {(bigint) inheritance___MMLocalClass___compute_super_parents},
+  {(bigint) inheritance___MMLocalClass___build_ancestors},
+  {(bigint) inheritance___MMLocalClass___group_ancestors},
+  {(bigint) inheritance___MMLocalClass___merge_ancestors},
+  {(bigint) inheritance___MMLocalClass___inherit_local_property},
+  {(bigint) genericity___MMLocalClass___get_type},
+  {(bigint) static_type___MMLocalClass___add_ancestor},
+  {(bigint) static_type___MMLocalClass___ancestors},
+  {(bigint) static_type___MMLocalClass___ancestor},
+  {(bigint) 1 /* 74: MMConcreteClass < MMLocalClass: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalClass___name},
+  {(bigint) abstractmetamodel___MMLocalClass___arity},
+  {(bigint) abstractmetamodel___MMLocalClass___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalClass___global},
+  {(bigint) abstractmetamodel___MMLocalClass___crhe},
+  {(bigint) abstractmetamodel___MMLocalClass___cshe},
+  {(bigint) abstractmetamodel___MMLocalClass___che},
+  {(bigint) inheritance___MMLocalClass___global_properties},
+  {(bigint) abstractmetamodel___MMLocalClass___local_local_properties},
+  {(bigint) abstractmetamodel___MMLocalClass___init},
+  {(bigint) abstractmetamodel___MMLocalClass___for_module},
+  {(bigint) abstractmetamodel___MMLocalClass___new_global},
+  {(bigint) abstractmetamodel___MMLocalClass___set_global},
+  {(bigint) inheritance___MMLocalClass___has_global_property_by_name},
+  {(bigint) abstractmetamodel___MMLocalClass___get_property_by_name},
+  {(bigint) abstractmetamodel___MMLocalClass___attribute},
+  {(bigint) abstractmetamodel___MMLocalClass___method},
+  {(bigint) abstractmetamodel___MMLocalClass___select_method},
+  {(bigint) abstractmetamodel___MMLocalClass___select_attribute},
+  {(bigint) abstractmetamodel___MMLocalClass___super_methods_named},
+  {(bigint) abstractmetamodel___MMLocalClass___register_local_property},
+  {(bigint) abstractmetamodel___MMLocalClass___register_global_property},
+  {(bigint) inheritance___MMLocalClass___has_global_property},
+  {(bigint) inheritance___MMLocalClass_____bra},
+  {(bigint) abstractmetamodel___MMLocalClass___context},
+  {(bigint) abstractmetamodel___MMLocalClass___total_order_compare},
+  {(bigint) virtualtype___MMLocalClass___virtual_type},
+  {(bigint) virtualtype___MMLocalClass___select_virtual_type},
+  {(bigint) primitive_info___MMLocalClass___primitive_info},
+  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
+  {(bigint) icode_generator___MMLocalClass___generate_icode_file},
+  {(bigint) program___MMLocalClass___init_var_iroutine},
+  {(bigint) program___MMLocalClass___init_var_iroutine__eq},
+  {(bigint) program___MMLocalClass___checknew_iroutine},
+  {(bigint) program___MMLocalClass___checknew_iroutine__eq},
+  {(bigint) program___MMLocalClass___new_instance_iroutine},
+  {(bigint) compiling_global___MMLocalClass___declare_tables_to_c},
+  {(bigint) compiling_global___MMLocalClass___compile_tables_to_c},
+  {(bigint) table_computation___MMConcreteClass___class_color_pos},
+  {(bigint) table_computation___MMConcreteClass___class_layout},
+  {(bigint) table_computation___MMConcreteClass___instance_layout},
+  {(bigint) table_computation___MMConcreteClass___build_layout_in},
+  {(bigint) 2 /* 117: MMConcreteClass < MMConcreteClass: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMConcreteClass::_types */
+/* 3: Attribute MMConcreteClass::_formals_types */
+/* 4: Attribute MMConcreteClass::_direct_parents */
+/* 5: Attribute MMConcreteClass::_computing_super */
+/* 6: Attribute MMConcreteClass::_are_global_properties_inherited */
+/* 7: Attribute MMConcreteClass::_base_type_cache */
+/* 8: Attribute MMConcreteClass::_ancestors */
+/* 9: Attribute MMConcreteClass::_name */
+/* 10: Attribute MMConcreteClass::_arity */
+/* 11: Attribute MMConcreteClass::_mmmodule */
+/* 12: Attribute MMConcreteClass::_global */
+/* 13: Attribute MMConcreteClass::_crhe */
+/* 14: Attribute MMConcreteClass::_cshe */
+/* 15: Attribute MMConcreteClass::_che */
+/* 16: Attribute MMConcreteClass::_local_property_by_global */
+/* 17: Attribute MMConcreteClass::_global_properties */
+/* 18: Attribute MMConcreteClass::_local_local_properties */
+/* 19: Attribute MMConcreteClass::_properties_by_name */
+/* 20: Attribute MMConcreteClass::_primitive_info_cache */
+/* 21: Attribute MMConcreteClass::_primitive_info_b */
+/* 22: Attribute MMConcreteClass::_init_var_iroutine */
+/* 23: Attribute MMConcreteClass::_checknew_iroutine */
+/* 24: Attribute MMConcreteClass::_new_instance_iroutine */
+/* 25: Attribute MMConcreteClass::_class_color_pos */
+/* 26: Attribute MMConcreteClass::_class_layout */
+/* 27: Attribute MMConcreteClass::_instance_layout */
+void INIT_ATTRIBUTES__MMConcreteClass(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMConcreteClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:90 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_table_computation___MMConcreteClass____class_layout(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//table_computation.nit:93 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_table_computation___MMConcreteClass____instance_layout(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:353 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:356 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:359 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:362 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:227 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:229 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:234 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./primitive_info.nit:25 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./primitive_info.nit:29 */
+  REGB0 = TAG_Bool(false);
+  ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//genericity.nit:41 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//genericity.nit:55 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//inheritance.nit:58 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//inheritance.nit:62 */
+  REGB0 = TAG_Bool(false);
+  ATTR_inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//inheritance.nit:109 */
+  REGB0 = TAG_Bool(false);
+  ATTR_inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMConcreteClass(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 28);
+  obj->vft = (classtable_elt_t*)VFT_MMConcreteClass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMConcreteClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMConcreteClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___MMConcreteClass____class_layout(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_class_layout", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___MMConcreteClass____instance_layout(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_instance_layout", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____arity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_arity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_local_properties", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_genericity___MMLocalClass____types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_types", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____direct_parents(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____computing_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_computing_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMConcreteClass_abstractmetamodel___MMLocalClass___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 364;
+  fra.me.meth = LOCATE_NEW_MMConcreteClass_abstractmetamodel___MMLocalClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  REGB0 = p2;
+  /* ./metamodel//abstractmetamodel.nit:364 */
+  fra.me.REG[2] = NEW_MMConcreteClass();
+  INIT_ATTRIBUTES__MMConcreteClass(fra.me.REG[2]);
+  abstractmetamodel___MMLocalClass___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], REGB0, init_table);
+  CHECKNEW_MMConcreteClass(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_MMSignature[64] = {
+  {(bigint) 135 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMSignature < Object: superclass typecheck marker */},
+  {(bigint) 135 /* 3: MMSignature < MMSignature: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95761,14 +120319,10 @@ const classtable_elt_t VFT_ReduceAction686[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction686 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMSignature < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95776,7 +120330,6 @@ const classtable_elt_t VFT_ReduceAction686[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95784,41 +120337,138 @@ const classtable_elt_t VFT_ReduceAction686[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) static_type___MMSignature___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction686 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction686___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction686 < ReduceAction686: superclass init_table position */},
-  {(bigint) parser___ReduceAction686___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) icode_builder___MMSignature___generate_empty_iroutine},
+  {(bigint) icode_builder___MMSignature___generate_empty_iclosuredef},
+  {(bigint) vararg___MMSignature___vararg_rank},
+  {(bigint) vararg___MMSignature___vararg_rank__eq},
+  {(bigint) vararg___MMSignature___has_vararg},
+  {(bigint) static_type___MMSignature___adaptation_to},
+  {(bigint) static_type___MMSignature___not_for_self},
+  {(bigint) static_type___MMSignature___init},
+  {(bigint) 1 /* 53: MMSignature < MMSignature: superclass init_table position */},
+  {(bigint) static_type___MMSignature___recv},
+  {(bigint) static_type___MMSignature___return_type},
+  {(bigint) static_type___MMSignature___closures},
+  {(bigint) static_type___MMSignature___closure_named},
+  {(bigint) static_type___MMSignature___arity},
+  {(bigint) static_type___MMSignature_____l},
+  {(bigint) static_type___MMSignature_____bra},
+  {(bigint) vararg___MMSignature___adaptation_to},
+  {(bigint) vararg___MMSignature___not_for_self},
+  {(bigint) vararg___MMSignature___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction686(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMSignature::_vararg_rank */
+/* 3: Attribute MMSignature::_recv */
+/* 4: Attribute MMSignature::_params */
+/* 5: Attribute MMSignature::_return_type */
+/* 6: Attribute MMSignature::_closures */
+/* 7: Attribute MMSignature::_not_for_self_cache */
+void INIT_ATTRIBUTES__MMSignature(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMSignature;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:82 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_static_type___MMSignature____closures(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//static_type.nit:174 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMSignature____not_for_self_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMSignature(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction686;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction686(val_t self, char *from) {
-}
-val_t NEW_ReduceAction686_parser___ReduceAction686___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction686();
-  parser___ReduceAction686___init(self, init_table);
-  CHECKNEW_ReduceAction686(self, "parser::ReduceAction686::init for ReduceAction686");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_MMSignature;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMSignature(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMSignature;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_vararg___MMSignature____vararg_rank(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_vararg_rank", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMSignature____recv(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_recv", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_params", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMSignature____closures(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_closures", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction687[48] = {
-  {(bigint) 571 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction687 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction687 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 571 /* 3: ReduceAction687 < ReduceAction687: superclass typecheck marker */},
+val_t NEW_MMSignature_static_type___MMSignature___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 47;
+  fra.me.meth = LOCATE_NEW_MMSignature_static_type___MMSignature___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./metamodel//vararg.nit:47 */
+  fra.me.REG[3] = NEW_MMSignature();
+  INIT_ATTRIBUTES__MMSignature(fra.me.REG[3]);
+  vararg___MMSignature___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_MMSignature(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_MMClosure[54] = {
+  {(bigint) 167 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMClosure < Object: superclass typecheck marker */},
+  {(bigint) 167 /* 3: MMClosure < MMClosure: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95831,14 +120481,10 @@ const classtable_elt_t VFT_ReduceAction687[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction687 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMClosure < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95846,7 +120492,6 @@ const classtable_elt_t VFT_ReduceAction687[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95854,41 +120499,120 @@ const classtable_elt_t VFT_ReduceAction687[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction687 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction687___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction687 < ReduceAction687: superclass init_table position */},
-  {(bigint) parser___ReduceAction687___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: MMClosure < MMClosure: superclass init_table position */},
+  {(bigint) static_type___MMClosure___name},
+  {(bigint) static_type___MMClosure___signature},
+  {(bigint) static_type___MMClosure___is_break},
+  {(bigint) static_type___MMClosure___is_optional},
+  {(bigint) static_type___MMClosure___adaptation_to},
+  {(bigint) static_type___MMClosure___init},
+  {(bigint) static_type___MMClosure___not_for_self},
+  {(bigint) static_type___MMClosure_____l},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction687(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMClosure::_name */
+/* 3: Attribute MMClosure::_signature */
+/* 4: Attribute MMClosure::_is_break */
+/* 5: Attribute MMClosure::_is_optional */
+void INIT_ATTRIBUTES__MMClosure(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMClosure;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMClosure(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction687;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction687(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_MMClosure;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMClosure(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMClosure;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_static_type___MMClosure____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMClosure____signature(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signature", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMClosure____is_break(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_break", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMClosure____is_optional(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_optional", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction687_parser___ReduceAction687___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction687();
-  parser___ReduceAction687___init(self, init_table);
-  CHECKNEW_ReduceAction687(self, "parser::ReduceAction687::init for ReduceAction687");
-  return self;
+val_t NEW_MMClosure_static_type___MMClosure___init(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 245;
+  fra.me.meth = LOCATE_NEW_MMClosure_static_type___MMClosure___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  REGB0 = p2;
+  REGB1 = p3;
+  /* ./metamodel//static_type.nit:245 */
+  fra.me.REG[2] = NEW_MMClosure();
+  INIT_ATTRIBUTES__MMClosure(fra.me.REG[2]);
+  static_type___MMClosure___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], REGB0, REGB1, init_table);
+  CHECKNEW_MMClosure(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction688[48] = {
-  {(bigint) 567 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction688 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction688 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 567 /* 3: ReduceAction688 < ReduceAction688: superclass typecheck marker */},
+const classtable_elt_t VFT_MMNullableType[68] = {
+  {(bigint) 1955 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMNullableType < Object: superclass typecheck marker */},
+  {(bigint) 131 /* 3: MMNullableType < MMType: superclass typecheck marker */},
+  {(bigint) 1955 /* 4: MMNullableType < MMNullableType: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95901,14 +120625,9 @@ const classtable_elt_t VFT_ReduceAction688[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction688 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMNullableType < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95916,7 +120635,6 @@ const classtable_elt_t VFT_ReduceAction688[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95924,41 +120642,117 @@ const classtable_elt_t VFT_ReduceAction688[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) static_type___MMNullableType___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction688 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction688___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction688 < ReduceAction688: superclass init_table position */},
-  {(bigint) parser___ReduceAction688___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) primitive_info___MMType___cname},
+  {(bigint) primitive_info___MMType___is_tagged},
+  {(bigint) primitive_info___MMType___default_cvalue},
+  {(bigint) primitive_info___MMType___boxtype},
+  {(bigint) primitive_info___MMType___unboxtype},
+  {(bigint) genericity___MMType___is_generic},
+  {(bigint) type_formal___MMType___direct_type},
+  {(bigint) 0 /* 52: MMNullableType < MMType: superclass init_table position */},
+  {(bigint) static_type___MMNullableType___mmmodule},
+  {(bigint) static_type___MMNullableType___local_class},
+  {(bigint) static_type___MMNullableType___is_valid},
+  {(bigint) static_type___MMNullableType_____l},
+  {(bigint) static_type___MMNullableType___is_supertype},
+  {(bigint) static_type___MMNullableType___for_module},
+  {(bigint) static_type___MMNullableType___adapt_to},
+  {(bigint) static_type___MMNullableType___upcast_for},
+  {(bigint) static_type___MMNullableType___not_for_self},
+  {(bigint) static_type___MMNullableType___is_nullable},
+  {(bigint) static_type___MMNullableType___as_nullable},
+  {(bigint) static_type___MMNullableType___as_notnull},
+  {(bigint) static_type___MMType___init},
+  {(bigint) 2 /* 66: MMNullableType < MMNullableType: superclass init_table position */},
+  {(bigint) static_type___MMNullableType___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction688(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMNullableType::_as_nullable_cache */
+/* 3: Attribute MMNullableType::_base_type */
+void INIT_ATTRIBUTES__MMNullableType(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMNullableType;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:360 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMNullableType(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction688;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction688(val_t self, char *from) {
-}
-val_t NEW_ReduceAction688_parser___ReduceAction688___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction688();
-  parser___ReduceAction688___init(self, init_table);
-  CHECKNEW_ReduceAction688(self, "parser::ReduceAction688::init for ReduceAction688");
-  return self;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_MMNullableType;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMNullableType(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMNullableType;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMNullableType_static_type___MMNullableType___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 388;
+  fra.me.meth = LOCATE_NEW_MMNullableType_static_type___MMNullableType___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:388 */
+  fra.me.REG[1] = NEW_MMNullableType();
+  INIT_ATTRIBUTES__MMNullableType(fra.me.REG[1]);
+  static_type___MMNullableType___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_MMNullableType(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_ReduceAction689[48] = {
-  {(bigint) 563 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction689 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction689 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 563 /* 3: ReduceAction689 < ReduceAction689: superclass typecheck marker */},
+const classtable_elt_t VFT_MMTypeClass[68] = {
+  {(bigint) 1935 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMTypeClass < Object: superclass typecheck marker */},
+  {(bigint) 131 /* 3: MMTypeClass < MMType: superclass typecheck marker */},
+  {(bigint) 1935 /* 4: MMTypeClass < MMTypeClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95971,14 +120765,9 @@ const classtable_elt_t VFT_ReduceAction689[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction689 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMTypeClass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -95986,7 +120775,6 @@ const classtable_elt_t VFT_ReduceAction689[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -95994,42 +120782,118 @@ const classtable_elt_t VFT_ReduceAction689[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) static_type___MMTypeClass___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction689 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction689___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction689 < ReduceAction689: superclass init_table position */},
-  {(bigint) parser___ReduceAction689___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) primitive_info___MMType___cname},
+  {(bigint) primitive_info___MMType___is_tagged},
+  {(bigint) primitive_info___MMType___default_cvalue},
+  {(bigint) primitive_info___MMType___boxtype},
+  {(bigint) primitive_info___MMType___unboxtype},
+  {(bigint) genericity___MMType___is_generic},
+  {(bigint) type_formal___MMType___direct_type},
+  {(bigint) 0 /* 52: MMTypeClass < MMType: superclass init_table position */},
+  {(bigint) static_type___MMTypeClass___mmmodule},
+  {(bigint) static_type___MMTypeClass___local_class},
+  {(bigint) static_type___MMType___is_valid},
+  {(bigint) static_type___MMTypeClass_____l},
+  {(bigint) static_type___MMType___is_supertype},
+  {(bigint) static_type___MMType___for_module},
+  {(bigint) static_type___MMType___adapt_to},
+  {(bigint) static_type___MMTypeClass___upcast_for},
+  {(bigint) static_type___MMType___not_for_self},
+  {(bigint) static_type___MMType___is_nullable},
+  {(bigint) static_type___MMType___as_nullable},
+  {(bigint) static_type___MMType___as_notnull},
+  {(bigint) static_type___MMType___init},
+  {(bigint) 2 /* 66: MMTypeClass < MMTypeClass: superclass init_table position */},
+  {(bigint) static_type___MMTypeClass___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction689(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMTypeClass::_as_nullable_cache */
+/* 3: Attribute MMTypeClass::_local_class */
+void INIT_ATTRIBUTES__MMTypeClass(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMTypeClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:360 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMTypeClass(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction689;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction689(val_t self, char *from) {
-}
-val_t NEW_ReduceAction689_parser___ReduceAction689___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction689();
-  parser___ReduceAction689___init(self, init_table);
-  CHECKNEW_ReduceAction689(self, "parser::ReduceAction689::init for ReduceAction689");
-  return self;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_MMTypeClass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMTypeClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMTypeClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMTypeClass_static_type___MMTypeClass___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 450;
+  fra.me.meth = LOCATE_NEW_MMTypeClass_static_type___MMTypeClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:450 */
+  fra.me.REG[1] = NEW_MMTypeClass();
+  INIT_ATTRIBUTES__MMTypeClass(fra.me.REG[1]);
+  static_type___MMTypeClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_MMTypeClass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_ReduceAction690[48] = {
-  {(bigint) 555 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction690 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction690 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 555 /* 3: ReduceAction690 < ReduceAction690: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_MMTypeSimpleClass[70] = {
+  {(bigint) 2595 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMTypeSimpleClass < Object: superclass typecheck marker */},
+  {(bigint) 131 /* 3: MMTypeSimpleClass < MMType: superclass typecheck marker */},
+  {(bigint) 1935 /* 4: MMTypeSimpleClass < MMTypeClass: superclass typecheck marker */},
+  {(bigint) 2595 /* 5: MMTypeSimpleClass < MMTypeSimpleClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96041,14 +120905,9 @@ const classtable_elt_t VFT_ReduceAction690[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction690 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMTypeSimpleClass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96056,7 +120915,6 @@ const classtable_elt_t VFT_ReduceAction690[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96064,41 +120922,119 @@ const classtable_elt_t VFT_ReduceAction690[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) static_type___MMTypeClass___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction690 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction690___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction690 < ReduceAction690: superclass init_table position */},
-  {(bigint) parser___ReduceAction690___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) primitive_info___MMType___cname},
+  {(bigint) primitive_info___MMType___is_tagged},
+  {(bigint) primitive_info___MMType___default_cvalue},
+  {(bigint) primitive_info___MMType___boxtype},
+  {(bigint) primitive_info___MMType___unboxtype},
+  {(bigint) genericity___MMTypeSimpleClass___is_generic},
+  {(bigint) type_formal___MMType___direct_type},
+  {(bigint) 0 /* 52: MMTypeSimpleClass < MMType: superclass init_table position */},
+  {(bigint) static_type___MMTypeClass___mmmodule},
+  {(bigint) static_type___MMTypeClass___local_class},
+  {(bigint) static_type___MMType___is_valid},
+  {(bigint) static_type___MMTypeClass_____l},
+  {(bigint) static_type___MMTypeSimpleClass___is_supertype},
+  {(bigint) static_type___MMTypeSimpleClass___for_module},
+  {(bigint) static_type___MMTypeSimpleClass___adapt_to},
+  {(bigint) static_type___MMTypeClass___upcast_for},
+  {(bigint) static_type___MMType___not_for_self},
+  {(bigint) static_type___MMType___is_nullable},
+  {(bigint) static_type___MMType___as_nullable},
+  {(bigint) static_type___MMType___as_notnull},
+  {(bigint) static_type___MMType___init},
+  {(bigint) 2 /* 66: MMTypeSimpleClass < MMTypeClass: superclass init_table position */},
+  {(bigint) static_type___MMTypeClass___init},
+  {(bigint) 3 /* 68: MMTypeSimpleClass < MMTypeSimpleClass: superclass init_table position */},
+  {(bigint) static_type___MMTypeSimpleClass___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction690(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMTypeSimpleClass::_as_nullable_cache */
+/* 3: Attribute MMTypeSimpleClass::_local_class */
+void INIT_ATTRIBUTES__MMTypeSimpleClass(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMTypeSimpleClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:360 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMTypeSimpleClass(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction690;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction690(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_MMTypeSimpleClass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMTypeSimpleClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMTypeSimpleClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction690_parser___ReduceAction690___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction690();
-  parser___ReduceAction690___init(self, init_table);
-  CHECKNEW_ReduceAction690(self, "parser::ReduceAction690::init for ReduceAction690");
-  return self;
+val_t NEW_MMTypeSimpleClass_static_type___MMTypeSimpleClass___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 474;
+  fra.me.meth = LOCATE_NEW_MMTypeSimpleClass_static_type___MMTypeSimpleClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:474 */
+  fra.me.REG[1] = NEW_MMTypeSimpleClass();
+  INIT_ATTRIBUTES__MMTypeSimpleClass(fra.me.REG[1]);
+  static_type___MMTypeSimpleClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_MMTypeSimpleClass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_ReduceAction691[48] = {
-  {(bigint) 551 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction691 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction691 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 551 /* 3: ReduceAction691 < ReduceAction691: superclass typecheck marker */},
+const classtable_elt_t VFT_MMTypeNone[68] = {
+  {(bigint) 1927 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMTypeNone < Object: superclass typecheck marker */},
+  {(bigint) 131 /* 3: MMTypeNone < MMType: superclass typecheck marker */},
+  {(bigint) 1927 /* 4: MMTypeNone < MMTypeNone: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96111,14 +121047,9 @@ const classtable_elt_t VFT_ReduceAction691[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction691 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMTypeNone < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96126,7 +121057,6 @@ const classtable_elt_t VFT_ReduceAction691[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96134,41 +121064,117 @@ const classtable_elt_t VFT_ReduceAction691[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) static_type___MMTypeNone___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction691 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction691___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction691 < ReduceAction691: superclass init_table position */},
-  {(bigint) parser___ReduceAction691___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) primitive_info___MMType___cname},
+  {(bigint) primitive_info___MMType___is_tagged},
+  {(bigint) primitive_info___MMType___default_cvalue},
+  {(bigint) primitive_info___MMType___boxtype},
+  {(bigint) primitive_info___MMType___unboxtype},
+  {(bigint) genericity___MMTypeNone___is_generic},
+  {(bigint) type_formal___MMType___direct_type},
+  {(bigint) 0 /* 52: MMTypeNone < MMType: superclass init_table position */},
+  {(bigint) static_type___MMTypeNone___mmmodule},
+  {(bigint) static_type___MMTypeNone___local_class},
+  {(bigint) static_type___MMType___is_valid},
+  {(bigint) static_type___MMTypeNone_____l},
+  {(bigint) static_type___MMTypeNone___is_supertype},
+  {(bigint) genericity___MMTypeNone___for_module},
+  {(bigint) genericity___MMTypeNone___adapt_to},
+  {(bigint) static_type___MMTypeNone___upcast_for},
+  {(bigint) static_type___MMType___not_for_self},
+  {(bigint) static_type___MMTypeNone___is_nullable},
+  {(bigint) static_type___MMTypeNone___as_nullable},
+  {(bigint) static_type___MMTypeNone___as_notnull},
+  {(bigint) static_type___MMType___init},
+  {(bigint) 2 /* 66: MMTypeNone < MMTypeNone: superclass init_table position */},
+  {(bigint) static_type___MMTypeNone___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction691(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMTypeNone::_as_nullable_cache */
+/* 3: Attribute MMTypeNone::_mmmodule */
+void INIT_ATTRIBUTES__MMTypeNone(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMTypeNone;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:360 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMTypeNone(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction691;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction691(val_t self, char *from) {
-}
-val_t NEW_ReduceAction691_parser___ReduceAction691___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction691();
-  parser___ReduceAction691___init(self, init_table);
-  CHECKNEW_ReduceAction691(self, "parser::ReduceAction691::init for ReduceAction691");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction692[48] = {
-  {(bigint) 547 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction692 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction692 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 547 /* 3: ReduceAction692 < ReduceAction692: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_MMTypeNone;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMTypeNone(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMTypeNone;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_static_type___MMTypeNone____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMTypeNone_static_type___MMTypeNone___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 493;
+  fra.me.meth = LOCATE_NEW_MMTypeNone_static_type___MMTypeNone___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:493 */
+  fra.me.REG[1] = NEW_MMTypeNone();
+  INIT_ATTRIBUTES__MMTypeNone(fra.me.REG[1]);
+  static_type___MMTypeNone___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_MMTypeNone(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_MMImplicitLocalClass[115] = {
+  {(bigint) 1963 /* 0: Identity */},
+  {(bigint) 25 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMImplicitLocalClass < Object: superclass typecheck marker */},
+  {(bigint) 147 /* 3: MMImplicitLocalClass < MMLocalClass: superclass typecheck marker */},
+  {(bigint) 1963 /* 4: MMImplicitLocalClass < MMImplicitLocalClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96181,14 +121187,9 @@ const classtable_elt_t VFT_ReduceAction692[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction692 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMImplicitLocalClass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96196,7 +121197,6 @@ const classtable_elt_t VFT_ReduceAction692[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96204,41 +121204,292 @@ const classtable_elt_t VFT_ReduceAction692[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalClass___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction692 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction692___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction692 < ReduceAction692: superclass init_table position */},
-  {(bigint) parser___ReduceAction692___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) abstracttool___MMLocalClass___dump_properties},
+  {(bigint) mmbuilder___MMLocalClass___accept_class_visitor},
+  {(bigint) mmbuilder___MMLocalClass___accept_properties_visitor},
+  {(bigint) genericity___MMLocalClass___get_formal},
+  {(bigint) genericity___MMLocalClass___register_formal},
+  {(bigint) genericity___MMLocalClass___get_instantiate_type},
+  {(bigint) genericity___MMLocalClass___formals_types},
+  {(bigint) static_type___MMLocalClass___get_type},
+  {(bigint) genericity___MMLocalClass___is_generic},
+  {(bigint) inheritance___MMLocalClass___compute_super_classes},
+  {(bigint) inheritance___MMLocalClass___compute_ancestors},
+  {(bigint) inheritance___MMLocalClass___inherit_global_properties},
+  {(bigint) inheritance___MMLocalClass___make_visible_an_inherited_global_property},
+  {(bigint) inheritance___MMLocalClass___add_direct_parent},
+  {(bigint) inheritance___MMLocalClass___computed_super_classes},
+  {(bigint) inheritance___MMLocalClass___computed_ancestors},
+  {(bigint) inheritance___MMLocalClass___ancestor_for},
+  {(bigint) inheritance___MMLocalClass___add_default_any_class},
+  {(bigint) inheritance___MMLocalClass___add_super_classes},
+  {(bigint) inheritance___MMLocalClass___add_explicit_classes},
+  {(bigint) inheritance___MMLocalClass___compute_super_parents},
+  {(bigint) inheritance___MMLocalClass___build_ancestors},
+  {(bigint) inheritance___MMLocalClass___group_ancestors},
+  {(bigint) inheritance___MMLocalClass___merge_ancestors},
+  {(bigint) inheritance___MMLocalClass___inherit_local_property},
+  {(bigint) genericity___MMLocalClass___get_type},
+  {(bigint) static_type___MMLocalClass___add_ancestor},
+  {(bigint) static_type___MMLocalClass___ancestors},
+  {(bigint) static_type___MMLocalClass___ancestor},
+  {(bigint) 1 /* 74: MMImplicitLocalClass < MMLocalClass: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalClass___name},
+  {(bigint) abstractmetamodel___MMLocalClass___arity},
+  {(bigint) abstractmetamodel___MMLocalClass___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalClass___global},
+  {(bigint) abstractmetamodel___MMLocalClass___crhe},
+  {(bigint) abstractmetamodel___MMLocalClass___cshe},
+  {(bigint) abstractmetamodel___MMLocalClass___che},
+  {(bigint) inheritance___MMLocalClass___global_properties},
+  {(bigint) abstractmetamodel___MMLocalClass___local_local_properties},
+  {(bigint) abstractmetamodel___MMLocalClass___init},
+  {(bigint) abstractmetamodel___MMLocalClass___for_module},
+  {(bigint) abstractmetamodel___MMLocalClass___new_global},
+  {(bigint) abstractmetamodel___MMLocalClass___set_global},
+  {(bigint) inheritance___MMLocalClass___has_global_property_by_name},
+  {(bigint) abstractmetamodel___MMLocalClass___get_property_by_name},
+  {(bigint) abstractmetamodel___MMLocalClass___attribute},
+  {(bigint) abstractmetamodel___MMLocalClass___method},
+  {(bigint) abstractmetamodel___MMLocalClass___select_method},
+  {(bigint) abstractmetamodel___MMLocalClass___select_attribute},
+  {(bigint) abstractmetamodel___MMLocalClass___super_methods_named},
+  {(bigint) abstractmetamodel___MMLocalClass___register_local_property},
+  {(bigint) abstractmetamodel___MMLocalClass___register_global_property},
+  {(bigint) inheritance___MMLocalClass___has_global_property},
+  {(bigint) inheritance___MMLocalClass_____bra},
+  {(bigint) abstractmetamodel___MMLocalClass___context},
+  {(bigint) abstractmetamodel___MMLocalClass___total_order_compare},
+  {(bigint) virtualtype___MMLocalClass___virtual_type},
+  {(bigint) virtualtype___MMLocalClass___select_virtual_type},
+  {(bigint) primitive_info___MMLocalClass___primitive_info},
+  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
+  {(bigint) icode_generator___MMLocalClass___generate_icode_file},
+  {(bigint) program___MMLocalClass___init_var_iroutine},
+  {(bigint) program___MMLocalClass___init_var_iroutine__eq},
+  {(bigint) program___MMLocalClass___checknew_iroutine},
+  {(bigint) program___MMLocalClass___checknew_iroutine__eq},
+  {(bigint) program___MMLocalClass___new_instance_iroutine},
+  {(bigint) compiling_global___MMLocalClass___declare_tables_to_c},
+  {(bigint) compiling_global___MMLocalClass___compile_tables_to_c},
+  {(bigint) 2 /* 113: MMImplicitLocalClass < MMImplicitLocalClass: superclass init_table position */},
+  {(bigint) inheritance___MMImplicitLocalClass___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction692(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMImplicitLocalClass::_types */
+/* 3: Attribute MMImplicitLocalClass::_formals_types */
+/* 4: Attribute MMImplicitLocalClass::_direct_parents */
+/* 5: Attribute MMImplicitLocalClass::_computing_super */
+/* 6: Attribute MMImplicitLocalClass::_are_global_properties_inherited */
+/* 7: Attribute MMImplicitLocalClass::_base_type_cache */
+/* 8: Attribute MMImplicitLocalClass::_ancestors */
+/* 9: Attribute MMImplicitLocalClass::_name */
+/* 10: Attribute MMImplicitLocalClass::_arity */
+/* 11: Attribute MMImplicitLocalClass::_mmmodule */
+/* 12: Attribute MMImplicitLocalClass::_global */
+/* 13: Attribute MMImplicitLocalClass::_crhe */
+/* 14: Attribute MMImplicitLocalClass::_cshe */
+/* 15: Attribute MMImplicitLocalClass::_che */
+/* 16: Attribute MMImplicitLocalClass::_local_property_by_global */
+/* 17: Attribute MMImplicitLocalClass::_global_properties */
+/* 18: Attribute MMImplicitLocalClass::_local_local_properties */
+/* 19: Attribute MMImplicitLocalClass::_properties_by_name */
+/* 20: Attribute MMImplicitLocalClass::_primitive_info_cache */
+/* 21: Attribute MMImplicitLocalClass::_primitive_info_b */
+/* 22: Attribute MMImplicitLocalClass::_init_var_iroutine */
+/* 23: Attribute MMImplicitLocalClass::_checknew_iroutine */
+/* 24: Attribute MMImplicitLocalClass::_new_instance_iroutine */
+void INIT_ATTRIBUTES__MMImplicitLocalClass(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMImplicitLocalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//inheritance.nit:58 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//inheritance.nit:62 */
+  REGB0 = TAG_Bool(false);
+  ATTR_inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//inheritance.nit:109 */
+  REGB0 = TAG_Bool(false);
+  ATTR_inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//abstractmetamodel.nit:353 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:356 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:359 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:362 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//genericity.nit:41 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//genericity.nit:55 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./primitive_info.nit:25 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./primitive_info.nit:29 */
+  REGB0 = TAG_Bool(false);
+  ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB0;
+  /* ./program.nit:227 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:229 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:234 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMImplicitLocalClass(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction692;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction692(val_t self, char *from) {
-}
-val_t NEW_ReduceAction692_parser___ReduceAction692___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction692();
-  parser___ReduceAction692___init(self, init_table);
-  CHECKNEW_ReduceAction692(self, "parser::ReduceAction692::init for ReduceAction692");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction693[48] = {
-  {(bigint) 543 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction693 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction693 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 543 /* 3: ReduceAction693 < ReduceAction693: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 25);
+  obj->vft = (classtable_elt_t*)VFT_MMImplicitLocalClass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMImplicitLocalClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMImplicitLocalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____direct_parents(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____computing_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_computing_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____arity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_arity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_local_properties", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_genericity___MMLocalClass____types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_types", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMImplicitLocalClass_inheritance___MMImplicitLocalClass___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 473;
+  fra.me.meth = LOCATE_NEW_MMImplicitLocalClass_inheritance___MMImplicitLocalClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//inheritance.nit:473 */
+  fra.me.REG[2] = NEW_MMImplicitLocalClass();
+  INIT_ATTRIBUTES__MMImplicitLocalClass(fra.me.REG[2]);
+  inheritance___MMImplicitLocalClass___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMImplicitLocalClass(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_MMRefineAncestor[57] = {
+  {(bigint) 1951 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMRefineAncestor < Object: superclass typecheck marker */},
+  {(bigint) 171 /* 3: MMRefineAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 1951 /* 4: MMRefineAncestor < MMRefineAncestor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96251,14 +121502,9 @@ const classtable_elt_t VFT_ReduceAction693[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction693 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMRefineAncestor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96266,7 +121512,6 @@ const classtable_elt_t VFT_ReduceAction693[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96274,41 +121519,112 @@ const classtable_elt_t VFT_ReduceAction693[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) static_type___MMAncestor___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction693 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction693___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction693 < ReduceAction693: superclass init_table position */},
-  {(bigint) parser___ReduceAction693___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) inheritance___MMAncestor___add_in},
+  {(bigint) 0 /* 46: MMRefineAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) static_type___MMAncestor___stype__eq},
+  {(bigint) static_type___MMAncestor___stype},
+  {(bigint) static_type___MMAncestor___inheriter__eq},
+  {(bigint) static_type___MMAncestor___inheriter},
+  {(bigint) static_type___MMAncestor___is_reffinement},
+  {(bigint) static_type___MMAncestor___is_specialisation},
+  {(bigint) inheritance___MMRefineAncestor___local_class},
+  {(bigint) static_type___MMAncestor___init},
+  {(bigint) 2 /* 55: MMRefineAncestor < MMRefineAncestor: superclass init_table position */},
+  {(bigint) inheritance___MMRefineAncestor___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction693(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMRefineAncestor::_stype */
+/* 3: Attribute MMRefineAncestor::_inheriter */
+/* 4: Attribute MMRefineAncestor::_local_class */
+void INIT_ATTRIBUTES__MMRefineAncestor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMRefineAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:273 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//static_type.nit:279 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMRefineAncestor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction693;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction693(val_t self, char *from) {
-}
-val_t NEW_ReduceAction693_parser___ReduceAction693___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction693();
-  parser___ReduceAction693___init(self, init_table);
-  CHECKNEW_ReduceAction693(self, "parser::ReduceAction693::init for ReduceAction693");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction694[48] = {
-  {(bigint) 539 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction694 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction694 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 539 /* 3: ReduceAction694 < ReduceAction694: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_MMRefineAncestor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMRefineAncestor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMRefineAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_inheritance___MMRefineAncestor____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMRefineAncestor_inheritance___MMRefineAncestor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 485;
+  fra.me.meth = LOCATE_NEW_MMRefineAncestor_inheritance___MMRefineAncestor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//inheritance.nit:485 */
+  fra.me.REG[2] = NEW_MMRefineAncestor();
+  INIT_ATTRIBUTES__MMRefineAncestor(fra.me.REG[2]);
+  inheritance___MMRefineAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMRefineAncestor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_MMSpecAncestor[57] = {
+  {(bigint) 1947 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMSpecAncestor < Object: superclass typecheck marker */},
+  {(bigint) 171 /* 3: MMSpecAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 1947 /* 4: MMSpecAncestor < MMSpecAncestor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96321,14 +121637,9 @@ const classtable_elt_t VFT_ReduceAction694[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction694 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMSpecAncestor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96336,7 +121647,6 @@ const classtable_elt_t VFT_ReduceAction694[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96344,41 +121654,103 @@ const classtable_elt_t VFT_ReduceAction694[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) static_type___MMAncestor___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction694 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction694___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction694 < ReduceAction694: superclass init_table position */},
-  {(bigint) parser___ReduceAction694___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) inheritance___MMAncestor___add_in},
+  {(bigint) 0 /* 46: MMSpecAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) static_type___MMAncestor___stype__eq},
+  {(bigint) static_type___MMAncestor___stype},
+  {(bigint) static_type___MMAncestor___inheriter__eq},
+  {(bigint) static_type___MMAncestor___inheriter},
+  {(bigint) static_type___MMAncestor___is_reffinement},
+  {(bigint) static_type___MMAncestor___is_specialisation},
+  {(bigint) inheritance___MMSpecAncestor___local_class},
+  {(bigint) static_type___MMAncestor___init},
+  {(bigint) 2 /* 55: MMSpecAncestor < MMSpecAncestor: superclass init_table position */},
+  {(bigint) inheritance___MMSpecAncestor___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction694(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMSpecAncestor::_stype */
+/* 3: Attribute MMSpecAncestor::_inheriter */
+void INIT_ATTRIBUTES__MMSpecAncestor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMSpecAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:273 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//static_type.nit:279 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMSpecAncestor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction694;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction694(val_t self, char *from) {
-}
-val_t NEW_ReduceAction694_parser___ReduceAction694___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction694();
-  parser___ReduceAction694___init(self, init_table);
-  CHECKNEW_ReduceAction694(self, "parser::ReduceAction694::init for ReduceAction694");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction695[48] = {
-  {(bigint) 535 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction695 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction695 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 535 /* 3: ReduceAction695 < ReduceAction695: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_MMSpecAncestor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMSpecAncestor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMSpecAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMSpecAncestor_inheritance___MMSpecAncestor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 498;
+  fra.me.meth = LOCATE_NEW_MMSpecAncestor_inheritance___MMSpecAncestor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//inheritance.nit:498 */
+  fra.me.REG[2] = NEW_MMSpecAncestor();
+  INIT_ATTRIBUTES__MMSpecAncestor(fra.me.REG[2]);
+  inheritance___MMSpecAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMSpecAncestor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_MMDefaultAncestor[57] = {
+  {(bigint) 1967 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMDefaultAncestor < Object: superclass typecheck marker */},
+  {(bigint) 171 /* 3: MMDefaultAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 1967 /* 4: MMDefaultAncestor < MMDefaultAncestor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96391,14 +121763,9 @@ const classtable_elt_t VFT_ReduceAction695[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction695 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMDefaultAncestor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96406,7 +121773,6 @@ const classtable_elt_t VFT_ReduceAction695[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96414,41 +121780,103 @@ const classtable_elt_t VFT_ReduceAction695[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) static_type___MMAncestor___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction695 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction695___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction695 < ReduceAction695: superclass init_table position */},
-  {(bigint) parser___ReduceAction695___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) inheritance___MMAncestor___add_in},
+  {(bigint) 0 /* 46: MMDefaultAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) static_type___MMAncestor___stype__eq},
+  {(bigint) static_type___MMAncestor___stype},
+  {(bigint) static_type___MMAncestor___inheriter__eq},
+  {(bigint) static_type___MMAncestor___inheriter},
+  {(bigint) static_type___MMAncestor___is_reffinement},
+  {(bigint) static_type___MMAncestor___is_specialisation},
+  {(bigint) inheritance___MMDefaultAncestor___local_class},
+  {(bigint) static_type___MMAncestor___init},
+  {(bigint) 2 /* 55: MMDefaultAncestor < MMDefaultAncestor: superclass init_table position */},
+  {(bigint) inheritance___MMDefaultAncestor___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction695(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMDefaultAncestor::_stype */
+/* 3: Attribute MMDefaultAncestor::_inheriter */
+void INIT_ATTRIBUTES__MMDefaultAncestor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMDefaultAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:273 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//static_type.nit:279 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMDefaultAncestor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction695;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction695(val_t self, char *from) {
-}
-val_t NEW_ReduceAction695_parser___ReduceAction695___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction695();
-  parser___ReduceAction695___init(self, init_table);
-  CHECKNEW_ReduceAction695(self, "parser::ReduceAction695::init for ReduceAction695");
-  return self;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_MMDefaultAncestor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMDefaultAncestor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMDefaultAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMDefaultAncestor_inheritance___MMDefaultAncestor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 509;
+  fra.me.meth = LOCATE_NEW_MMDefaultAncestor_inheritance___MMDefaultAncestor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//inheritance.nit:509 */
+  fra.me.REG[2] = NEW_MMDefaultAncestor();
+  INIT_ATTRIBUTES__MMDefaultAncestor(fra.me.REG[2]);
+  inheritance___MMDefaultAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMDefaultAncestor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction696[48] = {
-  {(bigint) 531 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction696 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction696 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 531 /* 3: ReduceAction696 < ReduceAction696: superclass typecheck marker */},
+const classtable_elt_t VFT_MMTypeFormal[70] = {
+  {(bigint) 1931 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMTypeFormal < Object: superclass typecheck marker */},
+  {(bigint) 131 /* 3: MMTypeFormal < MMType: superclass typecheck marker */},
+  {(bigint) 1931 /* 4: MMTypeFormal < MMTypeFormal: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96461,14 +121889,9 @@ const classtable_elt_t VFT_ReduceAction696[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction696 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMTypeFormal < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96476,7 +121899,6 @@ const classtable_elt_t VFT_ReduceAction696[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96484,42 +121906,123 @@ const classtable_elt_t VFT_ReduceAction696[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) type_formal___MMTypeFormal___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction696 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction696___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction696 < ReduceAction696: superclass init_table position */},
-  {(bigint) parser___ReduceAction696___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) primitive_info___MMType___cname},
+  {(bigint) primitive_info___MMType___is_tagged},
+  {(bigint) primitive_info___MMType___default_cvalue},
+  {(bigint) primitive_info___MMType___boxtype},
+  {(bigint) primitive_info___MMType___unboxtype},
+  {(bigint) genericity___MMTypeFormal___is_generic},
+  {(bigint) type_formal___MMTypeFormal___direct_type},
+  {(bigint) 0 /* 52: MMTypeFormal < MMType: superclass init_table position */},
+  {(bigint) static_type___MMType___mmmodule},
+  {(bigint) type_formal___MMTypeFormal___local_class},
+  {(bigint) type_formal___MMTypeFormal___is_valid},
+  {(bigint) type_formal___MMTypeFormal_____l},
+  {(bigint) type_formal___MMTypeFormal___is_supertype},
+  {(bigint) static_type___MMType___for_module},
+  {(bigint) static_type___MMType___adapt_to},
+  {(bigint) static_type___MMType___upcast_for},
+  {(bigint) static_type___MMType___not_for_self},
+  {(bigint) type_formal___MMTypeFormal___is_nullable},
+  {(bigint) static_type___MMType___as_nullable},
+  {(bigint) static_type___MMType___as_notnull},
+  {(bigint) static_type___MMType___init},
+  {(bigint) 2 /* 66: MMTypeFormal < MMTypeFormal: superclass init_table position */},
+  {(bigint) type_formal___MMTypeFormal___name},
+  {(bigint) type_formal___MMTypeFormal___bound},
+  {(bigint) type_formal___MMTypeFormal___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction696(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMTypeFormal::_as_nullable_cache */
+/* 3: Attribute MMTypeFormal::_name */
+/* 4: Attribute MMTypeFormal::_bound */
+void INIT_ATTRIBUTES__MMTypeFormal(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMTypeFormal;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:360 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMTypeFormal(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction696;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction696(val_t self, char *from) {
-}
-val_t NEW_ReduceAction696_parser___ReduceAction696___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction696();
-  parser___ReduceAction696___init(self, init_table);
-  CHECKNEW_ReduceAction696(self, "parser::ReduceAction696::init for ReduceAction696");
-  return self;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_MMTypeFormal;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMTypeFormal(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMTypeFormal;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_type_formal___MMTypeFormal____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMTypeFormal_type_formal___MMTypeFormal___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 48;
+  fra.me.meth = LOCATE_NEW_MMTypeFormal_type_formal___MMTypeFormal___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//type_formal.nit:48 */
+  fra.me.REG[2] = NEW_MMTypeFormal();
+  INIT_ATTRIBUTES__MMTypeFormal(fra.me.REG[2]);
+  type_formal___MMTypeFormal___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMTypeFormal(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction697[48] = {
-  {(bigint) 527 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction697 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction697 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 527 /* 3: ReduceAction697 < ReduceAction697: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_MMTypeGeneric[75] = {
+  {(bigint) 2599 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMTypeGeneric < Object: superclass typecheck marker */},
+  {(bigint) 131 /* 3: MMTypeGeneric < MMType: superclass typecheck marker */},
+  {(bigint) 1935 /* 4: MMTypeGeneric < MMTypeClass: superclass typecheck marker */},
+  {(bigint) 2599 /* 5: MMTypeGeneric < MMTypeGeneric: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96531,14 +122034,9 @@ const classtable_elt_t VFT_ReduceAction697[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction697 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMTypeGeneric < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96546,7 +122044,6 @@ const classtable_elt_t VFT_ReduceAction697[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96554,42 +122051,133 @@ const classtable_elt_t VFT_ReduceAction697[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) genericity___MMTypeGeneric___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction697 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction697___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction697 < ReduceAction697: superclass init_table position */},
-  {(bigint) parser___ReduceAction697___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) primitive_info___MMType___cname},
+  {(bigint) primitive_info___MMType___is_tagged},
+  {(bigint) primitive_info___MMType___default_cvalue},
+  {(bigint) primitive_info___MMType___boxtype},
+  {(bigint) primitive_info___MMType___unboxtype},
+  {(bigint) genericity___MMTypeGeneric___is_generic},
+  {(bigint) type_formal___MMType___direct_type},
+  {(bigint) 0 /* 52: MMTypeGeneric < MMType: superclass init_table position */},
+  {(bigint) static_type___MMTypeClass___mmmodule},
+  {(bigint) static_type___MMTypeClass___local_class},
+  {(bigint) static_type___MMType___is_valid},
+  {(bigint) static_type___MMTypeClass_____l},
+  {(bigint) genericity___MMTypeGeneric___is_supertype},
+  {(bigint) genericity___MMTypeGeneric___for_module},
+  {(bigint) genericity___MMTypeGeneric___adapt_to},
+  {(bigint) genericity___MMTypeGeneric___upcast_for},
+  {(bigint) static_type___MMType___not_for_self},
+  {(bigint) static_type___MMType___is_nullable},
+  {(bigint) static_type___MMType___as_nullable},
+  {(bigint) static_type___MMType___as_notnull},
+  {(bigint) static_type___MMType___init},
+  {(bigint) 2 /* 66: MMTypeGeneric < MMTypeClass: superclass init_table position */},
+  {(bigint) static_type___MMTypeClass___init},
+  {(bigint) 3 /* 68: MMTypeGeneric < MMTypeGeneric: superclass init_table position */},
+  {(bigint) genericity___MMTypeGeneric___params},
+  {(bigint) static_type___MMTypeClass___upcast_for},
+  {(bigint) genericity___MMTypeGeneric___params_equals},
+  {(bigint) static_type___MMTypeClass___to_s},
+  {(bigint) genericity___MMTypeGeneric___is_subtype},
+  {(bigint) genericity___MMTypeGeneric___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction697(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMTypeGeneric::_as_nullable_cache */
+/* 3: Attribute MMTypeGeneric::_local_class */
+/* 4: Attribute MMTypeGeneric::_params */
+void INIT_ATTRIBUTES__MMTypeGeneric(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMTypeGeneric;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:360 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMTypeGeneric(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction697;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction697(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_MMTypeGeneric;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMTypeGeneric(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMTypeGeneric;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_genericity___MMTypeGeneric____params(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_params", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction697_parser___ReduceAction697___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction697();
-  parser___ReduceAction697___init(self, init_table);
-  CHECKNEW_ReduceAction697(self, "parser::ReduceAction697::init for ReduceAction697");
-  return self;
+val_t NEW_MMTypeGeneric_genericity___MMTypeGeneric___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 189;
+  fra.me.meth = LOCATE_NEW_MMTypeGeneric_genericity___MMTypeGeneric___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//genericity.nit:189 */
+  fra.me.REG[2] = NEW_MMTypeGeneric();
+  INIT_ATTRIBUTES__MMTypeGeneric(fra.me.REG[2]);
+  genericity___MMTypeGeneric___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMTypeGeneric(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction698[48] = {
-  {(bigint) 523 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction698 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction698 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 523 /* 3: ReduceAction698 < ReduceAction698: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_MMTypeFormalParameter[76] = {
+  {(bigint) 2603 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMTypeFormalParameter < Object: superclass typecheck marker */},
+  {(bigint) 131 /* 3: MMTypeFormalParameter < MMType: superclass typecheck marker */},
+  {(bigint) 1931 /* 4: MMTypeFormalParameter < MMTypeFormal: superclass typecheck marker */},
+  {(bigint) 2603 /* 5: MMTypeFormalParameter < MMTypeFormalParameter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96601,14 +122189,9 @@ const classtable_elt_t VFT_ReduceAction698[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction698 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMTypeFormalParameter < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96616,7 +122199,6 @@ const classtable_elt_t VFT_ReduceAction698[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96624,41 +122206,169 @@ const classtable_elt_t VFT_ReduceAction698[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) type_formal___MMTypeFormal___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction698 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction698___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction698 < ReduceAction698: superclass init_table position */},
-  {(bigint) parser___ReduceAction698___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) primitive_info___MMType___cname},
+  {(bigint) primitive_info___MMType___is_tagged},
+  {(bigint) primitive_info___MMType___default_cvalue},
+  {(bigint) primitive_info___MMType___boxtype},
+  {(bigint) primitive_info___MMType___unboxtype},
+  {(bigint) genericity___MMTypeFormal___is_generic},
+  {(bigint) type_formal___MMTypeFormal___direct_type},
+  {(bigint) 0 /* 52: MMTypeFormalParameter < MMType: superclass init_table position */},
+  {(bigint) genericity___MMTypeFormalParameter___mmmodule},
+  {(bigint) type_formal___MMTypeFormal___local_class},
+  {(bigint) type_formal___MMTypeFormal___is_valid},
+  {(bigint) type_formal___MMTypeFormal_____l},
+  {(bigint) type_formal___MMTypeFormal___is_supertype},
+  {(bigint) genericity___MMTypeFormalParameter___for_module},
+  {(bigint) genericity___MMTypeFormalParameter___adapt_to},
+  {(bigint) genericity___MMTypeFormalParameter___upcast_for},
+  {(bigint) static_type___MMType___not_for_self},
+  {(bigint) type_formal___MMTypeFormal___is_nullable},
+  {(bigint) static_type___MMType___as_nullable},
+  {(bigint) static_type___MMType___as_notnull},
+  {(bigint) static_type___MMType___init},
+  {(bigint) 2 /* 66: MMTypeFormalParameter < MMTypeFormal: superclass init_table position */},
+  {(bigint) type_formal___MMTypeFormal___name},
+  {(bigint) type_formal___MMTypeFormal___bound},
+  {(bigint) type_formal___MMTypeFormal___init},
+  {(bigint) 3 /* 70: MMTypeFormalParameter < MMTypeFormalParameter: superclass init_table position */},
+  {(bigint) genericity___MMTypeFormalParameter___def_class},
+  {(bigint) genericity___MMTypeFormalParameter___position},
+  {(bigint) genericity___MMTypeFormalParameter___bound__eq},
+  {(bigint) genericity___MMTypeFormalParameter___with_bound},
+  {(bigint) genericity___MMTypeFormalParameter___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction698(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMTypeFormalParameter::_as_nullable_cache */
+/* 3: Attribute MMTypeFormalParameter::_name */
+/* 4: Attribute MMTypeFormalParameter::_bound */
+/* 5: Attribute MMTypeFormalParameter::_def_class */
+/* 6: Attribute MMTypeFormalParameter::_position */
+void INIT_ATTRIBUTES__MMTypeFormalParameter(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMTypeFormalParameter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:360 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMTypeFormalParameter(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction698;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction698(val_t self, char *from) {
-}
-val_t NEW_ReduceAction698_parser___ReduceAction698___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction698();
-  parser___ReduceAction698___init(self, init_table);
-  CHECKNEW_ReduceAction698(self, "parser::ReduceAction698::init for ReduceAction698");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_MMTypeFormalParameter;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMTypeFormalParameter(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMTypeFormalParameter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_genericity___MMTypeFormalParameter____def_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_def_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_genericity___MMTypeFormalParameter____position(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_position", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_type_formal___MMTypeFormal____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction699[48] = {
-  {(bigint) 519 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction699 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction699 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 519 /* 3: ReduceAction699 < ReduceAction699: superclass typecheck marker */},
+val_t NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___with_bound(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 236;
+  fra.me.meth = LOCATE_NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___with_bound;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  fra.me.REG[2] = p3;
+  /* ./metamodel//genericity.nit:236 */
+  fra.me.REG[3] = NEW_MMTypeFormalParameter();
+  INIT_ATTRIBUTES__MMTypeFormalParameter(fra.me.REG[3]);
+  genericity___MMTypeFormalParameter___with_bound(fra.me.REG[3], fra.me.REG[0], REGB0, fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_MMTypeFormalParameter(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+val_t NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 242;
+  fra.me.meth = LOCATE_NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  /* ./metamodel//genericity.nit:242 */
+  fra.me.REG[2] = NEW_MMTypeFormalParameter();
+  INIT_ATTRIBUTES__MMTypeFormalParameter(fra.me.REG[2]);
+  genericity___MMTypeFormalParameter___init(fra.me.REG[2], fra.me.REG[0], REGB0, fra.me.REG[1], init_table);
+  CHECKNEW_MMTypeFormalParameter(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_MMTypeProperty[70] = {
+  {(bigint) 1923 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMTypeProperty < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMTypeProperty < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 1923 /* 4: MMTypeProperty < MMTypeProperty: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96671,14 +122381,9 @@ const classtable_elt_t VFT_ReduceAction699[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction699 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMTypeProperty < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96686,7 +122391,6 @@ const classtable_elt_t VFT_ReduceAction699[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96694,42 +122398,156 @@ const classtable_elt_t VFT_ReduceAction699[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction699 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction699___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction699 < ReduceAction699: superclass init_table position */},
-  {(bigint) parser___ReduceAction699___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax_base___MMLocalProperty___node},
+  {(bigint) syntax_base___MMLocalProperty___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMTypeProperty < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) 2 /* 67: MMTypeProperty < MMTypeProperty: superclass init_table position */},
+  {(bigint) virtualtype___MMTypeProperty___stype_for},
+  {(bigint) virtualtype___MMTypeProperty___real_stype_for},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction699(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMTypeProperty::_signature */
+/* 3: Attribute MMTypeProperty::_signatures_cache */
+/* 4: Attribute MMTypeProperty::_name */
+/* 5: Attribute MMTypeProperty::_local_class */
+/* 6: Attribute MMTypeProperty::_global */
+/* 7: Attribute MMTypeProperty::_prhe */
+/* 8: Attribute MMTypeProperty::_need_super */
+/* 9: Attribute MMTypeProperty::_cname_cache */
+/* 10: Attribute MMTypeProperty::_stypes_cache */
+void INIT_ATTRIBUTES__MMTypeProperty(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMTypeProperty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//virtualtype.nit:40 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMTypeProperty(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction699;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction699(val_t self, char *from) {
-}
-val_t NEW_ReduceAction699_parser___ReduceAction699___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction699();
-  parser___ReduceAction699___init(self, init_table);
-  CHECKNEW_ReduceAction699(self, "parser::ReduceAction699::init for ReduceAction699");
-  return self;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_MMTypeProperty;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMTypeProperty(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMTypeProperty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMTypeProperty_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 643;
+  fra.me.meth = LOCATE_NEW_MMTypeProperty_abstractmetamodel___MMLocalProperty___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//abstractmetamodel.nit:643 */
+  fra.me.REG[2] = NEW_MMTypeProperty();
+  INIT_ATTRIBUTES__MMTypeProperty(fra.me.REG[2]);
+  abstractmetamodel___MMLocalProperty___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMTypeProperty(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction700[48] = {
-  {(bigint) 507 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction700 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction700 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 507 /* 3: ReduceAction700 < ReduceAction700: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_MMVirtualType[74] = {
+  {(bigint) 2591 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMVirtualType < Object: superclass typecheck marker */},
+  {(bigint) 131 /* 3: MMVirtualType < MMType: superclass typecheck marker */},
+  {(bigint) 1931 /* 4: MMVirtualType < MMTypeFormal: superclass typecheck marker */},
+  {(bigint) 2591 /* 5: MMVirtualType < MMVirtualType: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96741,14 +122559,9 @@ const classtable_elt_t VFT_ReduceAction700[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction700 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMVirtualType < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96756,7 +122569,6 @@ const classtable_elt_t VFT_ReduceAction700[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96764,41 +122576,137 @@ const classtable_elt_t VFT_ReduceAction700[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) type_formal___MMTypeFormal___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction700 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction700___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction700 < ReduceAction700: superclass init_table position */},
-  {(bigint) parser___ReduceAction700___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) primitive_info___MMType___cname},
+  {(bigint) primitive_info___MMType___is_tagged},
+  {(bigint) primitive_info___MMType___default_cvalue},
+  {(bigint) primitive_info___MMType___boxtype},
+  {(bigint) primitive_info___MMType___unboxtype},
+  {(bigint) genericity___MMTypeFormal___is_generic},
+  {(bigint) type_formal___MMTypeFormal___direct_type},
+  {(bigint) 0 /* 52: MMVirtualType < MMType: superclass init_table position */},
+  {(bigint) virtualtype___MMVirtualType___mmmodule},
+  {(bigint) type_formal___MMTypeFormal___local_class},
+  {(bigint) type_formal___MMTypeFormal___is_valid},
+  {(bigint) type_formal___MMTypeFormal_____l},
+  {(bigint) type_formal___MMTypeFormal___is_supertype},
+  {(bigint) virtualtype___MMVirtualType___for_module},
+  {(bigint) virtualtype___MMVirtualType___adapt_to},
+  {(bigint) static_type___MMType___upcast_for},
+  {(bigint) virtualtype___MMVirtualType___not_for_self},
+  {(bigint) type_formal___MMTypeFormal___is_nullable},
+  {(bigint) static_type___MMType___as_nullable},
+  {(bigint) static_type___MMType___as_notnull},
+  {(bigint) static_type___MMType___init},
+  {(bigint) 2 /* 66: MMVirtualType < MMTypeFormal: superclass init_table position */},
+  {(bigint) type_formal___MMTypeFormal___name},
+  {(bigint) type_formal___MMTypeFormal___bound},
+  {(bigint) type_formal___MMTypeFormal___init},
+  {(bigint) 3 /* 70: MMVirtualType < MMVirtualType: superclass init_table position */},
+  {(bigint) virtualtype___MMVirtualType___property},
+  {(bigint) virtualtype___MMVirtualType___recv},
+  {(bigint) virtualtype___MMVirtualType___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction700(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMVirtualType::_as_nullable_cache */
+/* 3: Attribute MMVirtualType::_name */
+/* 4: Attribute MMVirtualType::_bound */
+/* 5: Attribute MMVirtualType::_property */
+/* 6: Attribute MMVirtualType::_recv */
+void INIT_ATTRIBUTES__MMVirtualType(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMVirtualType;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:360 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMVirtualType(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction700;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction700(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_MMVirtualType;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMVirtualType(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMVirtualType;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_virtualtype___MMVirtualType____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_virtualtype___MMVirtualType____recv(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_recv", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_type_formal___MMTypeFormal____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction700_parser___ReduceAction700___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction700();
-  parser___ReduceAction700___init(self, init_table);
-  CHECKNEW_ReduceAction700(self, "parser::ReduceAction700::init for ReduceAction700");
-  return self;
+val_t NEW_MMVirtualType_virtualtype___MMVirtualType___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 64;
+  fra.me.meth = LOCATE_NEW_MMVirtualType_virtualtype___MMVirtualType___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//virtualtype.nit:64 */
+  fra.me.REG[2] = NEW_MMVirtualType();
+  INIT_ATTRIBUTES__MMVirtualType(fra.me.REG[2]);
+  virtualtype___MMVirtualType___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMVirtualType(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction701[48] = {
-  {(bigint) 503 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction701 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction701 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 503 /* 3: ReduceAction701 < ReduceAction701: superclass typecheck marker */},
+const classtable_elt_t VFT_Option[59] = {
+  {(bigint) 111 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Option < Object: superclass typecheck marker */},
+  {(bigint) 111 /* 3: Option < Option: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96811,14 +122719,10 @@ const classtable_elt_t VFT_ReduceAction701[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction701 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Option < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96826,7 +122730,6 @@ const classtable_elt_t VFT_ReduceAction701[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96834,41 +122737,119 @@ const classtable_elt_t VFT_ReduceAction701[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) opts___Option___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction701 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction701___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction701 < ReduceAction701: superclass init_table position */},
-  {(bigint) parser___ReduceAction701___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: Option < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___value__eq},
+  {(bigint) opts___Option___value},
+  {(bigint) opts___Option___default_value},
+  {(bigint) opts___Option___default_value__eq},
+  {(bigint) opts___Option___init_opt},
+  {(bigint) opts___Option___add_aliases},
+  {(bigint) opts___Option___pretty},
+  {(bigint) opts___Option___pretty_default},
+  {(bigint) opts___Option___read_param},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction701(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute Option::_names */
+/* 3: Attribute Option::_helptext */
+/* 4: Attribute Option::_mandatory */
+/* 5: Attribute Option::_value */
+/* 6: Attribute Option::_default_value */
+void INIT_ATTRIBUTES__Option(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Option;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Option(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction701;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction701(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_Option;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Option(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Option;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction701_parser___ReduceAction701___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction701();
-  parser___ReduceAction701___init(self, init_table);
-  CHECKNEW_ReduceAction701(self, "parser::ReduceAction701::init for ReduceAction701");
-  return self;
+val_t NEW_Option_opts___Option___init_opt(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 37;
+  fra.me.meth = LOCATE_NEW_Option_opts___Option___init_opt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./../lib/opts.nit:37 */
+  fra.me.REG[3] = NEW_Option();
+  INIT_ATTRIBUTES__Option(fra.me.REG[3]);
+  opts___Option___init_opt(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_Option(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_ReduceAction702[48] = {
-  {(bigint) 499 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction702 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction702 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 499 /* 3: ReduceAction702 < ReduceAction702: superclass typecheck marker */},
+const classtable_elt_t VFT_OptionText[61] = {
+  {(bigint) 1875 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OptionText < Object: superclass typecheck marker */},
+  {(bigint) 111 /* 3: OptionText < Option: superclass typecheck marker */},
+  {(bigint) 1875 /* 4: OptionText < OptionText: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96881,14 +122862,9 @@ const classtable_elt_t VFT_ReduceAction702[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction702 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OptionText < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96896,7 +122872,6 @@ const classtable_elt_t VFT_ReduceAction702[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96904,41 +122879,117 @@ const classtable_elt_t VFT_ReduceAction702[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) opts___OptionText___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction702 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction702___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction702 < ReduceAction702: superclass init_table position */},
-  {(bigint) parser___ReduceAction702___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: OptionText < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___value__eq},
+  {(bigint) opts___Option___value},
+  {(bigint) opts___Option___default_value},
+  {(bigint) opts___Option___default_value__eq},
+  {(bigint) opts___Option___init_opt},
+  {(bigint) opts___Option___add_aliases},
+  {(bigint) opts___OptionText___pretty},
+  {(bigint) opts___Option___pretty_default},
+  {(bigint) opts___Option___read_param},
+  {(bigint) 2 /* 59: OptionText < OptionText: superclass init_table position */},
+  {(bigint) opts___OptionText___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction702(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute OptionText::_names */
+/* 3: Attribute OptionText::_helptext */
+/* 4: Attribute OptionText::_mandatory */
+/* 5: Attribute OptionText::_value */
+/* 6: Attribute OptionText::_default_value */
+void INIT_ATTRIBUTES__OptionText(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OptionText;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionText(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction702;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction702(val_t self, char *from) {
-}
-val_t NEW_ReduceAction702_parser___ReduceAction702___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction702();
-  parser___ReduceAction702___init(self, init_table);
-  CHECKNEW_ReduceAction702(self, "parser::ReduceAction702::init for ReduceAction702");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_OptionText;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OptionText(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OptionText;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionText_opts___OptionText___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 83;
+  fra.me.meth = LOCATE_NEW_OptionText_opts___OptionText___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/opts.nit:83 */
+  fra.me.REG[1] = NEW_OptionText();
+  INIT_ATTRIBUTES__OptionText(fra.me.REG[1]);
+  opts___OptionText___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_OptionText(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
 }
-const classtable_elt_t VFT_ReduceAction703[48] = {
-  {(bigint) 495 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction703 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction703 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 495 /* 3: ReduceAction703 < ReduceAction703: superclass typecheck marker */},
+const classtable_elt_t VFT_OptionBool[61] = {
+  {(bigint) 1887 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OptionBool < Object: superclass typecheck marker */},
+  {(bigint) 111 /* 3: OptionBool < Option: superclass typecheck marker */},
+  {(bigint) 1887 /* 4: OptionBool < OptionBool: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96951,14 +123002,9 @@ const classtable_elt_t VFT_ReduceAction703[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction703 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OptionBool < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -96966,7 +123012,6 @@ const classtable_elt_t VFT_ReduceAction703[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -96974,41 +123019,119 @@ const classtable_elt_t VFT_ReduceAction703[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) opts___Option___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction703 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction703___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction703 < ReduceAction703: superclass init_table position */},
-  {(bigint) parser___ReduceAction703___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: OptionBool < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___value__eq},
+  {(bigint) opts___Option___value},
+  {(bigint) opts___Option___default_value},
+  {(bigint) opts___Option___default_value__eq},
+  {(bigint) opts___Option___init_opt},
+  {(bigint) opts___Option___add_aliases},
+  {(bigint) opts___Option___pretty},
+  {(bigint) opts___Option___pretty_default},
+  {(bigint) opts___OptionBool___read_param},
+  {(bigint) 2 /* 59: OptionBool < OptionBool: superclass init_table position */},
+  {(bigint) opts___OptionBool___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction703(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute OptionBool::_names */
+/* 3: Attribute OptionBool::_helptext */
+/* 4: Attribute OptionBool::_mandatory */
+/* 5: Attribute OptionBool::_value */
+/* 6: Attribute OptionBool::_default_value */
+void INIT_ATTRIBUTES__OptionBool(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OptionBool;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionBool(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction703;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction703(val_t self, char *from) {
-}
-val_t NEW_ReduceAction703_parser___ReduceAction703___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction703();
-  parser___ReduceAction703___init(self, init_table);
-  CHECKNEW_ReduceAction703(self, "parser::ReduceAction703::init for ReduceAction703");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_OptionBool;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OptionBool(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OptionBool;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionBool_opts___OptionBool___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 94;
+  fra.me.meth = LOCATE_NEW_OptionBool_opts___OptionBool___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/opts.nit:94 */
+  fra.me.REG[2] = NEW_OptionBool();
+  INIT_ATTRIBUTES__OptionBool(fra.me.REG[2]);
+  opts___OptionBool___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_OptionBool(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction704[48] = {
-  {(bigint) 491 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction704 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction704 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 491 /* 3: ReduceAction704 < ReduceAction704: superclass typecheck marker */},
+const classtable_elt_t VFT_OptionCount[61] = {
+  {(bigint) 1883 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OptionCount < Object: superclass typecheck marker */},
+  {(bigint) 111 /* 3: OptionCount < Option: superclass typecheck marker */},
+  {(bigint) 1883 /* 4: OptionCount < OptionCount: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97021,14 +123144,9 @@ const classtable_elt_t VFT_ReduceAction704[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction704 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OptionCount < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97036,7 +123154,6 @@ const classtable_elt_t VFT_ReduceAction704[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97044,41 +123161,119 @@ const classtable_elt_t VFT_ReduceAction704[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) opts___Option___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction704 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction704___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction704 < ReduceAction704: superclass init_table position */},
-  {(bigint) parser___ReduceAction704___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: OptionCount < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___value__eq},
+  {(bigint) opts___Option___value},
+  {(bigint) opts___Option___default_value},
+  {(bigint) opts___Option___default_value__eq},
+  {(bigint) opts___Option___init_opt},
+  {(bigint) opts___Option___add_aliases},
+  {(bigint) opts___Option___pretty},
+  {(bigint) opts___Option___pretty_default},
+  {(bigint) opts___OptionCount___read_param},
+  {(bigint) 2 /* 59: OptionCount < OptionCount: superclass init_table position */},
+  {(bigint) opts___OptionCount___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction704(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute OptionCount::_names */
+/* 3: Attribute OptionCount::_helptext */
+/* 4: Attribute OptionCount::_mandatory */
+/* 5: Attribute OptionCount::_value */
+/* 6: Attribute OptionCount::_default_value */
+void INIT_ATTRIBUTES__OptionCount(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OptionCount;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionCount(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction704;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction704(val_t self, char *from) {
-}
-val_t NEW_ReduceAction704_parser___ReduceAction704___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction704();
-  parser___ReduceAction704___init(self, init_table);
-  CHECKNEW_ReduceAction704(self, "parser::ReduceAction704::init for ReduceAction704");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_OptionCount;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OptionCount(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OptionCount;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionCount_opts___OptionCount___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 103;
+  fra.me.meth = LOCATE_NEW_OptionCount_opts___OptionCount___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/opts.nit:103 */
+  fra.me.REG[2] = NEW_OptionCount();
+  INIT_ATTRIBUTES__OptionCount(fra.me.REG[2]);
+  opts___OptionCount___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_OptionCount(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction705[48] = {
-  {(bigint) 487 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction705 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction705 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 487 /* 3: ReduceAction705 < ReduceAction705: superclass typecheck marker */},
+const classtable_elt_t VFT_OptionParameter[62] = {
+  {(bigint) 1879 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OptionParameter < Object: superclass typecheck marker */},
+  {(bigint) 111 /* 3: OptionParameter < Option: superclass typecheck marker */},
+  {(bigint) 1879 /* 4: OptionParameter < OptionParameter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97091,14 +123286,9 @@ const classtable_elt_t VFT_ReduceAction705[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction705 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OptionParameter < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97106,7 +123296,6 @@ const classtable_elt_t VFT_ReduceAction705[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97114,42 +123303,123 @@ const classtable_elt_t VFT_ReduceAction705[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) opts___Option___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction705 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction705___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction705 < ReduceAction705: superclass init_table position */},
-  {(bigint) parser___ReduceAction705___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: OptionParameter < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___value__eq},
+  {(bigint) opts___Option___value},
+  {(bigint) opts___Option___default_value},
+  {(bigint) opts___Option___default_value__eq},
+  {(bigint) opts___Option___init_opt},
+  {(bigint) opts___Option___add_aliases},
+  {(bigint) opts___Option___pretty},
+  {(bigint) opts___Option___pretty_default},
+  {(bigint) opts___OptionParameter___read_param},
+  {(bigint) 2 /* 59: OptionParameter < OptionParameter: superclass init_table position */},
+  {(bigint) opts___OptionParameter___convert},
+  {(bigint) opts___OptionParameter___init_opt},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction705(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute OptionParameter::_names */
+/* 3: Attribute OptionParameter::_helptext */
+/* 4: Attribute OptionParameter::_mandatory */
+/* 5: Attribute OptionParameter::_value */
+/* 6: Attribute OptionParameter::_default_value */
+void INIT_ATTRIBUTES__OptionParameter(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OptionParameter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionParameter(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction705;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction705(val_t self, char *from) {
-}
-val_t NEW_ReduceAction705_parser___ReduceAction705___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction705();
-  parser___ReduceAction705___init(self, init_table);
-  CHECKNEW_ReduceAction705(self, "parser::ReduceAction705::init for ReduceAction705");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_OptionParameter;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OptionParameter(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OptionParameter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionParameter_opts___OptionParameter___init_opt(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 123;
+  fra.me.meth = LOCATE_NEW_OptionParameter_opts___OptionParameter___init_opt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./../lib/opts.nit:123 */
+  fra.me.REG[3] = NEW_OptionParameter();
+  INIT_ATTRIBUTES__OptionParameter(fra.me.REG[3]);
+  opts___OptionParameter___init_opt(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_OptionParameter(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_ReduceAction706[48] = {
-  {(bigint) 483 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction706 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction706 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 483 /* 3: ReduceAction706 < ReduceAction706: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_OptionString[64] = {
+  {(bigint) 2559 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OptionString < Object: superclass typecheck marker */},
+  {(bigint) 111 /* 3: OptionString < Option: superclass typecheck marker */},
+  {(bigint) 1879 /* 4: OptionString < OptionParameter: superclass typecheck marker */},
+  {(bigint) 2559 /* 5: OptionString < OptionString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97161,14 +123431,9 @@ const classtable_elt_t VFT_ReduceAction706[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction706 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OptionString < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97176,7 +123441,6 @@ const classtable_elt_t VFT_ReduceAction706[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97184,42 +123448,123 @@ const classtable_elt_t VFT_ReduceAction706[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) opts___Option___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction706 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction706___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction706 < ReduceAction706: superclass init_table position */},
-  {(bigint) parser___ReduceAction706___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: OptionString < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___value__eq},
+  {(bigint) opts___Option___value},
+  {(bigint) opts___Option___default_value},
+  {(bigint) opts___Option___default_value__eq},
+  {(bigint) opts___Option___init_opt},
+  {(bigint) opts___Option___add_aliases},
+  {(bigint) opts___Option___pretty},
+  {(bigint) opts___Option___pretty_default},
+  {(bigint) opts___OptionParameter___read_param},
+  {(bigint) 2 /* 59: OptionString < OptionParameter: superclass init_table position */},
+  {(bigint) opts___OptionString___convert},
+  {(bigint) opts___OptionParameter___init_opt},
+  {(bigint) 3 /* 62: OptionString < OptionString: superclass init_table position */},
+  {(bigint) opts___OptionString___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction706(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute OptionString::_names */
+/* 3: Attribute OptionString::_helptext */
+/* 4: Attribute OptionString::_mandatory */
+/* 5: Attribute OptionString::_value */
+/* 6: Attribute OptionString::_default_value */
+void INIT_ATTRIBUTES__OptionString(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OptionString;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionString(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction706;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction706(val_t self, char *from) {
-}
-val_t NEW_ReduceAction706_parser___ReduceAction706___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction706();
-  parser___ReduceAction706___init(self, init_table);
-  CHECKNEW_ReduceAction706(self, "parser::ReduceAction706::init for ReduceAction706");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_OptionString;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OptionString(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OptionString;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction707[48] = {
-  {(bigint) 479 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction707 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction707 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 479 /* 3: ReduceAction707 < ReduceAction707: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_OptionString_opts___OptionString___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 130;
+  fra.me.meth = LOCATE_NEW_OptionString_opts___OptionString___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/opts.nit:130 */
+  fra.me.REG[2] = NEW_OptionString();
+  INIT_ATTRIBUTES__OptionString(fra.me.REG[2]);
+  opts___OptionString___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_OptionString(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_OptionEnum[65] = {
+  {(bigint) 2567 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OptionEnum < Object: superclass typecheck marker */},
+  {(bigint) 111 /* 3: OptionEnum < Option: superclass typecheck marker */},
+  {(bigint) 1879 /* 4: OptionEnum < OptionParameter: superclass typecheck marker */},
+  {(bigint) 2567 /* 5: OptionEnum < OptionEnum: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97231,14 +123576,9 @@ const classtable_elt_t VFT_ReduceAction707[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction707 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OptionEnum < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97246,7 +123586,6 @@ const classtable_elt_t VFT_ReduceAction707[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97254,42 +123593,134 @@ const classtable_elt_t VFT_ReduceAction707[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) opts___Option___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction707 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction707___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction707 < ReduceAction707: superclass init_table position */},
-  {(bigint) parser___ReduceAction707___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: OptionEnum < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___value__eq},
+  {(bigint) opts___Option___value},
+  {(bigint) opts___Option___default_value},
+  {(bigint) opts___Option___default_value__eq},
+  {(bigint) opts___Option___init_opt},
+  {(bigint) opts___Option___add_aliases},
+  {(bigint) opts___Option___pretty},
+  {(bigint) opts___OptionEnum___pretty_default},
+  {(bigint) opts___OptionParameter___read_param},
+  {(bigint) 2 /* 59: OptionEnum < OptionParameter: superclass init_table position */},
+  {(bigint) opts___OptionEnum___convert},
+  {(bigint) opts___OptionParameter___init_opt},
+  {(bigint) 3 /* 62: OptionEnum < OptionEnum: superclass init_table position */},
+  {(bigint) opts___OptionEnum___init},
+  {(bigint) opts___OptionEnum___value_name},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction707(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute OptionEnum::_names */
+/* 3: Attribute OptionEnum::_helptext */
+/* 4: Attribute OptionEnum::_mandatory */
+/* 5: Attribute OptionEnum::_value */
+/* 6: Attribute OptionEnum::_default_value */
+/* 7: Attribute OptionEnum::_values */
+void INIT_ATTRIBUTES__OptionEnum(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OptionEnum;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionEnum(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction707;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction707(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_OptionEnum;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OptionEnum(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OptionEnum;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_values", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction707_parser___ReduceAction707___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction707();
-  parser___ReduceAction707___init(self, init_table);
-  CHECKNEW_ReduceAction707(self, "parser::ReduceAction707::init for ReduceAction707");
-  return self;
+val_t NEW_OptionEnum_opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 140;
+  fra.me.meth = LOCATE_NEW_OptionEnum_opts___OptionEnum___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  REGB0 = p2;
+  fra.me.REG[2] = p3;
+  /* ./../lib/opts.nit:140 */
+  fra.me.REG[3] = NEW_OptionEnum();
+  INIT_ATTRIBUTES__OptionEnum(fra.me.REG[3]);
+  opts___OptionEnum___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], REGB0, fra.me.REG[2], init_table);
+  CHECKNEW_OptionEnum(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_ReduceAction708[48] = {
-  {(bigint) 475 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction708 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction708 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 475 /* 3: ReduceAction708 < ReduceAction708: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_OptionInt[64] = {
+  {(bigint) 2563 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OptionInt < Object: superclass typecheck marker */},
+  {(bigint) 111 /* 3: OptionInt < Option: superclass typecheck marker */},
+  {(bigint) 1879 /* 4: OptionInt < OptionParameter: superclass typecheck marker */},
+  {(bigint) 2563 /* 5: OptionInt < OptionInt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97301,14 +123732,9 @@ const classtable_elt_t VFT_ReduceAction708[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction708 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OptionInt < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97316,7 +123742,6 @@ const classtable_elt_t VFT_ReduceAction708[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97324,42 +123749,125 @@ const classtable_elt_t VFT_ReduceAction708[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) opts___Option___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction708 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction708___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction708 < ReduceAction708: superclass init_table position */},
-  {(bigint) parser___ReduceAction708___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: OptionInt < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___value__eq},
+  {(bigint) opts___Option___value},
+  {(bigint) opts___Option___default_value},
+  {(bigint) opts___Option___default_value__eq},
+  {(bigint) opts___Option___init_opt},
+  {(bigint) opts___Option___add_aliases},
+  {(bigint) opts___Option___pretty},
+  {(bigint) opts___Option___pretty_default},
+  {(bigint) opts___OptionParameter___read_param},
+  {(bigint) 2 /* 59: OptionInt < OptionParameter: superclass init_table position */},
+  {(bigint) opts___OptionInt___convert},
+  {(bigint) opts___OptionParameter___init_opt},
+  {(bigint) 3 /* 62: OptionInt < OptionInt: superclass init_table position */},
+  {(bigint) opts___OptionInt___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction708(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute OptionInt::_names */
+/* 3: Attribute OptionInt::_helptext */
+/* 4: Attribute OptionInt::_mandatory */
+/* 5: Attribute OptionInt::_value */
+/* 6: Attribute OptionInt::_default_value */
+void INIT_ATTRIBUTES__OptionInt(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OptionInt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionInt(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction708;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction708(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_OptionInt;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OptionInt(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OptionInt;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ReduceAction708_parser___ReduceAction708___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction708();
-  parser___ReduceAction708___init(self, init_table);
-  CHECKNEW_ReduceAction708(self, "parser::ReduceAction708::init for ReduceAction708");
-  return self;
+val_t NEW_OptionInt_opts___OptionInt___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 169;
+  fra.me.meth = LOCATE_NEW_OptionInt_opts___OptionInt___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  /* ./../lib/opts.nit:169 */
+  fra.me.REG[2] = NEW_OptionInt();
+  INIT_ATTRIBUTES__OptionInt(fra.me.REG[2]);
+  opts___OptionInt___init(fra.me.REG[2], fra.me.REG[0], REGB0, fra.me.REG[1], init_table);
+  CHECKNEW_OptionInt(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction709[48] = {
-  {(bigint) 471 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction709 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction709 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 471 /* 3: ReduceAction709 < ReduceAction709: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_OptionArray[64] = {
+  {(bigint) 2571 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OptionArray < Object: superclass typecheck marker */},
+  {(bigint) 111 /* 3: OptionArray < Option: superclass typecheck marker */},
+  {(bigint) 1879 /* 4: OptionArray < OptionParameter: superclass typecheck marker */},
+  {(bigint) 2571 /* 5: OptionArray < OptionArray: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97371,14 +123879,9 @@ const classtable_elt_t VFT_ReduceAction709[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction709 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OptionArray < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97386,7 +123889,6 @@ const classtable_elt_t VFT_ReduceAction709[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97394,41 +123896,127 @@ const classtable_elt_t VFT_ReduceAction709[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) opts___Option___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction709 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction709___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction709 < ReduceAction709: superclass init_table position */},
-  {(bigint) parser___ReduceAction709___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: OptionArray < Option: superclass init_table position */},
+  {(bigint) opts___Option___names},
+  {(bigint) opts___Option___helptext},
+  {(bigint) opts___Option___mandatory},
+  {(bigint) opts___Option___mandatory__eq},
+  {(bigint) opts___Option___value__eq},
+  {(bigint) opts___Option___value},
+  {(bigint) opts___Option___default_value},
+  {(bigint) opts___Option___default_value__eq},
+  {(bigint) opts___Option___init_opt},
+  {(bigint) opts___Option___add_aliases},
+  {(bigint) opts___Option___pretty},
+  {(bigint) opts___Option___pretty_default},
+  {(bigint) opts___OptionParameter___read_param},
+  {(bigint) 2 /* 59: OptionArray < OptionParameter: superclass init_table position */},
+  {(bigint) opts___OptionArray___convert},
+  {(bigint) opts___OptionParameter___init_opt},
+  {(bigint) 3 /* 62: OptionArray < OptionArray: superclass init_table position */},
+  {(bigint) opts___OptionArray___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction709(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute OptionArray::_names */
+/* 3: Attribute OptionArray::_helptext */
+/* 4: Attribute OptionArray::_mandatory */
+/* 5: Attribute OptionArray::_value */
+/* 6: Attribute OptionArray::_default_value */
+/* 7: Attribute OptionArray::_values */
+void INIT_ATTRIBUTES__OptionArray(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OptionArray;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionArray(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction709;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction709(val_t self, char *from) {
-}
-val_t NEW_ReduceAction709_parser___ReduceAction709___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction709();
-  parser___ReduceAction709___init(self, init_table);
-  CHECKNEW_ReduceAction709(self, "parser::ReduceAction709::init for ReduceAction709");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_OptionArray;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OptionArray(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OptionArray;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_opts___OptionArray____values(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_values", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___Option____mandatory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction710[48] = {
-  {(bigint) 463 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction710 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction710 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 463 /* 3: ReduceAction710 < ReduceAction710: superclass typecheck marker */},
+val_t NEW_OptionArray_opts___OptionArray___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 178;
+  fra.me.meth = LOCATE_NEW_OptionArray_opts___OptionArray___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/opts.nit:178 */
+  fra.me.REG[2] = NEW_OptionArray();
+  INIT_ATTRIBUTES__OptionArray(fra.me.REG[2]);
+  opts___OptionArray___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_OptionArray(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_OptionContext[54] = {
+  {(bigint) 107 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: OptionContext < Object: superclass typecheck marker */},
+  {(bigint) 107 /* 3: OptionContext < OptionContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97441,14 +124029,10 @@ const classtable_elt_t VFT_ReduceAction710[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction710 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: OptionContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97456,7 +124040,6 @@ const classtable_elt_t VFT_ReduceAction710[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97464,42 +124047,107 @@ const classtable_elt_t VFT_ReduceAction710[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction710 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction710___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction710 < ReduceAction710: superclass init_table position */},
-  {(bigint) parser___ReduceAction710___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: OptionContext < OptionContext: superclass init_table position */},
+  {(bigint) opts___OptionContext___options},
+  {(bigint) opts___OptionContext___rest},
+  {(bigint) opts___OptionContext___usage},
+  {(bigint) opts___OptionContext___parse},
+  {(bigint) opts___OptionContext___parse_intern},
+  {(bigint) opts___OptionContext___add_option},
+  {(bigint) opts___OptionContext___init},
+  {(bigint) opts___OptionContext___build},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction710(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute OptionContext::_options */
+/* 3: Attribute OptionContext::_rest */
+/* 4: Attribute OptionContext::_optmap */
+void INIT_ATTRIBUTES__OptionContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__OptionContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_OptionContext(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction710;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction710(val_t self, char *from) {
-}
-val_t NEW_ReduceAction710_parser___ReduceAction710___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction710();
-  parser___ReduceAction710___init(self, init_table);
-  CHECKNEW_ReduceAction710(self, "parser::ReduceAction710::init for ReduceAction710");
-  return self;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_OptionContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_OptionContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_OptionContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_opts___OptionContext____options(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_options", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___OptionContext____rest(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_rest", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_opts___OptionContext____optmap(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_optmap", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction711[48] = {
-  {(bigint) 459 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction711 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction711 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 459 /* 3: ReduceAction711 < ReduceAction711: superclass typecheck marker */},
+val_t NEW_OptionContext_opts___OptionContext___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 253;
+  fra.me.meth = LOCATE_NEW_OptionContext_opts___OptionContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/opts.nit:253 */
+  fra.me.REG[0] = NEW_OptionContext();
+  INIT_ATTRIBUTES__OptionContext(fra.me.REG[0]);
+  opts___OptionContext___init(fra.me.REG[0], init_table);
+  CHECKNEW_OptionContext(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_Message[64] = {
+  {(bigint) 1907 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Message < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 243 /* 4: Message < Comparable: superclass typecheck marker */},
+  {(bigint) 1907 /* 5: Message < Message: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97511,14 +124159,9 @@ const classtable_elt_t VFT_ReduceAction711[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction711 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: Message < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97526,7 +124169,6 @@ const classtable_elt_t VFT_ReduceAction711[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97534,41 +124176,108 @@ const classtable_elt_t VFT_ReduceAction711[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) mmloader___Message___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction711 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction711___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction711 < ReduceAction711: superclass init_table position */},
-  {(bigint) parser___ReduceAction711___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction711(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 51: Message < Comparable: superclass init_table position */},
+  {(bigint) mmloader___Message_____l},
+  {(bigint) kernel___Comparable_____leq},
+  {(bigint) kernel___Comparable_____geq},
+  {(bigint) kernel___Comparable_____g},
+  {(bigint) kernel___Comparable_____leqg},
+  {(bigint) kernel___Comparable___is_between},
+  {(bigint) kernel___Comparable___max},
+  {(bigint) kernel___Comparable___min},
+  {(bigint) 2 /* 60: Message < Message: superclass init_table position */},
+  {(bigint) mmloader___Message___location},
+  {(bigint) mmloader___Message___text},
+  {(bigint) mmloader___Message___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Message::_location */
+/* 3: Attribute Message::_text */
+void INIT_ATTRIBUTES__Message(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Message;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Message(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction711;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction711(val_t self, char *from) {
-}
-val_t NEW_ReduceAction711_parser___ReduceAction711___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction711();
-  parser___ReduceAction711___init(self, init_table);
-  CHECKNEW_ReduceAction711(self, "parser::ReduceAction711::init for ReduceAction711");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction712[48] = {
-  {(bigint) 455 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction712 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction712 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 455 /* 3: ReduceAction712 < ReduceAction712: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_Message;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Message(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Message;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_mmloader___Message____text(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_text", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Message_mmloader___Message___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_Message_mmloader___Message___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = NEW_Message();
+  INIT_ATTRIBUTES__Message(fra.me.REG[2]);
+  mmloader___Message___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_Message(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ToolContext[119] = {
+  {(bigint) 291 /* 0: Identity */},
+  {(bigint) 45 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ToolContext < Object: superclass typecheck marker */},
+  {(bigint) 163 /* 3: ToolContext < MMContext: superclass typecheck marker */},
+  {(bigint) 291 /* 4: ToolContext < ToolContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97581,14 +124290,9 @@ const classtable_elt_t VFT_ReduceAction712[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction712 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ToolContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97596,7 +124300,6 @@ const classtable_elt_t VFT_ReduceAction712[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97604,46 +124307,788 @@ const classtable_elt_t VFT_ReduceAction712[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction712 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction712___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction712 < ReduceAction712: superclass init_table position */},
-  {(bigint) parser___ReduceAction712___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ToolContext < MMContext: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMContext___init},
+  {(bigint) abstractmetamodel___MMContext___module_hierarchy},
+  {(bigint) abstractmetamodel___MMContext___class_hierarchy},
+  {(bigint) abstractmetamodel___MMContext___modules},
+  {(bigint) abstractmetamodel___MMContext___add_module},
+  {(bigint) abstractmetamodel___MMContext___add_global_class},
+  {(bigint) abstractmetamodel___MMContext___add_local_class},
+  {(bigint) analysis___ToolContext___global_callgraph},
+  {(bigint) analysis___ToolContext___global_callgraph__eq},
+  {(bigint) analysis___ToolContext___no_dead_method_removal},
+  {(bigint) analysis___ToolContext___no_dead_method_removal__eq},
+  {(bigint) analysis___ToolContext___no_inline_get_set},
+  {(bigint) analysis___ToolContext___no_inline_get_set__eq},
+  {(bigint) analysis___ToolContext___no_callgraph_from_init},
+  {(bigint) analysis___ToolContext___no_callgraph_from_init__eq},
+  {(bigint) analysis___ToolContext___no_out_of_init_get_test_removal},
+  {(bigint) analysis___ToolContext___no_out_of_init_get_test_removal__eq},
+  {(bigint) syntax___ToolContext___keep_ast},
+  {(bigint) syntax___ToolContext___keep_ast__eq},
+  {(bigint) 2 /* 65: ToolContext < ToolContext: superclass init_table position */},
+  {(bigint) mmloader___ToolContext___error_count},
+  {(bigint) mmloader___ToolContext___warning_count},
+  {(bigint) mmloader___ToolContext___log_directory},
+  {(bigint) mmloader___ToolContext___check_errors},
+  {(bigint) mmloader___ToolContext___error},
+  {(bigint) mmloader___ToolContext___fatal_error},
+  {(bigint) mmloader___ToolContext___warning},
+  {(bigint) mmloader___ToolContext___info},
+  {(bigint) mmloader___ToolContext___paths},
+  {(bigint) mmloader___ToolContext___option_context},
+  {(bigint) mmloader___ToolContext___opt_warn},
+  {(bigint) mmloader___ToolContext___opt_path},
+  {(bigint) mmloader___ToolContext___opt_log},
+  {(bigint) mmloader___ToolContext___opt_log_dir},
+  {(bigint) mmloader___ToolContext___opt_only_metamodel},
+  {(bigint) mmloader___ToolContext___opt_only_parse},
+  {(bigint) mmloader___ToolContext___opt_help},
+  {(bigint) mmloader___ToolContext___opt_version},
+  {(bigint) mmloader___ToolContext___opt_verbose},
+  {(bigint) mmloader___ToolContext___verbose_level},
+  {(bigint) mmloader___ToolContext___init},
+  {(bigint) mmloader___ToolContext___process_options},
+  {(bigint) mmloader___ToolContext___try_to_load},
+  {(bigint) mmloader___ToolContext___get_module_from_filename},
+  {(bigint) mmloader___ToolContext___get_module},
+  {(bigint) mmloader___ToolContext___directory_for},
+  {(bigint) mmloader___ToolContext___register_loader},
+  {(bigint) program___ToolContext___global},
+  {(bigint) program___ToolContext___global__eq},
+  {(bigint) program___ToolContext___use_SFT_optimization__eq},
+  {(bigint) program___ToolContext___use_SFT_optimization},
+  {(bigint) compiling_base___ToolContext___compdir},
+  {(bigint) compiling_base___ToolContext___compdir__eq},
+  {(bigint) compiling_base___ToolContext___clibdir},
+  {(bigint) compiling_base___ToolContext___clibdir__eq},
+  {(bigint) compiling_base___ToolContext___bindir},
+  {(bigint) compiling_base___ToolContext___bindir__eq},
+  {(bigint) compiling_base___ToolContext___output_file},
+  {(bigint) compiling_base___ToolContext___output_file__eq},
+  {(bigint) compiling_base___ToolContext___boost},
+  {(bigint) compiling_base___ToolContext___boost__eq},
+  {(bigint) compiling_base___ToolContext___no_cc},
+  {(bigint) compiling_base___ToolContext___no_cc__eq},
+  {(bigint) compiling_base___ToolContext___cc_link},
+  {(bigint) compiling_base___ToolContext___cc_link__eq},
+  {(bigint) compiling_base___ToolContext___cc_libs},
+  {(bigint) compiling_base___ToolContext___cc_libs__eq},
+  {(bigint) compiling_base___ToolContext___cc_lib_paths},
+  {(bigint) compiling_base___ToolContext___cc_lib_paths__eq},
+  {(bigint) compiling_base___ToolContext___cc_include_paths},
+  {(bigint) compiling_base___ToolContext___cc_include_paths__eq},
+  {(bigint) compiling_base___ToolContext___ext_prefix},
+  {(bigint) compiling_base___ToolContext___ext_prefix__eq},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction712(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction712;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction712(val_t self, char *from) {
-}
-val_t NEW_ReduceAction712_parser___ReduceAction712___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction712();
-  parser___ReduceAction712___init(self, init_table);
-  CHECKNEW_ReduceAction712(self, "parser::ReduceAction712::init for ReduceAction712");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction713[48] = {
-  {(bigint) 451 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction713 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction713 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 451 /* 3: ReduceAction713 < ReduceAction713: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+/* 1: Object_id */
+/* 2: Attribute ToolContext::_module_hierarchy */
+/* 3: Attribute ToolContext::_class_hierarchy */
+/* 4: Attribute ToolContext::_global_classes */
+/* 5: Attribute ToolContext::_modules */
+/* 6: Attribute ToolContext::_global_callgraph */
+/* 7: Attribute ToolContext::_no_dead_method_removal */
+/* 8: Attribute ToolContext::_no_inline_get_set */
+/* 9: Attribute ToolContext::_no_callgraph_from_init */
+/* 10: Attribute ToolContext::_no_out_of_init_get_test_removal */
+/* 11: Attribute ToolContext::_keep_ast */
+/* 12: Attribute ToolContext::_error_count */
+/* 13: Attribute ToolContext::_warning_count */
+/* 14: Attribute ToolContext::_log_directory */
+/* 15: Attribute ToolContext::_messages */
+/* 16: Attribute ToolContext::_message_sorter */
+/* 17: Attribute ToolContext::_paths */
+/* 18: Attribute ToolContext::_loaders */
+/* 19: Attribute ToolContext::_option_context */
+/* 20: Attribute ToolContext::_opt_warn */
+/* 21: Attribute ToolContext::_opt_path */
+/* 22: Attribute ToolContext::_opt_log */
+/* 23: Attribute ToolContext::_opt_log_dir */
+/* 24: Attribute ToolContext::_opt_only_metamodel */
+/* 25: Attribute ToolContext::_opt_only_parse */
+/* 26: Attribute ToolContext::_opt_help */
+/* 27: Attribute ToolContext::_opt_version */
+/* 28: Attribute ToolContext::_opt_verbose */
+/* 29: Attribute ToolContext::_verbose_level */
+/* 30: Attribute ToolContext::_processing_modules */
+/* 31: Attribute ToolContext::_path_dirs */
+/* 32: Attribute ToolContext::_global */
+/* 33: Attribute ToolContext::_use_SFT_optimization */
+/* 34: Attribute ToolContext::_compdir */
+/* 35: Attribute ToolContext::_clibdir */
+/* 36: Attribute ToolContext::_bindir */
+/* 37: Attribute ToolContext::_output_file */
+/* 38: Attribute ToolContext::_boost */
+/* 39: Attribute ToolContext::_no_cc */
+/* 40: Attribute ToolContext::_cc_link */
+/* 41: Attribute ToolContext::_cc_libs */
+/* 42: Attribute ToolContext::_cc_lib_paths */
+/* 43: Attribute ToolContext::_cc_include_paths */
+/* 44: Attribute ToolContext::_ext_prefix */
+void INIT_ATTRIBUTES__ToolContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+  static val_t once_value_2; /* Once value */
+  static val_t once_value_3; /* Once value */
+  static val_t once_value_4; /* Once value */
+  static val_t once_value_5; /* Once value */
+  static val_t once_value_6; /* Once value */
+  static val_t once_value_7; /* Once value */
+  static val_t once_value_8; /* Once value */
+  static val_t once_value_9; /* Once value */
+  static val_t once_value_10; /* Once value */
+  static val_t once_value_11; /* Once value */
+  static val_t once_value_12; /* Once value */
+  static val_t once_value_13; /* Once value */
+  static val_t once_value_14; /* Once value */
+  static val_t once_value_15; /* Once value */
+  static val_t once_value_16; /* Once value */
+  static val_t once_value_17; /* Once value */
+  static val_t once_value_18; /* Once value */
+  static val_t once_value_19; /* Once value */
+  static val_t once_value_20; /* Once value */
+  static val_t once_value_21; /* Once value */
+  static val_t once_value_22; /* Once value */
+  static val_t once_value_23; /* Once value */
+  static val_t once_value_24; /* Once value */
+  static val_t once_value_25; /* Once value */
+  static val_t once_value_26; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ToolContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//analysis.nit:48 */
+  if (!once_value_1) {
+    fra.me.REG[1] = BOX_NativeString("rta");
+    REGB0 = TAG_Int(3);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_1 = fra.me.REG[1];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
+  ATTR_analysis___ToolContext____global_callgraph(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//analysis.nit:49 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_dead_method_removal(fra.me.REG[0]) = REGB0;
+  /* ./analysis//analysis.nit:50 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_inline_get_set(fra.me.REG[0]) = REGB0;
+  /* ./analysis//analysis.nit:51 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_callgraph_from_init(fra.me.REG[0]) = REGB0;
+  /* ./analysis//analysis.nit:52 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_out_of_init_get_test_removal(fra.me.REG[0]) = REGB0;
+  /* ./syntax//syntax.nit:97 */
+  REGB0 = TAG_Bool(false);
+  ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:54 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:57 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:60 */
+  if (!once_value_2) {
+    fra.me.REG[1] = BOX_NativeString("logs");
+    REGB0 = TAG_Int(4);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_2 = fra.me.REG[1];
+    register_static_object(&once_value_2);
+  } else fra.me.REG[1] = once_value_2;
+  fra.me.REG[1] = fra.me.REG[1];
+  ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:63 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_mmloader___ToolContext____messages(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:64 */
+  fra.me.REG[1] = NEW_ComparableSorter_sorter___ComparableSorter___init();
+  ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:116 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_mmloader___ToolContext____paths(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:119 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:122 */
+  fra.me.REG[1] = NEW_OptionContext_opts___OptionContext___init();
+  ATTR_mmloader___ToolContext____option_context(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:125 */
+  if (!once_value_3) {
+    fra.me.REG[1] = BOX_NativeString("Show warnings");
+    REGB0 = TAG_Int(13);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_3 = fra.me.REG[1];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[1] = once_value_3;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_4) {
+    fra.me.REG[3] = BOX_NativeString("-W");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_4 = fra.me.REG[3];
+    register_static_object(&once_value_4);
+  } else fra.me.REG[3] = once_value_4;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_5) {
+    fra.me.REG[3] = BOX_NativeString("--warn");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_5 = fra.me.REG[3];
+    register_static_object(&once_value_5);
+  } else fra.me.REG[3] = once_value_5;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:128 */
+  if (!once_value_6) {
+    fra.me.REG[2] = BOX_NativeString("Set include path for loaders (may be used more than once)");
+    REGB0 = TAG_Int(57);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_6 = fra.me.REG[2];
+    register_static_object(&once_value_6);
+  } else fra.me.REG[2] = once_value_6;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_7) {
+    fra.me.REG[3] = BOX_NativeString("-I");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_7 = fra.me.REG[3];
+    register_static_object(&once_value_7);
+  } else fra.me.REG[3] = once_value_7;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  if (!once_value_8) {
+    fra.me.REG[3] = BOX_NativeString("--path");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_8 = fra.me.REG[3];
+    register_static_object(&once_value_8);
+  } else fra.me.REG[3] = once_value_8;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionArray_opts___OptionArray___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:131 */
+  if (!once_value_9) {
+    fra.me.REG[1] = BOX_NativeString("Generate various log files");
+    REGB0 = TAG_Int(26);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_9 = fra.me.REG[1];
+    register_static_object(&once_value_9);
+  } else fra.me.REG[1] = once_value_9;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_10) {
+    fra.me.REG[3] = BOX_NativeString("--log");
+    REGB0 = TAG_Int(5);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_10 = fra.me.REG[3];
+    register_static_object(&once_value_10);
+  } else fra.me.REG[3] = once_value_10;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:134 */
+  if (!once_value_11) {
+    fra.me.REG[2] = BOX_NativeString("Directory where to generate log files");
+    REGB0 = TAG_Int(37);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_11 = fra.me.REG[2];
+    register_static_object(&once_value_11);
+  } else fra.me.REG[2] = once_value_11;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_12) {
+    fra.me.REG[3] = BOX_NativeString("--log-dir");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_12 = fra.me.REG[3];
+    register_static_object(&once_value_12);
+  } else fra.me.REG[3] = once_value_12;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionString_opts___OptionString___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_log_dir(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:137 */
+  if (!once_value_13) {
+    fra.me.REG[1] = BOX_NativeString("Stop after meta-model processing");
+    REGB0 = TAG_Int(32);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_13 = fra.me.REG[1];
+    register_static_object(&once_value_13);
+  } else fra.me.REG[1] = once_value_13;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_14) {
+    fra.me.REG[3] = BOX_NativeString("--only-metamodel");
+    REGB0 = TAG_Int(16);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_14 = fra.me.REG[3];
+    register_static_object(&once_value_14);
+  } else fra.me.REG[3] = once_value_14;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:140 */
+  if (!once_value_15) {
+    fra.me.REG[2] = BOX_NativeString("Only proceed to parse step of loaders");
+    REGB0 = TAG_Int(37);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_15 = fra.me.REG[2];
+    register_static_object(&once_value_15);
+  } else fra.me.REG[2] = once_value_15;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_16) {
+    fra.me.REG[3] = BOX_NativeString("--only-parse");
+    REGB0 = TAG_Int(12);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_16 = fra.me.REG[3];
+    register_static_object(&once_value_16);
+  } else fra.me.REG[3] = once_value_16;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:143 */
+  if (!once_value_17) {
+    fra.me.REG[1] = BOX_NativeString("Show Help (This screen)");
+    REGB0 = TAG_Int(23);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_17 = fra.me.REG[1];
+    register_static_object(&once_value_17);
+  } else fra.me.REG[1] = once_value_17;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(2);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_18) {
+    fra.me.REG[3] = BOX_NativeString("-h");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_18 = fra.me.REG[3];
+    register_static_object(&once_value_18);
+  } else fra.me.REG[3] = once_value_18;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_19) {
+    fra.me.REG[3] = BOX_NativeString("-?");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_19 = fra.me.REG[3];
+    register_static_object(&once_value_19);
+  } else fra.me.REG[3] = once_value_19;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_20) {
+    fra.me.REG[3] = BOX_NativeString("--help");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_20 = fra.me.REG[3];
+    register_static_object(&once_value_20);
+  } else fra.me.REG[3] = once_value_20;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_help(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:146 */
+  if (!once_value_21) {
+    fra.me.REG[2] = BOX_NativeString("Show version and exit");
+    REGB0 = TAG_Int(21);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_21 = fra.me.REG[2];
+    register_static_object(&once_value_21);
+  } else fra.me.REG[2] = once_value_21;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_22) {
+    fra.me.REG[3] = BOX_NativeString("--version");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_22 = fra.me.REG[3];
+    register_static_object(&once_value_22);
+  } else fra.me.REG[3] = once_value_22;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_version(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:149 */
+  if (!once_value_23) {
+    fra.me.REG[1] = BOX_NativeString("Verbose");
+    REGB0 = TAG_Int(7);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_23 = fra.me.REG[1];
+    register_static_object(&once_value_23);
+  } else fra.me.REG[1] = once_value_23;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_24) {
+    fra.me.REG[3] = BOX_NativeString("-v");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_24 = fra.me.REG[3];
+    register_static_object(&once_value_24);
+  } else fra.me.REG[3] = once_value_24;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_25) {
+    fra.me.REG[3] = BOX_NativeString("--verbose");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_25 = fra.me.REG[3];
+    register_static_object(&once_value_25);
+  } else fra.me.REG[3] = once_value_25;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_verbose(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:152 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:235 */
+  fra.me.REG[2] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:302 */
+  fra.me.REG[2] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./metamodel//abstractmetamodel.nit:30 */
+  fra.me.REG[2] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./metamodel//abstractmetamodel.nit:34 */
+  fra.me.REG[2] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./metamodel//abstractmetamodel.nit:37 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_abstractmetamodel___MMContext____global_classes(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./metamodel//abstractmetamodel.nit:40 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_abstractmetamodel___MMContext____modules(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./program.nit:26 */
+  REGB0 = TAG_Bool(false);
+  ATTR_program___ToolContext____global(fra.me.REG[0]) = REGB0;
+  /* ./program.nit:27 */
+  REGB0 = TAG_Bool(true);
+  ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:27 */
+  fra.me.REG[2] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____compdir(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:28 */
+  fra.me.REG[2] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____clibdir(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:29 */
+  fra.me.REG[2] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____bindir(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:30 */
+  fra.me.REG[2] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____output_file(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:31 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_base___ToolContext____boost(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:32 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_base___ToolContext____no_cc(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:33 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_base___ToolContext____cc_link(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:34 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_compiling_base___ToolContext____cc_libs(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:35 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_compiling_base___ToolContext____cc_lib_paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:36 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_compiling_base___ToolContext____cc_include_paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:37 */
+  if (!once_value_26) {
+    fra.me.REG[2] = BOX_NativeString("");
+    REGB0 = TAG_Int(0);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_26 = fra.me.REG[2];
+    register_static_object(&once_value_26);
+  } else fra.me.REG[2] = once_value_26;
+  fra.me.REG[2] = fra.me.REG[2];
+  ATTR_compiling_base___ToolContext____ext_prefix(fra.me.REG[0]) = fra.me.REG[2];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ToolContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 45);
+  obj->vft = (classtable_elt_t*)VFT_ToolContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ToolContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ToolContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____global_callgraph(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_callgraph", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_dead_method_removal(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_dead_method_removal", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_inline_get_set(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_inline_get_set", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_callgraph_from_init(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_callgraph_from_init", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_out_of_init_get_test_removal(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_out_of_init_get_test_removal", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_keep_ast", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____error_count(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_error_count", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_warning_count", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_log_directory", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____messages(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_messages", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_message_sorter", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____paths(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_paths", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____loaders(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____option_context(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_option_context", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_warn", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_path", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_log", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_log_dir(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_log_dir", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_only_metamodel", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_only_parse", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_help(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_help", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_version(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_version", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_verbose(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_verbose", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_verbose_level", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_module_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_class_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____global_classes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___ToolContext____global(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_use_SFT_optimization", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____boost(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_boost", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____no_cc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_cc", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_link(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_link", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_libs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_libs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_lib_paths(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_lib_paths", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_include_paths(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_include_paths", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____ext_prefix(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_ext_prefix", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ToolContext_mmloader___ToolContext___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 154;
+  fra.me.meth = LOCATE_NEW_ToolContext_mmloader___ToolContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./mmloader.nit:154 */
+  fra.me.REG[0] = NEW_ToolContext();
+  INIT_ATTRIBUTES__ToolContext(fra.me.REG[0]);
+  mmloader___ToolContext___init(fra.me.REG[0], init_table);
+  CHECKNEW_ToolContext(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ModuleLoader[54] = {
+  {(bigint) 123 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ModuleLoader < Object: superclass typecheck marker */},
+  {(bigint) 123 /* 3: ModuleLoader < ModuleLoader: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97651,14 +125096,15 @@ const classtable_elt_t VFT_ReduceAction713[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction713 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ModuleLoader < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97666,7 +125112,6 @@ const classtable_elt_t VFT_ReduceAction713[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97674,41 +125119,84 @@ const classtable_elt_t VFT_ReduceAction713[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction713 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction713___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction713 < ReduceAction713: superclass init_table position */},
-  {(bigint) parser___ReduceAction713___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ModuleLoader < ModuleLoader: superclass init_table position */},
+  {(bigint) mmloader___ModuleLoader___file_type},
+  {(bigint) mmloader___ModuleLoader___try_to_load_dir},
+  {(bigint) mmloader___ModuleLoader___can_handle},
+  {(bigint) mmloader___ModuleLoader___load_and_process_module},
+  {(bigint) mmloader___ModuleLoader___load_module},
+  {(bigint) mmloader___ModuleLoader___parse_file},
+  {(bigint) mmloader___ModuleLoader___process_metamodel},
+  {(bigint) mmloader___ModuleLoader___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction713(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction713;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+void INIT_ATTRIBUTES__ModuleLoader(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ModuleLoader;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ReduceAction713(val_t self, char *from) {
-}
-val_t NEW_ReduceAction713_parser___ReduceAction713___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction713();
-  parser___ReduceAction713___init(self, init_table);
-  CHECKNEW_ReduceAction713(self, "parser::ReduceAction713::init for ReduceAction713");
-  return self;
+val_t NEW_ModuleLoader(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_ModuleLoader;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ModuleLoader(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ModuleLoader;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ModuleLoader_mmloader___ModuleLoader___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ModuleLoader_mmloader___ModuleLoader___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_ModuleLoader();
+  INIT_ATTRIBUTES__ModuleLoader(fra.me.REG[0]);
+  mmloader___ModuleLoader___init(fra.me.REG[0], init_table);
+  CHECKNEW_ModuleLoader(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
-const classtable_elt_t VFT_ReduceAction714[48] = {
-  {(bigint) 447 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction714 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction714 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 447 /* 3: ReduceAction714 < ReduceAction714: superclass typecheck marker */},
+const classtable_elt_t VFT_MMSrcModule[91] = {
+  {(bigint) 1939 /* 0: Identity */},
+  {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMSrcModule < Object: superclass typecheck marker */},
+  {(bigint) 139 /* 3: MMSrcModule < MMModule: superclass typecheck marker */},
+  {(bigint) 1939 /* 4: MMSrcModule < MMSrcModule: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97721,14 +125209,9 @@ const classtable_elt_t VFT_ReduceAction714[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction714 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMSrcModule < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97736,7 +125219,6 @@ const classtable_elt_t VFT_ReduceAction714[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97744,42 +125226,281 @@ const classtable_elt_t VFT_ReduceAction714[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMModule___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction714 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction714___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction714 < ReduceAction714: superclass init_table position */},
-  {(bigint) parser___ReduceAction714___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) abstracttool___MMModule___dump_module_info},
+  {(bigint) syntax_base___MMSrcModule___nodes},
+  {(bigint) syntax_base___MMSrcModule___nodes__eq},
+  {(bigint) mmloader___MMModule___import_supers_modules},
+  {(bigint) inheritance___MMModule___type_any},
+  {(bigint) inheritance___MMModule___import_global_classes},
+  {(bigint) inheritance___MMModule___import_local_classes},
+  {(bigint) static_type___MMModule___type_none},
+  {(bigint) static_type___MMModule___type_bool},
+  {(bigint) 1 /* 54: MMSrcModule < MMModule: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMModule___context},
+  {(bigint) abstractmetamodel___MMModule___name},
+  {(bigint) abstractmetamodel___MMModule___full_name},
+  {(bigint) abstractmetamodel___MMModule___directory},
+  {(bigint) abstractmetamodel___MMModule___location},
+  {(bigint) abstractmetamodel___MMModule___mhe},
+  {(bigint) abstractmetamodel___MMModule___global_classes},
+  {(bigint) abstractmetamodel___MMModule___local_classes},
+  {(bigint) abstractmetamodel___MMModule___class_specialization_hierarchy},
+  {(bigint) abstractmetamodel___MMModule___explicit_imported_modules},
+  {(bigint) abstractmetamodel___MMModule___init},
+  {(bigint) abstractmetamodel___MMModule___add_super_module},
+  {(bigint) abstractmetamodel___MMModule___visibility_for},
+  {(bigint) abstractmetamodel___MMModule_____bra},
+  {(bigint) abstractmetamodel___MMModule___class_by_name},
+  {(bigint) abstractmetamodel___MMModule___has_global_class_named},
+  {(bigint) abstractmetamodel___MMModule___global_class_named},
+  {(bigint) abstractmetamodel___MMModule___set_supers_class},
+  {(bigint) abstractmetamodel___MMModule___register_global_class},
+  {(bigint) compiling___MMModule___compile_separate_module},
+  {(bigint) compiling_global___MMModule___declare_class_tables_to_c},
+  {(bigint) compiling_global___MMModule___compile_mod_to_c},
+  {(bigint) compiling_global___MMModule___compile_local_table_to_c},
+  {(bigint) table_computation___MMModule___local_table},
+  {(bigint) table_computation___MMModule___local_analysis},
+  {(bigint) syntax___MMSrcModule___process_supermodules},
+  {(bigint) syntax___MMSrcModule___process_syntax},
+  {(bigint) mmbuilder___MMSrcModule___do_mmbuilder},
+  {(bigint) mmbuilder___MMSrcModule___process_default_classes},
+  {(bigint) 2 /* 84: MMSrcModule < MMSrcModule: superclass init_table position */},
+  {(bigint) syntax_base___MMSrcModule___clear_ast},
+  {(bigint) syntax_base___MMSrcModule___node},
+  {(bigint) syntax_base___MMSrcModule___src_local_classes},
+  {(bigint) syntax_base___MMSrcModule___init},
+  {(bigint) icode_generation___MMSrcModule___generate_icode},
+  {(bigint) typing___MMSrcModule___do_typing},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction714(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction714;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction714(val_t self, char *from) {
-}
-val_t NEW_ReduceAction714_parser___ReduceAction714___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction714();
-  parser___ReduceAction714___init(self, init_table);
-  CHECKNEW_ReduceAction714(self, "parser::ReduceAction714::init for ReduceAction714");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction715[48] = {
-  {(bigint) 443 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction715 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction715 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 443 /* 3: ReduceAction715 < ReduceAction715: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+/* 1: Object_id */
+/* 2: Attribute MMSrcModule::_type_none */
+/* 3: Attribute MMSrcModule::_context */
+/* 4: Attribute MMSrcModule::_name */
+/* 5: Attribute MMSrcModule::_full_name */
+/* 6: Attribute MMSrcModule::_directory */
+/* 7: Attribute MMSrcModule::_location */
+/* 8: Attribute MMSrcModule::_mhe */
+/* 9: Attribute MMSrcModule::_global_classes */
+/* 10: Attribute MMSrcModule::_local_classes */
+/* 11: Attribute MMSrcModule::_class_specialization_hierarchy */
+/* 12: Attribute MMSrcModule::_intrude_modules */
+/* 13: Attribute MMSrcModule::_public_modules */
+/* 14: Attribute MMSrcModule::_private_modules */
+/* 15: Attribute MMSrcModule::_explicit_imported_modules */
+/* 16: Attribute MMSrcModule::_local_class_by_global */
+/* 17: Attribute MMSrcModule::_global_class_by_name */
+/* 18: Attribute MMSrcModule::_local_table */
+/* 19: Attribute MMSrcModule::_nodes */
+/* 20: Attribute MMSrcModule::_src_local_classes */
+void INIT_ATTRIBUTES__MMSrcModule(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMSrcModule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:29 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_syntax_base___MMSrcModule____nodes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:130 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____global_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:154 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMModule____global_class_by_name(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:151 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMModule____local_class_by_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//static_type.nit:497 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./metamodel//static_type.nit:498 */
+  fra.me.REG[1] = NEW_MMTypeNone_static_type___MMTypeNone___init(fra.me.REG[1]);
+  ATTR_static_type___MMModule____type_none(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:133 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____local_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:136 */
+  fra.me.REG[1] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:139 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____intrude_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:142 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____public_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:145 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____private_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:148 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMModule____explicit_imported_modules(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//table_computation.nit:394 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_table_computation___MMModule____local_table(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMSrcModule(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 21);
+  obj->vft = (classtable_elt_t*)VFT_MMSrcModule;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMSrcModule(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMSrcModule;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMSrcModule____src_local_classes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_src_local_classes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____global_classes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____global_class_by_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_class_by_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____local_class_by_global(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class_by_global", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMModule____type_none(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_type_none", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____context(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____full_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_full_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____directory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_directory", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____location(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_location", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____local_classes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_classes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_class_specialization_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____intrude_modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_intrude_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____public_modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_public_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____private_modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_private_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMModule____explicit_imported_modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_explicit_imported_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___MMModule____local_table(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_table", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMSrcModule_syntax_base___MMSrcModule___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 40;
+  fra.me.meth = LOCATE_NEW_MMSrcModule_syntax_base___MMSrcModule___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  fra.me.REG[4] = p4;
+  /* ./syntax//syntax_base.nit:40 */
+  fra.me.REG[5] = NEW_MMSrcModule();
+  INIT_ATTRIBUTES__MMSrcModule(fra.me.REG[5]);
+  syntax_base___MMSrcModule___init(fra.me.REG[5], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], init_table);
+  CHECKNEW_MMSrcModule(fra.me.REG[5]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[5];
+}
+const classtable_elt_t VFT_MMSrcLocalClass[125] = {
+  {(bigint) 2615 /* 0: Identity */},
+  {(bigint) 30 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMSrcLocalClass < Object: superclass typecheck marker */},
+  {(bigint) 147 /* 3: MMSrcLocalClass < MMLocalClass: superclass typecheck marker */},
+  {(bigint) 1971 /* 4: MMSrcLocalClass < MMConcreteClass: superclass typecheck marker */},
+  {(bigint) 2615 /* 5: MMSrcLocalClass < MMSrcLocalClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97791,14 +125512,9 @@ const classtable_elt_t VFT_ReduceAction715[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction715 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMSrcLocalClass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97806,7 +125522,6 @@ const classtable_elt_t VFT_ReduceAction715[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97814,42 +125529,341 @@ const classtable_elt_t VFT_ReduceAction715[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalClass___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction715 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction715___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction715 < ReduceAction715: superclass init_table position */},
-  {(bigint) parser___ReduceAction715___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) abstracttool___MMLocalClass___dump_properties},
+  {(bigint) mmbuilder___MMSrcLocalClass___accept_class_visitor},
+  {(bigint) mmbuilder___MMSrcLocalClass___accept_properties_visitor},
+  {(bigint) genericity___MMLocalClass___get_formal},
+  {(bigint) genericity___MMLocalClass___register_formal},
+  {(bigint) genericity___MMLocalClass___get_instantiate_type},
+  {(bigint) genericity___MMLocalClass___formals_types},
+  {(bigint) static_type___MMLocalClass___get_type},
+  {(bigint) genericity___MMLocalClass___is_generic},
+  {(bigint) inheritance___MMLocalClass___compute_super_classes},
+  {(bigint) inheritance___MMLocalClass___compute_ancestors},
+  {(bigint) inheritance___MMLocalClass___inherit_global_properties},
+  {(bigint) inheritance___MMLocalClass___make_visible_an_inherited_global_property},
+  {(bigint) inheritance___MMLocalClass___add_direct_parent},
+  {(bigint) inheritance___MMLocalClass___computed_super_classes},
+  {(bigint) inheritance___MMLocalClass___computed_ancestors},
+  {(bigint) inheritance___MMLocalClass___ancestor_for},
+  {(bigint) inheritance___MMLocalClass___add_default_any_class},
+  {(bigint) inheritance___MMLocalClass___add_super_classes},
+  {(bigint) inheritance___MMLocalClass___add_explicit_classes},
+  {(bigint) inheritance___MMLocalClass___compute_super_parents},
+  {(bigint) inheritance___MMLocalClass___build_ancestors},
+  {(bigint) inheritance___MMLocalClass___group_ancestors},
+  {(bigint) inheritance___MMLocalClass___merge_ancestors},
+  {(bigint) inheritance___MMLocalClass___inherit_local_property},
+  {(bigint) genericity___MMLocalClass___get_type},
+  {(bigint) static_type___MMLocalClass___add_ancestor},
+  {(bigint) static_type___MMLocalClass___ancestors},
+  {(bigint) static_type___MMLocalClass___ancestor},
+  {(bigint) 1 /* 74: MMSrcLocalClass < MMLocalClass: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalClass___name},
+  {(bigint) abstractmetamodel___MMLocalClass___arity},
+  {(bigint) abstractmetamodel___MMLocalClass___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalClass___global},
+  {(bigint) abstractmetamodel___MMLocalClass___crhe},
+  {(bigint) abstractmetamodel___MMLocalClass___cshe},
+  {(bigint) abstractmetamodel___MMLocalClass___che},
+  {(bigint) inheritance___MMLocalClass___global_properties},
+  {(bigint) abstractmetamodel___MMLocalClass___local_local_properties},
+  {(bigint) abstractmetamodel___MMLocalClass___init},
+  {(bigint) abstractmetamodel___MMLocalClass___for_module},
+  {(bigint) abstractmetamodel___MMLocalClass___new_global},
+  {(bigint) abstractmetamodel___MMLocalClass___set_global},
+  {(bigint) inheritance___MMLocalClass___has_global_property_by_name},
+  {(bigint) abstractmetamodel___MMLocalClass___get_property_by_name},
+  {(bigint) abstractmetamodel___MMLocalClass___attribute},
+  {(bigint) abstractmetamodel___MMLocalClass___method},
+  {(bigint) abstractmetamodel___MMLocalClass___select_method},
+  {(bigint) abstractmetamodel___MMLocalClass___select_attribute},
+  {(bigint) abstractmetamodel___MMLocalClass___super_methods_named},
+  {(bigint) abstractmetamodel___MMLocalClass___register_local_property},
+  {(bigint) abstractmetamodel___MMLocalClass___register_global_property},
+  {(bigint) inheritance___MMLocalClass___has_global_property},
+  {(bigint) inheritance___MMLocalClass_____bra},
+  {(bigint) abstractmetamodel___MMLocalClass___context},
+  {(bigint) abstractmetamodel___MMLocalClass___total_order_compare},
+  {(bigint) virtualtype___MMLocalClass___virtual_type},
+  {(bigint) virtualtype___MMLocalClass___select_virtual_type},
+  {(bigint) primitive_info___MMLocalClass___primitive_info},
+  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
+  {(bigint) icode_generator___MMLocalClass___generate_icode_file},
+  {(bigint) program___MMLocalClass___init_var_iroutine},
+  {(bigint) program___MMLocalClass___init_var_iroutine__eq},
+  {(bigint) program___MMLocalClass___checknew_iroutine},
+  {(bigint) program___MMLocalClass___checknew_iroutine__eq},
+  {(bigint) program___MMLocalClass___new_instance_iroutine},
+  {(bigint) compiling_global___MMLocalClass___declare_tables_to_c},
+  {(bigint) compiling_global___MMLocalClass___compile_tables_to_c},
+  {(bigint) table_computation___MMConcreteClass___class_color_pos},
+  {(bigint) table_computation___MMConcreteClass___class_layout},
+  {(bigint) table_computation___MMConcreteClass___instance_layout},
+  {(bigint) table_computation___MMConcreteClass___build_layout_in},
+  {(bigint) 2 /* 117: MMSrcLocalClass < MMConcreteClass: superclass init_table position */},
+  {(bigint) mmbuilder___MMSrcLocalClass___process_default_constructors},
+  {(bigint) mmbuilder___MMSrcLocalClass___add_src_local_property},
+  {(bigint) 3 /* 120: MMSrcLocalClass < MMSrcLocalClass: superclass init_table position */},
+  {(bigint) syntax_base___MMSrcLocalClass___node},
+  {(bigint) syntax_base___MMSrcLocalClass___formal_dict},
+  {(bigint) syntax_base___MMSrcLocalClass___src_local_properties},
+  {(bigint) syntax_base___MMSrcLocalClass___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction715(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction715;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction715(val_t self, char *from) {
-}
-val_t NEW_ReduceAction715_parser___ReduceAction715___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction715();
-  parser___ReduceAction715___init(self, init_table);
-  CHECKNEW_ReduceAction715(self, "parser::ReduceAction715::init for ReduceAction715");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute MMSrcLocalClass::_types */
+/* 3: Attribute MMSrcLocalClass::_formals_types */
+/* 4: Attribute MMSrcLocalClass::_direct_parents */
+/* 5: Attribute MMSrcLocalClass::_computing_super */
+/* 6: Attribute MMSrcLocalClass::_are_global_properties_inherited */
+/* 7: Attribute MMSrcLocalClass::_base_type_cache */
+/* 8: Attribute MMSrcLocalClass::_ancestors */
+/* 9: Attribute MMSrcLocalClass::_name */
+/* 10: Attribute MMSrcLocalClass::_arity */
+/* 11: Attribute MMSrcLocalClass::_mmmodule */
+/* 12: Attribute MMSrcLocalClass::_global */
+/* 13: Attribute MMSrcLocalClass::_crhe */
+/* 14: Attribute MMSrcLocalClass::_cshe */
+/* 15: Attribute MMSrcLocalClass::_che */
+/* 16: Attribute MMSrcLocalClass::_local_property_by_global */
+/* 17: Attribute MMSrcLocalClass::_global_properties */
+/* 18: Attribute MMSrcLocalClass::_local_local_properties */
+/* 19: Attribute MMSrcLocalClass::_properties_by_name */
+/* 20: Attribute MMSrcLocalClass::_primitive_info_cache */
+/* 21: Attribute MMSrcLocalClass::_primitive_info_b */
+/* 22: Attribute MMSrcLocalClass::_init_var_iroutine */
+/* 23: Attribute MMSrcLocalClass::_checknew_iroutine */
+/* 24: Attribute MMSrcLocalClass::_new_instance_iroutine */
+/* 25: Attribute MMSrcLocalClass::_class_color_pos */
+/* 26: Attribute MMSrcLocalClass::_class_layout */
+/* 27: Attribute MMSrcLocalClass::_instance_layout */
+/* 28: Attribute MMSrcLocalClass::_formal_dict */
+/* 29: Attribute MMSrcLocalClass::_src_local_properties */
+void INIT_ATTRIBUTES__MMSrcLocalClass(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMSrcLocalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:91 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_syntax_base___MMSrcLocalClass____formal_dict(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:353 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:356 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:359 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:362 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//genericity.nit:41 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//genericity.nit:55 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//inheritance.nit:58 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//inheritance.nit:62 */
+  REGB0 = TAG_Bool(false);
+  ATTR_inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//inheritance.nit:109 */
+  REGB0 = TAG_Bool(false);
+  ATTR_inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
+  /* ./compiling//table_computation.nit:90 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_table_computation___MMConcreteClass____class_layout(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//table_computation.nit:93 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_table_computation___MMConcreteClass____instance_layout(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:227 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:229 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___MMLocalClass____checknew_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:234 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./primitive_info.nit:25 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./primitive_info.nit:29 */
+  REGB0 = TAG_Bool(false);
+  ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMSrcLocalClass(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 30);
+  obj->vft = (classtable_elt_t*)VFT_MMSrcLocalClass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMSrcLocalClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMSrcLocalClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMSrcLocalClass____formal_dict(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_formal_dict", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMSrcLocalClass____src_local_properties(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_src_local_properties", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____arity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_arity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____local_local_properties(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_local_properties", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_genericity___MMLocalClass____types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_types", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_genericity___MMLocalClass____formals_types(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____direct_parents(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____computing_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_computing_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___MMConcreteClass____class_layout(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_class_layout", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___MMConcreteClass____instance_layout(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_instance_layout", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction716[48] = {
-  {(bigint) 439 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction716 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction716 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 439 /* 3: ReduceAction716 < ReduceAction716: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_MMSrcLocalClass_syntax_base___MMSrcLocalClass___init(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 96;
+  fra.me.meth = LOCATE_NEW_MMSrcLocalClass_syntax_base___MMSrcLocalClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  REGB0 = p3;
+  /* ./syntax//syntax_base.nit:96 */
+  fra.me.REG[3] = NEW_MMSrcLocalClass();
+  INIT_ATTRIBUTES__MMSrcLocalClass(fra.me.REG[3]);
+  syntax_base___MMSrcLocalClass___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, init_table);
+  CHECKNEW_MMSrcLocalClass(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_MMSrcAttribute[73] = {
+  {(bigint) 2619 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMSrcAttribute < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMSrcAttribute < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 1975 /* 4: MMSrcAttribute < MMAttribute: superclass typecheck marker */},
+  {(bigint) 2619 /* 5: MMSrcAttribute < MMSrcAttribute: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97861,14 +125875,9 @@ const classtable_elt_t VFT_ReduceAction716[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction716 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMSrcAttribute < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97876,7 +125885,6 @@ const classtable_elt_t VFT_ReduceAction716[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97884,42 +125892,153 @@ const classtable_elt_t VFT_ReduceAction716[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction716 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction716___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction716 < ReduceAction716: superclass init_table position */},
-  {(bigint) parser___ReduceAction716___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax_base___MMSrcAttribute___node},
+  {(bigint) syntax_base___MMLocalProperty___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMSrcAttribute < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) icode_generation___MMSrcAttribute___iroutine},
+  {(bigint) 2 /* 68: MMSrcAttribute < MMAttribute: superclass init_table position */},
+  {(bigint) icode_generation___MMSrcAttribute___iroutine__eq},
+  {(bigint) icode_generation___MMSrcAttribute___generate_iroutine},
+  {(bigint) 3 /* 71: MMSrcAttribute < MMSrcAttribute: superclass init_table position */},
+  {(bigint) syntax_base___MMSrcAttribute___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction716(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMSrcAttribute::_signature */
+/* 3: Attribute MMSrcAttribute::_signatures_cache */
+/* 4: Attribute MMSrcAttribute::_name */
+/* 5: Attribute MMSrcAttribute::_local_class */
+/* 6: Attribute MMSrcAttribute::_global */
+/* 7: Attribute MMSrcAttribute::_prhe */
+/* 8: Attribute MMSrcAttribute::_need_super */
+/* 9: Attribute MMSrcAttribute::_cname_cache */
+/* 10: Attribute MMSrcAttribute::_iroutine */
+void INIT_ATTRIBUTES__MMSrcAttribute(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMSrcAttribute;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMSrcAttribute(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction716;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction716(val_t self, char *from) {
-}
-val_t NEW_ReduceAction716_parser___ReduceAction716___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction716();
-  parser___ReduceAction716___init(self, init_table);
-  CHECKNEW_ReduceAction716(self, "parser::ReduceAction716::init for ReduceAction716");
-  return self;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_MMSrcAttribute;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMSrcAttribute(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMSrcAttribute;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction717[48] = {
-  {(bigint) 435 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction717 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction717 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 435 /* 3: ReduceAction717 < ReduceAction717: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_MMSrcAttribute_syntax_base___MMSrcAttribute___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 139;
+  fra.me.meth = LOCATE_NEW_MMSrcAttribute_syntax_base___MMSrcAttribute___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:139 */
+  fra.me.REG[3] = NEW_MMSrcAttribute();
+  INIT_ATTRIBUTES__MMSrcAttribute(fra.me.REG[3]);
+  syntax_base___MMSrcAttribute___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_MMSrcAttribute(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_MMSrcMethod[78] = {
+  {(bigint) 2611 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMSrcMethod < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMSrcMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 1959 /* 4: MMSrcMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 2611 /* 5: MMSrcMethod < MMSrcMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97931,14 +126050,9 @@ const classtable_elt_t VFT_ReduceAction717[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction717 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMSrcMethod < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -97946,7 +126060,6 @@ const classtable_elt_t VFT_ReduceAction717[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -97954,43 +126067,157 @@ const classtable_elt_t VFT_ReduceAction717[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction717 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction717___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction717 < ReduceAction717: superclass init_table position */},
-  {(bigint) parser___ReduceAction717___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction717(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax_base___MMLocalProperty___node},
+  {(bigint) syntax_base___MMLocalProperty___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMSrcMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) icode_generator___MMMethod___generate_icode},
+  {(bigint) icode_generation___MMSrcMethod___iroutine},
+  {(bigint) 2 /* 69: MMSrcMethod < MMMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMSrcMethod___is_intern},
+  {(bigint) syntax_base___MMSrcMethod___is_abstract},
+  {(bigint) syntax_base___MMSrcMethod___extern_name},
+  {(bigint) compiling_global___MMMethod___compile_property_to_c},
+  {(bigint) icode_generation___MMSrcMethod___iroutine__eq},
+  {(bigint) icode_generation___MMSrcMethod___generate_iroutine},
+  {(bigint) icode_generation___MMSrcMethod___inner_generate_iroutine},
+  {(bigint) 3 /* 77: MMSrcMethod < MMSrcMethod: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMSrcMethod::_signature */
+/* 3: Attribute MMSrcMethod::_signatures_cache */
+/* 4: Attribute MMSrcMethod::_name */
+/* 5: Attribute MMSrcMethod::_local_class */
+/* 6: Attribute MMSrcMethod::_global */
+/* 7: Attribute MMSrcMethod::_prhe */
+/* 8: Attribute MMSrcMethod::_need_super */
+/* 9: Attribute MMSrcMethod::_cname_cache */
+/* 10: Attribute MMSrcMethod::_iroutine */
+void INIT_ATTRIBUTES__MMSrcMethod(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMSrcMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMSrcMethod(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction717;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction717(val_t self, char *from) {
-}
-val_t NEW_ReduceAction717_parser___ReduceAction717___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction717();
-  parser___ReduceAction717___init(self, init_table);
-  CHECKNEW_ReduceAction717(self, "parser::ReduceAction717::init for ReduceAction717");
-  return self;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_MMSrcMethod;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMSrcMethod(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMSrcMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction718[48] = {
-  {(bigint) 431 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction718 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction718 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 431 /* 3: ReduceAction718 < ReduceAction718: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_MMSrcMethod_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 643;
+  fra.me.meth = LOCATE_NEW_MMSrcMethod_abstractmetamodel___MMLocalProperty___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./metamodel//abstractmetamodel.nit:643 */
+  fra.me.REG[2] = NEW_MMSrcMethod();
+  INIT_ATTRIBUTES__MMSrcMethod(fra.me.REG[2]);
+  abstractmetamodel___MMLocalProperty___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_MMSrcMethod(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_MMAttrImplementationMethod[80] = {
+  {(bigint) 2927 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMAttrImplementationMethod < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMAttrImplementationMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 1959 /* 4: MMAttrImplementationMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 2611 /* 5: MMAttrImplementationMethod < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 2927 /* 6: MMAttrImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98001,14 +126228,9 @@ const classtable_elt_t VFT_ReduceAction718[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction718 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMAttrImplementationMethod < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98016,7 +126238,6 @@ const classtable_elt_t VFT_ReduceAction718[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98024,44 +126245,162 @@ const classtable_elt_t VFT_ReduceAction718[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction718 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction718___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction718 < ReduceAction718: superclass init_table position */},
-  {(bigint) parser___ReduceAction718___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax_base___MMAttrImplementationMethod___node},
+  {(bigint) syntax_base___MMLocalProperty___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMAttrImplementationMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) icode_generator___MMMethod___generate_icode},
+  {(bigint) icode_generation___MMSrcMethod___iroutine},
+  {(bigint) 2 /* 69: MMAttrImplementationMethod < MMMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMSrcMethod___is_intern},
+  {(bigint) syntax_base___MMSrcMethod___is_abstract},
+  {(bigint) syntax_base___MMSrcMethod___extern_name},
+  {(bigint) compiling_global___MMMethod___compile_property_to_c},
+  {(bigint) icode_generation___MMSrcMethod___iroutine__eq},
+  {(bigint) icode_generation___MMSrcMethod___generate_iroutine},
+  {(bigint) icode_generation___MMSrcMethod___inner_generate_iroutine},
+  {(bigint) 3 /* 77: MMAttrImplementationMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 4 /* 78: MMAttrImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMAttrImplementationMethod___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction718(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMAttrImplementationMethod::_signature */
+/* 3: Attribute MMAttrImplementationMethod::_signatures_cache */
+/* 4: Attribute MMAttrImplementationMethod::_name */
+/* 5: Attribute MMAttrImplementationMethod::_local_class */
+/* 6: Attribute MMAttrImplementationMethod::_global */
+/* 7: Attribute MMAttrImplementationMethod::_prhe */
+/* 8: Attribute MMAttrImplementationMethod::_need_super */
+/* 9: Attribute MMAttrImplementationMethod::_cname_cache */
+/* 10: Attribute MMAttrImplementationMethod::_iroutine */
+void INIT_ATTRIBUTES__MMAttrImplementationMethod(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMAttrImplementationMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMAttrImplementationMethod(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction718;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction718(val_t self, char *from) {
-}
-val_t NEW_ReduceAction718_parser___ReduceAction718___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction718();
-  parser___ReduceAction718___init(self, init_table);
-  CHECKNEW_ReduceAction718(self, "parser::ReduceAction718::init for ReduceAction718");
-  return self;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_MMAttrImplementationMethod;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMAttrImplementationMethod(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMAttrImplementationMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction719[48] = {
-  {(bigint) 427 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction719 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction719 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 427 /* 3: ReduceAction719 < ReduceAction719: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_MMAttrImplementationMethod_syntax_base___MMAttrImplementationMethod___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 158;
+  fra.me.meth = LOCATE_NEW_MMAttrImplementationMethod_syntax_base___MMAttrImplementationMethod___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:158 */
+  fra.me.REG[3] = NEW_MMAttrImplementationMethod();
+  INIT_ATTRIBUTES__MMAttrImplementationMethod(fra.me.REG[3]);
+  syntax_base___MMAttrImplementationMethod___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_MMAttrImplementationMethod(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_MMReadImplementationMethod[82] = {
+  {(bigint) 3267 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMReadImplementationMethod < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMReadImplementationMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 1959 /* 4: MMReadImplementationMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 2611 /* 5: MMReadImplementationMethod < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 2927 /* 6: MMReadImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
+  {(bigint) 3267 /* 7: MMReadImplementationMethod < MMReadImplementationMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98071,14 +126410,9 @@ const classtable_elt_t VFT_ReduceAction719[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction719 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMReadImplementationMethod < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98086,7 +126420,6 @@ const classtable_elt_t VFT_ReduceAction719[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98094,44 +126427,164 @@ const classtable_elt_t VFT_ReduceAction719[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction719 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction719___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction719 < ReduceAction719: superclass init_table position */},
-  {(bigint) parser___ReduceAction719___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax_base___MMAttrImplementationMethod___node},
+  {(bigint) syntax_base___MMLocalProperty___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMReadImplementationMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) icode_generator___MMMethod___generate_icode},
+  {(bigint) icode_generation___MMSrcMethod___iroutine},
+  {(bigint) 2 /* 69: MMReadImplementationMethod < MMMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMSrcMethod___is_intern},
+  {(bigint) syntax_base___MMSrcMethod___is_abstract},
+  {(bigint) syntax_base___MMSrcMethod___extern_name},
+  {(bigint) compiling_global___MMMethod___compile_property_to_c},
+  {(bigint) icode_generation___MMSrcMethod___iroutine__eq},
+  {(bigint) icode_generation___MMSrcMethod___generate_iroutine},
+  {(bigint) icode_generation___MMReadImplementationMethod___inner_generate_iroutine},
+  {(bigint) 3 /* 77: MMReadImplementationMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 4 /* 78: MMReadImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMAttrImplementationMethod___init},
+  {(bigint) 5 /* 80: MMReadImplementationMethod < MMReadImplementationMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMReadImplementationMethod___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction719(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMReadImplementationMethod::_signature */
+/* 3: Attribute MMReadImplementationMethod::_signatures_cache */
+/* 4: Attribute MMReadImplementationMethod::_name */
+/* 5: Attribute MMReadImplementationMethod::_local_class */
+/* 6: Attribute MMReadImplementationMethod::_global */
+/* 7: Attribute MMReadImplementationMethod::_prhe */
+/* 8: Attribute MMReadImplementationMethod::_need_super */
+/* 9: Attribute MMReadImplementationMethod::_cname_cache */
+/* 10: Attribute MMReadImplementationMethod::_iroutine */
+void INIT_ATTRIBUTES__MMReadImplementationMethod(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMReadImplementationMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMReadImplementationMethod(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction719;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction719(val_t self, char *from) {
-}
-val_t NEW_ReduceAction719_parser___ReduceAction719___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction719();
-  parser___ReduceAction719___init(self, init_table);
-  CHECKNEW_ReduceAction719(self, "parser::ReduceAction719::init for ReduceAction719");
-  return self;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_MMReadImplementationMethod;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMReadImplementationMethod(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMReadImplementationMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction720[48] = {
-  {(bigint) 419 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction720 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction720 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 419 /* 3: ReduceAction720 < ReduceAction720: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_MMReadImplementationMethod_syntax_base___MMReadImplementationMethod___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 168;
+  fra.me.meth = LOCATE_NEW_MMReadImplementationMethod_syntax_base___MMReadImplementationMethod___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:168 */
+  fra.me.REG[3] = NEW_MMReadImplementationMethod();
+  INIT_ATTRIBUTES__MMReadImplementationMethod(fra.me.REG[3]);
+  syntax_base___MMReadImplementationMethod___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_MMReadImplementationMethod(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_MMWriteImplementationMethod[82] = {
+  {(bigint) 3263 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMWriteImplementationMethod < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMWriteImplementationMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 1959 /* 4: MMWriteImplementationMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 2611 /* 5: MMWriteImplementationMethod < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 2927 /* 6: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
+  {(bigint) 3263 /* 7: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98141,14 +126594,9 @@ const classtable_elt_t VFT_ReduceAction720[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction720 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMWriteImplementationMethod < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98156,7 +126604,6 @@ const classtable_elt_t VFT_ReduceAction720[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98164,43 +126611,163 @@ const classtable_elt_t VFT_ReduceAction720[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction720 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction720___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction720 < ReduceAction720: superclass init_table position */},
-  {(bigint) parser___ReduceAction720___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax_base___MMAttrImplementationMethod___node},
+  {(bigint) syntax_base___MMLocalProperty___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMWriteImplementationMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) icode_generator___MMMethod___generate_icode},
+  {(bigint) icode_generation___MMSrcMethod___iroutine},
+  {(bigint) 2 /* 69: MMWriteImplementationMethod < MMMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMSrcMethod___is_intern},
+  {(bigint) syntax_base___MMSrcMethod___is_abstract},
+  {(bigint) syntax_base___MMSrcMethod___extern_name},
+  {(bigint) compiling_global___MMMethod___compile_property_to_c},
+  {(bigint) icode_generation___MMSrcMethod___iroutine__eq},
+  {(bigint) icode_generation___MMSrcMethod___generate_iroutine},
+  {(bigint) icode_generation___MMWriteImplementationMethod___inner_generate_iroutine},
+  {(bigint) 3 /* 77: MMWriteImplementationMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 4 /* 78: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMAttrImplementationMethod___init},
+  {(bigint) 5 /* 80: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMWriteImplementationMethod___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction720(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMWriteImplementationMethod::_signature */
+/* 3: Attribute MMWriteImplementationMethod::_signatures_cache */
+/* 4: Attribute MMWriteImplementationMethod::_name */
+/* 5: Attribute MMWriteImplementationMethod::_local_class */
+/* 6: Attribute MMWriteImplementationMethod::_global */
+/* 7: Attribute MMWriteImplementationMethod::_prhe */
+/* 8: Attribute MMWriteImplementationMethod::_need_super */
+/* 9: Attribute MMWriteImplementationMethod::_cname_cache */
+/* 10: Attribute MMWriteImplementationMethod::_iroutine */
+void INIT_ATTRIBUTES__MMWriteImplementationMethod(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMWriteImplementationMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMWriteImplementationMethod(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction720;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction720(val_t self, char *from) {
-}
-val_t NEW_ReduceAction720_parser___ReduceAction720___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction720();
-  parser___ReduceAction720___init(self, init_table);
-  CHECKNEW_ReduceAction720(self, "parser::ReduceAction720::init for ReduceAction720");
-  return self;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_MMWriteImplementationMethod;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMWriteImplementationMethod(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMWriteImplementationMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction721[48] = {
-  {(bigint) 415 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction721 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction721 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 415 /* 3: ReduceAction721 < ReduceAction721: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_MMWriteImplementationMethod_syntax_base___MMWriteImplementationMethod___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 177;
+  fra.me.meth = LOCATE_NEW_MMWriteImplementationMethod_syntax_base___MMWriteImplementationMethod___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:177 */
+  fra.me.REG[3] = NEW_MMWriteImplementationMethod();
+  INIT_ATTRIBUTES__MMWriteImplementationMethod(fra.me.REG[3]);
+  syntax_base___MMWriteImplementationMethod___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_MMWriteImplementationMethod(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_MMMethSrcMethod[81] = {
+  {(bigint) 2923 /* 0: Identity */},
+  {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMMethSrcMethod < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMMethSrcMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 1959 /* 4: MMMethSrcMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 2611 /* 5: MMMethSrcMethod < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 2923 /* 6: MMMethSrcMethod < MMMethSrcMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98211,14 +126778,9 @@ const classtable_elt_t VFT_ReduceAction721[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction721 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMMethSrcMethod < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98226,7 +126788,6 @@ const classtable_elt_t VFT_ReduceAction721[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98234,42 +126795,180 @@ const classtable_elt_t VFT_ReduceAction721[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction721 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction721___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction721 < ReduceAction721: superclass init_table position */},
-  {(bigint) parser___ReduceAction721___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax_base___MMMethSrcMethod___node},
+  {(bigint) syntax_base___MMMethSrcMethod___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMMethSrcMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) icode_generator___MMMethod___generate_icode},
+  {(bigint) icode_generation___MMSrcMethod___iroutine},
+  {(bigint) 2 /* 69: MMMethSrcMethod < MMMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMMethSrcMethod___is_intern},
+  {(bigint) syntax_base___MMMethSrcMethod___is_abstract},
+  {(bigint) syntax_base___MMMethSrcMethod___extern_name},
+  {(bigint) compiling_global___MMMethod___compile_property_to_c},
+  {(bigint) icode_generation___MMSrcMethod___iroutine__eq},
+  {(bigint) icode_generation___MMSrcMethod___generate_iroutine},
+  {(bigint) icode_generation___MMMethSrcMethod___inner_generate_iroutine},
+  {(bigint) 3 /* 77: MMMethSrcMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 4 /* 78: MMMethSrcMethod < MMMethSrcMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMMethSrcMethod___extern_name__eq},
+  {(bigint) syntax_base___MMMethSrcMethod___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction721(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMMethSrcMethod::_signature */
+/* 3: Attribute MMMethSrcMethod::_signatures_cache */
+/* 4: Attribute MMMethSrcMethod::_name */
+/* 5: Attribute MMMethSrcMethod::_local_class */
+/* 6: Attribute MMMethSrcMethod::_global */
+/* 7: Attribute MMMethSrcMethod::_prhe */
+/* 8: Attribute MMMethSrcMethod::_need_super */
+/* 9: Attribute MMMethSrcMethod::_cname_cache */
+/* 10: Attribute MMMethSrcMethod::_iroutine */
+/* 11: Attribute MMMethSrcMethod::_is_init */
+/* 12: Attribute MMMethSrcMethod::_is_intern */
+/* 13: Attribute MMMethSrcMethod::_is_abstract */
+/* 14: Attribute MMMethSrcMethod::_extern_name */
+void INIT_ATTRIBUTES__MMMethSrcMethod(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMMethSrcMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMMethSrcMethod(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction721;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction721(val_t self, char *from) {
-}
-val_t NEW_ReduceAction721_parser___ReduceAction721___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction721();
-  parser___ReduceAction721___init(self, init_table);
-  CHECKNEW_ReduceAction721(self, "parser::ReduceAction721::init for ReduceAction721");
-  return self;
+  obj = alloc(sizeof(val_t) * 15);
+  obj->vft = (classtable_elt_t*)VFT_MMMethSrcMethod;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMMethSrcMethod(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMMethSrcMethod;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_init(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_init", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_intern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_intern", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_abstract(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_abstract", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction722[48] = {
-  {(bigint) 411 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction722 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction722 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 411 /* 3: ReduceAction722 < ReduceAction722: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_MMMethSrcMethod_syntax_base___MMMethSrcMethod___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 191;
+  fra.me.meth = LOCATE_NEW_MMMethSrcMethod_syntax_base___MMMethSrcMethod___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:191 */
+  fra.me.REG[3] = NEW_MMMethSrcMethod();
+  INIT_ATTRIBUTES__MMMethSrcMethod(fra.me.REG[3]);
+  syntax_base___MMMethSrcMethod___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_MMMethSrcMethod(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_MMSrcTypeProperty[72] = {
+  {(bigint) 2607 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMSrcTypeProperty < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMSrcTypeProperty < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 1923 /* 4: MMSrcTypeProperty < MMTypeProperty: superclass typecheck marker */},
+  {(bigint) 2607 /* 5: MMSrcTypeProperty < MMSrcTypeProperty: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98281,14 +126980,9 @@ const classtable_elt_t VFT_ReduceAction722[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction722 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMSrcTypeProperty < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98296,7 +126990,6 @@ const classtable_elt_t VFT_ReduceAction722[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98304,44 +126997,162 @@ const classtable_elt_t VFT_ReduceAction722[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction722 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction722___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction722 < ReduceAction722: superclass init_table position */},
-  {(bigint) parser___ReduceAction722___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
+  {(bigint) syntax_base___MMLocalProperty___node},
+  {(bigint) syntax_base___MMLocalProperty___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMSrcTypeProperty < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) 2 /* 67: MMSrcTypeProperty < MMTypeProperty: superclass init_table position */},
+  {(bigint) virtualtype___MMTypeProperty___stype_for},
+  {(bigint) virtualtype___MMTypeProperty___real_stype_for},
+  {(bigint) 3 /* 70: MMSrcTypeProperty < MMSrcTypeProperty: superclass init_table position */},
+  {(bigint) syntax_base___MMSrcTypeProperty___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction722(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMSrcTypeProperty::_signature */
+/* 3: Attribute MMSrcTypeProperty::_signatures_cache */
+/* 4: Attribute MMSrcTypeProperty::_name */
+/* 5: Attribute MMSrcTypeProperty::_local_class */
+/* 6: Attribute MMSrcTypeProperty::_global */
+/* 7: Attribute MMSrcTypeProperty::_prhe */
+/* 8: Attribute MMSrcTypeProperty::_need_super */
+/* 9: Attribute MMSrcTypeProperty::_cname_cache */
+/* 10: Attribute MMSrcTypeProperty::_stypes_cache */
+void INIT_ATTRIBUTES__MMSrcTypeProperty(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMSrcTypeProperty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//virtualtype.nit:40 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMSrcTypeProperty(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction722;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction722(val_t self, char *from) {
-}
-val_t NEW_ReduceAction722_parser___ReduceAction722___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction722();
-  parser___ReduceAction722___init(self, init_table);
-  CHECKNEW_ReduceAction722(self, "parser::ReduceAction722::init for ReduceAction722");
-  return self;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_MMSrcTypeProperty;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMSrcTypeProperty(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMSrcTypeProperty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_virtualtype___MMTypeProperty____stypes_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction723[48] = {
-  {(bigint) 407 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction723 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction723 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 407 /* 3: ReduceAction723 < ReduceAction723: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_MMSrcTypeProperty_syntax_base___MMSrcTypeProperty___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 206;
+  fra.me.meth = LOCATE_NEW_MMSrcTypeProperty_syntax_base___MMSrcTypeProperty___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:206 */
+  fra.me.REG[3] = NEW_MMSrcTypeProperty();
+  INIT_ATTRIBUTES__MMSrcTypeProperty(fra.me.REG[3]);
+  syntax_base___MMSrcTypeProperty___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_MMSrcTypeProperty(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_MMImplicitInit[86] = {
+  {(bigint) 3271 /* 0: Identity */},
+  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMImplicitInit < Object: superclass typecheck marker */},
+  {(bigint) 143 /* 3: MMImplicitInit < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 1959 /* 4: MMImplicitInit < MMMethod: superclass typecheck marker */},
+  {(bigint) 2611 /* 5: MMImplicitInit < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 2923 /* 6: MMImplicitInit < MMMethSrcMethod: superclass typecheck marker */},
+  {(bigint) 3271 /* 7: MMImplicitInit < MMImplicitInit: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98351,14 +127162,9 @@ const classtable_elt_t VFT_ReduceAction723[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction723 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MMImplicitInit < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98366,7 +127172,6 @@ const classtable_elt_t VFT_ReduceAction723[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98374,41 +127179,200 @@ const classtable_elt_t VFT_ReduceAction723[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction723 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction723___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction723 < ReduceAction723: superclass init_table position */},
-  {(bigint) parser___ReduceAction723___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___MMImplicitInit___accept_property_visitor},
+  {(bigint) syntax_base___MMMethSrcMethod___node},
+  {(bigint) syntax_base___MMImplicitInit___is_init},
+  {(bigint) inheritance___MMLocalProperty___inherit_global},
+  {(bigint) static_type___MMLocalProperty___signature},
+  {(bigint) static_type___MMLocalProperty___signature__eq},
+  {(bigint) static_type___MMLocalProperty___signature_for},
+  {(bigint) 1 /* 52: MMImplicitInit < MMLocalProperty: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMLocalProperty___name},
+  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
+  {(bigint) abstractmetamodel___MMLocalProperty___global},
+  {(bigint) abstractmetamodel___MMLocalProperty___is_global_set},
+  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
+  {(bigint) abstractmetamodel___MMLocalProperty___mmmodule},
+  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
+  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
+  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
+  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) compiling_base___MMLocalProperty___cname},
+  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
+  {(bigint) icode_generator___MMMethod___generate_icode},
+  {(bigint) icode_generation___MMSrcMethod___iroutine},
+  {(bigint) 2 /* 69: MMImplicitInit < MMMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMMethSrcMethod___is_intern},
+  {(bigint) syntax_base___MMMethSrcMethod___is_abstract},
+  {(bigint) syntax_base___MMMethSrcMethod___extern_name},
+  {(bigint) compiling_global___MMMethod___compile_property_to_c},
+  {(bigint) icode_generation___MMSrcMethod___iroutine__eq},
+  {(bigint) icode_generation___MMSrcMethod___generate_iroutine},
+  {(bigint) icode_generation___MMImplicitInit___inner_generate_iroutine},
+  {(bigint) 3 /* 77: MMImplicitInit < MMSrcMethod: superclass init_table position */},
+  {(bigint) 4 /* 78: MMImplicitInit < MMMethSrcMethod: superclass init_table position */},
+  {(bigint) syntax_base___MMMethSrcMethod___extern_name__eq},
+  {(bigint) syntax_base___MMMethSrcMethod___init},
+  {(bigint) 5 /* 81: MMImplicitInit < MMImplicitInit: superclass init_table position */},
+  {(bigint) mmbuilder___MMImplicitInit___super_init},
+  {(bigint) syntax_base___MMImplicitInit___unassigned_attributes},
+  {(bigint) syntax_base___MMImplicitInit___super_inits},
+  {(bigint) syntax_base___MMImplicitInit___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction723(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMImplicitInit::_signature */
+/* 3: Attribute MMImplicitInit::_signatures_cache */
+/* 4: Attribute MMImplicitInit::_name */
+/* 5: Attribute MMImplicitInit::_local_class */
+/* 6: Attribute MMImplicitInit::_global */
+/* 7: Attribute MMImplicitInit::_prhe */
+/* 8: Attribute MMImplicitInit::_need_super */
+/* 9: Attribute MMImplicitInit::_cname_cache */
+/* 10: Attribute MMImplicitInit::_iroutine */
+/* 11: Attribute MMImplicitInit::_is_init */
+/* 12: Attribute MMImplicitInit::_is_intern */
+/* 13: Attribute MMImplicitInit::_is_abstract */
+/* 14: Attribute MMImplicitInit::_extern_name */
+/* 15: Attribute MMImplicitInit::_super_init */
+/* 16: Attribute MMImplicitInit::_unassigned_attributes */
+/* 17: Attribute MMImplicitInit::_super_inits */
+void INIT_ATTRIBUTES__MMImplicitInit(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMImplicitInit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//mmbuilder.nit:279 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_mmbuilder___MMImplicitInit____super_init(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//abstractmetamodel.nit:641 */
+  REGB0 = TAG_Bool(false);
+  ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//static_type.nit:56 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMImplicitInit(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction723;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction723(val_t self, char *from) {
-}
-val_t NEW_ReduceAction723_parser___ReduceAction723___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction723();
-  parser___ReduceAction723___init(self, init_table);
-  CHECKNEW_ReduceAction723(self, "parser::ReduceAction723::init for ReduceAction723");
-  return self;
+  obj = alloc(sizeof(val_t) * 18);
+  obj->vft = (classtable_elt_t*)VFT_MMImplicitInit;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMImplicitInit(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMImplicitInit;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMImplicitInit____unassigned_attributes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_unassigned_attributes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMImplicitInit____super_inits(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_super_inits", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_init(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_init", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_intern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_intern", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_abstract(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_abstract", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMLocalProperty____need_super(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_need_super", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction724[48] = {
-  {(bigint) 403 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction724 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction724 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 403 /* 3: ReduceAction724 < ReduceAction724: superclass typecheck marker */},
+val_t NEW_MMImplicitInit_syntax_base___MMImplicitInit___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 219;
+  fra.me.meth = LOCATE_NEW_MMImplicitInit_syntax_base___MMImplicitInit___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:219 */
+  fra.me.REG[3] = NEW_MMImplicitInit();
+  INIT_ATTRIBUTES__MMImplicitInit(fra.me.REG[3]);
+  syntax_base___MMImplicitInit___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_MMImplicitInit(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_VarVariable[55] = {
+  {(bigint) 287 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: VarVariable < Object: superclass typecheck marker */},
+  {(bigint) 19 /* 3: VarVariable < Variable: superclass typecheck marker */},
+  {(bigint) 287 /* 4: VarVariable < VarVariable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98421,14 +127385,9 @@ const classtable_elt_t VFT_ReduceAction724[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction724 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: VarVariable < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98436,7 +127395,6 @@ const classtable_elt_t VFT_ReduceAction724[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98444,41 +127402,101 @@ const classtable_elt_t VFT_ReduceAction724[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) syntax_base___Variable___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction724 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction724___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction724 < ReduceAction724: superclass init_table position */},
-  {(bigint) parser___ReduceAction724___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) flow___VarVariable___must_be_set},
+  {(bigint) 0 /* 46: VarVariable < Variable: superclass init_table position */},
+  {(bigint) syntax_base___Variable___name},
+  {(bigint) syntax_base___Variable___decl},
+  {(bigint) syntax_base___Variable___stype},
+  {(bigint) syntax_base___Variable___stype__eq},
+  {(bigint) syntax_base___VarVariable___kind},
+  {(bigint) syntax_base___Variable___init},
+  {(bigint) 2 /* 53: VarVariable < VarVariable: superclass init_table position */},
+  {(bigint) syntax_base___VarVariable___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction724(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute VarVariable::_name */
+/* 3: Attribute VarVariable::_decl */
+/* 4: Attribute VarVariable::_stype */
+void INIT_ATTRIBUTES__VarVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__VarVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_VarVariable(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction724;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction724(val_t self, char *from) {
-}
-val_t NEW_ReduceAction724_parser___ReduceAction724___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction724();
-  parser___ReduceAction724___init(self, init_table);
-  CHECKNEW_ReduceAction724(self, "parser::ReduceAction724::init for ReduceAction724");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction725[48] = {
-  {(bigint) 399 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction725 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction725 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 399 /* 3: ReduceAction725 < ReduceAction725: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_VarVariable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_VarVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_VarVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_VarVariable_syntax_base___VarVariable___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 253;
+  fra.me.meth = LOCATE_NEW_VarVariable_syntax_base___VarVariable___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//syntax_base.nit:253 */
+  fra.me.REG[2] = NEW_VarVariable();
+  INIT_ATTRIBUTES__VarVariable(fra.me.REG[2]);
+  syntax_base___VarVariable___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_VarVariable(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ParamVariable[55] = {
+  {(bigint) 1871 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ParamVariable < Object: superclass typecheck marker */},
+  {(bigint) 19 /* 3: ParamVariable < Variable: superclass typecheck marker */},
+  {(bigint) 1871 /* 4: ParamVariable < ParamVariable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98491,14 +127509,9 @@ const classtable_elt_t VFT_ReduceAction725[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction725 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ParamVariable < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98506,7 +127519,6 @@ const classtable_elt_t VFT_ReduceAction725[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98514,41 +127526,101 @@ const classtable_elt_t VFT_ReduceAction725[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) syntax_base___Variable___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction725 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction725___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction725 < ReduceAction725: superclass init_table position */},
-  {(bigint) parser___ReduceAction725___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) flow___Variable___must_be_set},
+  {(bigint) 0 /* 46: ParamVariable < Variable: superclass init_table position */},
+  {(bigint) syntax_base___Variable___name},
+  {(bigint) syntax_base___Variable___decl},
+  {(bigint) syntax_base___Variable___stype},
+  {(bigint) syntax_base___Variable___stype__eq},
+  {(bigint) syntax_base___ParamVariable___kind},
+  {(bigint) syntax_base___Variable___init},
+  {(bigint) 2 /* 53: ParamVariable < ParamVariable: superclass init_table position */},
+  {(bigint) syntax_base___ParamVariable___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction725(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ParamVariable::_name */
+/* 3: Attribute ParamVariable::_decl */
+/* 4: Attribute ParamVariable::_stype */
+void INIT_ATTRIBUTES__ParamVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ParamVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ParamVariable(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction725;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction725(val_t self, char *from) {
-}
-val_t NEW_ReduceAction725_parser___ReduceAction725___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction725();
-  parser___ReduceAction725___init(self, init_table);
-  CHECKNEW_ReduceAction725(self, "parser::ReduceAction725::init for ReduceAction725");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction726[48] = {
-  {(bigint) 395 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction726 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction726 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 395 /* 3: ReduceAction726 < ReduceAction726: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_ParamVariable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ParamVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ParamVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ParamVariable_syntax_base___ParamVariable___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 260;
+  fra.me.meth = LOCATE_NEW_ParamVariable_syntax_base___ParamVariable___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//syntax_base.nit:260 */
+  fra.me.REG[2] = NEW_ParamVariable();
+  INIT_ATTRIBUTES__ParamVariable(fra.me.REG[2]);
+  syntax_base___ParamVariable___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ParamVariable(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_AutoVariable[55] = {
+  {(bigint) 2127 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AutoVariable < Object: superclass typecheck marker */},
+  {(bigint) 19 /* 3: AutoVariable < Variable: superclass typecheck marker */},
+  {(bigint) 2127 /* 4: AutoVariable < AutoVariable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98561,14 +127633,9 @@ const classtable_elt_t VFT_ReduceAction726[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction726 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: AutoVariable < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98576,7 +127643,6 @@ const classtable_elt_t VFT_ReduceAction726[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98584,41 +127650,101 @@ const classtable_elt_t VFT_ReduceAction726[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) syntax_base___Variable___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction726 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction726___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction726 < ReduceAction726: superclass init_table position */},
-  {(bigint) parser___ReduceAction726___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) flow___Variable___must_be_set},
+  {(bigint) 0 /* 46: AutoVariable < Variable: superclass init_table position */},
+  {(bigint) syntax_base___Variable___name},
+  {(bigint) syntax_base___Variable___decl},
+  {(bigint) syntax_base___Variable___stype},
+  {(bigint) syntax_base___Variable___stype__eq},
+  {(bigint) syntax_base___AutoVariable___kind},
+  {(bigint) syntax_base___Variable___init},
+  {(bigint) 2 /* 53: AutoVariable < AutoVariable: superclass init_table position */},
+  {(bigint) syntax_base___AutoVariable___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction726(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AutoVariable::_name */
+/* 3: Attribute AutoVariable::_decl */
+/* 4: Attribute AutoVariable::_stype */
+void INIT_ATTRIBUTES__AutoVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AutoVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AutoVariable(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction726;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction726(val_t self, char *from) {
-}
-val_t NEW_ReduceAction726_parser___ReduceAction726___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction726();
-  parser___ReduceAction726___init(self, init_table);
-  CHECKNEW_ReduceAction726(self, "parser::ReduceAction726::init for ReduceAction726");
-  return self;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_AutoVariable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AutoVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AutoVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AutoVariable_syntax_base___AutoVariable___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 267;
+  fra.me.meth = LOCATE_NEW_AutoVariable_syntax_base___AutoVariable___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//syntax_base.nit:267 */
+  fra.me.REG[2] = NEW_AutoVariable();
+  INIT_ATTRIBUTES__AutoVariable(fra.me.REG[2]);
+  syntax_base___AutoVariable___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AutoVariable(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
 }
-const classtable_elt_t VFT_ReduceAction727[48] = {
-  {(bigint) 391 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction727 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction727 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 391 /* 3: ReduceAction727 < ReduceAction727: superclass typecheck marker */},
+const classtable_elt_t VFT_ClosureVariable[56] = {
+  {(bigint) 2107 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ClosureVariable < Object: superclass typecheck marker */},
+  {(bigint) 19 /* 3: ClosureVariable < Variable: superclass typecheck marker */},
+  {(bigint) 2107 /* 4: ClosureVariable < ClosureVariable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98631,14 +127757,9 @@ const classtable_elt_t VFT_ReduceAction727[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction727 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: ClosureVariable < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98646,7 +127767,6 @@ const classtable_elt_t VFT_ReduceAction727[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98654,41 +127774,110 @@ const classtable_elt_t VFT_ReduceAction727[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) syntax_base___Variable___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction727 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction727___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction727 < ReduceAction727: superclass init_table position */},
-  {(bigint) parser___ReduceAction727___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) flow___Variable___must_be_set},
+  {(bigint) 0 /* 46: ClosureVariable < Variable: superclass init_table position */},
+  {(bigint) syntax_base___Variable___name},
+  {(bigint) syntax_base___Variable___decl},
+  {(bigint) syntax_base___Variable___stype},
+  {(bigint) syntax_base___Variable___stype__eq},
+  {(bigint) syntax_base___ClosureVariable___kind},
+  {(bigint) syntax_base___Variable___init},
+  {(bigint) 2 /* 53: ClosureVariable < ClosureVariable: superclass init_table position */},
+  {(bigint) syntax_base___ClosureVariable___closure},
+  {(bigint) syntax_base___ClosureVariable___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction727(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ClosureVariable::_name */
+/* 3: Attribute ClosureVariable::_decl */
+/* 4: Attribute ClosureVariable::_stype */
+/* 5: Attribute ClosureVariable::_closure */
+void INIT_ATTRIBUTES__ClosureVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ClosureVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ClosureVariable(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction727;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction727(val_t self, char *from) {
-}
-val_t NEW_ReduceAction727_parser___ReduceAction727___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction727();
-  parser___ReduceAction727___init(self, init_table);
-  CHECKNEW_ReduceAction727(self, "parser::ReduceAction727::init for ReduceAction727");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction728[48] = {
-  {(bigint) 387 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction728 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction728 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 387 /* 3: ReduceAction728 < ReduceAction728: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_ClosureVariable;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ClosureVariable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ClosureVariable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___ClosureVariable____closure(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ClosureVariable_syntax_base___ClosureVariable___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 279;
+  fra.me.meth = LOCATE_NEW_ClosureVariable_syntax_base___ClosureVariable___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:279 */
+  fra.me.REG[3] = NEW_ClosureVariable();
+  INIT_ATTRIBUTES__ClosureVariable(fra.me.REG[3]);
+  syntax_base___ClosureVariable___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_ClosureVariable(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_AbsSyntaxVisitor[80] = {
+  {(bigint) 2139 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AbsSyntaxVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: AbsSyntaxVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 2139 /* 4: AbsSyntaxVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98701,14 +127890,9 @@ const classtable_elt_t VFT_ReduceAction728[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction728 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: AbsSyntaxVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98716,7 +127900,6 @@ const classtable_elt_t VFT_ReduceAction728[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98724,43 +127907,141 @@ const classtable_elt_t VFT_ReduceAction728[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction728 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction728___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction728 < ReduceAction728: superclass init_table position */},
-  {(bigint) parser___ReduceAction728___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: AbsSyntaxVisitor < Visitor: superclass init_table position */},
+  {(bigint) parser_prod___Visitor___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
+  {(bigint) parser_prod___Visitor___init},
+  {(bigint) 2 /* 50: AbsSyntaxVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction728(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AbsSyntaxVisitor::_current_node */
+/* 3: Attribute AbsSyntaxVisitor::_mmmodule */
+/* 4: Attribute AbsSyntaxVisitor::_local_class */
+/* 5: Attribute AbsSyntaxVisitor::_local_property */
+/* 6: Attribute AbsSyntaxVisitor::_tc */
+void INIT_ATTRIBUTES__AbsSyntaxVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AbsSyntaxVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AbsSyntaxVisitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction728;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction728(val_t self, char *from) {
-}
-val_t NEW_ReduceAction728_parser___ReduceAction728___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction728();
-  parser___ReduceAction728___init(self, init_table);
-  CHECKNEW_ReduceAction728(self, "parser::ReduceAction728::init for ReduceAction728");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction729[48] = {
-  {(bigint) 383 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction729 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction729 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 383 /* 3: ReduceAction729 < ReduceAction729: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_AbsSyntaxVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AbsSyntaxVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AbsSyntaxVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AbsSyntaxVisitor_syntax_base___AbsSyntaxVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 497;
+  fra.me.meth = LOCATE_NEW_AbsSyntaxVisitor_syntax_base___AbsSyntaxVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//syntax_base.nit:497 */
+  fra.me.REG[2] = NEW_AbsSyntaxVisitor();
+  INIT_ATTRIBUTES__AbsSyntaxVisitor(fra.me.REG[2]);
+  syntax_base___AbsSyntaxVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_AbsSyntaxVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_AAbsAbsSendExpr[94] = {
+  {(bigint) 3251 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAbsAbsSendExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAbsAbsSendExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAbsAbsSendExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AAbsAbsSendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AAbsAbsSendExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98771,14 +128052,9 @@ const classtable_elt_t VFT_ReduceAction729[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction729 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAbsAbsSendExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98786,7 +128062,6 @@ const classtable_elt_t VFT_ReduceAction729[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98794,45 +128069,159 @@ const classtable_elt_t VFT_ReduceAction729[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction729 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction729___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction729 < ReduceAction729: superclass init_table position */},
-  {(bigint) parser___ReduceAction729___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AAbsAbsSendExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAbsAbsSendExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAbsAbsSendExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___AAbsAbsSendExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 91: AAbsAbsSendExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction729(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AAbsAbsSendExpr::_parent */
+/* 3: Attribute AAbsAbsSendExpr::_location */
+/* 4: Attribute AAbsAbsSendExpr::_first_location */
+/* 5: Attribute AAbsAbsSendExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAbsAbsSendExpr::_is_typed */
+/* 8: Attribute AAbsAbsSendExpr::_stype */
+/* 9: Attribute AAbsAbsSendExpr::_if_true_flow_ctx */
+/* 10: Attribute AAbsAbsSendExpr::_if_false_flow_ctx */
+/* 11: Attribute AAbsAbsSendExpr::_prop_signature */
+/* 12: Attribute AAbsAbsSendExpr::_raw_arguments_cache */
+void INIT_ATTRIBUTES__AAbsAbsSendExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAbsAbsSendExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAbsAbsSendExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction729;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction729(val_t self, char *from) {
-}
-val_t NEW_ReduceAction729_parser___ReduceAction729___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction729();
-  parser___ReduceAction729___init(self, init_table);
-  CHECKNEW_ReduceAction729(self, "parser::ReduceAction729::init for ReduceAction729");
-  return self;
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_AAbsAbsSendExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAbsAbsSendExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAbsAbsSendExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction730[48] = {
-  {(bigint) 375 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction730 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction730 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 375 /* 3: ReduceAction730 < ReduceAction730: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAbsAbsSendExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAbsAbsSendExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAbsAbsSendExpr();
+  INIT_ATTRIBUTES__AAbsAbsSendExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAbsAbsSendExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AAbsSendExpr[100] = {
+  {(bigint) 3443 /* 0: Identity */},
+  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAbsSendExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAbsSendExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAbsSendExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AAbsSendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: AAbsSendExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: AAbsSendExpr < AAbsSendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98841,14 +128230,9 @@ const classtable_elt_t VFT_ReduceAction730[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction730 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAbsSendExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98856,7 +128240,6 @@ const classtable_elt_t VFT_ReduceAction730[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98864,43 +128247,51 @@ const classtable_elt_t VFT_ReduceAction730[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction730 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction730___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction730 < ReduceAction730: superclass init_table position */},
-  {(bigint) parser___ReduceAction730___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction730(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction730;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction730(val_t self, char *from) {
-}
-val_t NEW_ReduceAction730_parser___ReduceAction730___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction730();
-  parser___ReduceAction730___init(self, init_table);
-  CHECKNEW_ReduceAction730(self, "parser::ReduceAction730::init for ReduceAction730");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction731[48] = {
-  {(bigint) 371 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction731 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction731 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 371 /* 3: ReduceAction731 < ReduceAction731: superclass typecheck marker */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AAbsSendExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAbsSendExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAbsSendExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98909,16 +128300,128 @@ const classtable_elt_t VFT_ReduceAction731[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___AAbsAbsSendExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 91: AAbsSendExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 5 /* 97: AAbsSendExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AAbsSendExpr::_parent */
+/* 3: Attribute AAbsSendExpr::_location */
+/* 4: Attribute AAbsSendExpr::_first_location */
+/* 5: Attribute AAbsSendExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAbsSendExpr::_is_typed */
+/* 8: Attribute AAbsSendExpr::_stype */
+/* 9: Attribute AAbsSendExpr::_if_true_flow_ctx */
+/* 10: Attribute AAbsSendExpr::_if_false_flow_ctx */
+/* 11: Attribute AAbsSendExpr::_prop_signature */
+/* 12: Attribute AAbsSendExpr::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute AAbsSendExpr::_prop */
+/* 17: Attribute AAbsSendExpr::_return_type */
+void INIT_ATTRIBUTES__AAbsSendExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAbsSendExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAbsSendExpr(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 18);
+  obj->vft = (classtable_elt_t*)VFT_AAbsSendExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAbsSendExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAbsSendExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAbsSendExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[6] = {0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAbsSendExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAbsSendExpr();
+  INIT_ATTRIBUTES__AAbsSendExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAbsSendExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ASuperInitCall[100] = {
+  {(bigint) 3459 /* 0: Identity */},
+  {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ASuperInitCall < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ASuperInitCall < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ASuperInitCall < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ASuperInitCall < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ASuperInitCall < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3443 /* 8: ASuperInitCall < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ASuperInitCall < ASuperInitCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction731 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ASuperInitCall < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98926,7 +128429,6 @@ const classtable_elt_t VFT_ReduceAction731[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -98934,41 +128436,51 @@ const classtable_elt_t VFT_ReduceAction731[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction731 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction731___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction731 < ReduceAction731: superclass init_table position */},
-  {(bigint) parser___ReduceAction731___init},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_ReduceAction731(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction731;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction731(val_t self, char *from) {
-}
-val_t NEW_ReduceAction731_parser___ReduceAction731___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction731();
-  parser___ReduceAction731___init(self, init_table);
-  CHECKNEW_ReduceAction731(self, "parser::ReduceAction731::init for ReduceAction731");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction732[48] = {
-  {(bigint) 367 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction732 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction732 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 367 /* 3: ReduceAction732 < ReduceAction732: superclass typecheck marker */},
+  {(bigint) math___Object___pi},
+  {(bigint) math___Object___srand_from},
+  {(bigint) math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: ASuperInitCall < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ASuperInitCall < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 6 /* 68: ASuperInitCall < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ASuperInitCall < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98977,18 +128489,128 @@ const classtable_elt_t VFT_ReduceAction732[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___AAbsAbsSendExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 4 /* 91: ASuperInitCall < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 5 /* 97: ASuperInitCall < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ASuperInitCall::_parent */
+/* 3: Attribute ASuperInitCall::_location */
+/* 4: Attribute ASuperInitCall::_first_location */
+/* 5: Attribute ASuperInitCall::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ASuperInitCall::_is_typed */
+/* 8: Attribute ASuperInitCall::_stype */
+/* 9: Attribute ASuperInitCall::_if_true_flow_ctx */
+/* 10: Attribute ASuperInitCall::_if_false_flow_ctx */
+/* 11: Attribute ASuperInitCall::_prop_signature */
+/* 12: Attribute ASuperInitCall::_raw_arguments_cache */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 16: Attribute ASuperInitCall::_prop */
+/* 17: Attribute ASuperInitCall::_return_type */
+void INIT_ATTRIBUTES__ASuperInitCall(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ASuperInitCall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASuperInitCall(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 18);
+  obj->vft = (classtable_elt_t*)VFT_ASuperInitCall;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ASuperInitCall(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ASuperInitCall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASuperInitCall_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ASuperInitCall_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ASuperInitCall();
+  INIT_ATTRIBUTES__ASuperInitCall(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASuperInitCall(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ASendReassignExpr[108] = {
+  {(bigint) 3487 /* 0: Identity */},
+  {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ASendReassignExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ASendReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ASendReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: ASendReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ASendReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: ASendReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3443 /* 8: ASendReassignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3459 /* 9: ASendReassignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3479 /* 10: ASendReassignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3487 /* 11: ASendReassignExpr < ASendReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction732 < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 5 /* 19: ASendReassignExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -98996,7 +128618,6 @@ const classtable_elt_t VFT_ReduceAction732[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99004,41 +128625,239 @@ const classtable_elt_t VFT_ReduceAction732[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction732 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction732___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction732 < ReduceAction732: superclass init_table position */},
-  {(bigint) parser___ReduceAction732___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ASendExpr___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ASendExpr___visit_all},
+  {(bigint) 4 /* 58: ASendReassignExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ASendExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 3 /* 65: ASendReassignExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) typing___ASuperInitCall___register_super_init_call},
+  {(bigint) 0 /* 68: ASendReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 6 /* 72: ASendReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___ASendReassignExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 9 /* 79: ASendReassignExpr < ASendReassignExpr: superclass init_table position */},
+  {(bigint) typing___ASendReassignExpr___read_prop},
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
+  {(bigint) typing___AReassignFormExpr___assign_method},
+  {(bigint) 8 /* 84: ASendReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
+  {(bigint) parser_nodes___AReassignFormExpr___n_value},
+  {(bigint) icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
+  {(bigint) typing___AAbsAbsSendExpr___compute_raw_arguments},
+  {(bigint) typing___AAbsAbsSendExpr___process_signature},
+  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 2 /* 91: ASendReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
+  {(bigint) typing___AAbsAbsSendExpr___raw_arguments},
+  {(bigint) typing___AAbsSendExpr___do_typing},
+  {(bigint) typing___AAbsSendExpr___get_property},
+  {(bigint) typing___AAbsSendExpr___get_signature},
+  {(bigint) 1 /* 97: ASendReassignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) typing___AAbsSendExpr___prop},
+  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) typing___ASendExpr___name},
+  {(bigint) typing___ASendReassignExpr___do_all_typing},
+  {(bigint) typing___ASendExpr___closure_defs},
+  {(bigint) parser_prod___ASendExpr___empty_init},
+  {(bigint) parser_prod___ASendExpr___init_asendexpr},
+  {(bigint) 7 /* 105: ASendReassignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) parser_nodes___ASendExpr___n_expr},
+  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction732(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ASendReassignExpr::_parent */
+/* 3: Attribute ASendReassignExpr::_location */
+/* 4: Attribute ASendReassignExpr::_first_location */
+/* 5: Attribute ASendReassignExpr::_last_location */
+/* 6: Attribute ASendReassignExpr::_read_prop */
+/* 7: Attribute ASendReassignExpr::_is_typed */
+/* 8: Attribute ASendReassignExpr::_stype */
+/* 9: Attribute ASendReassignExpr::_if_true_flow_ctx */
+/* 10: Attribute ASendReassignExpr::_if_false_flow_ctx */
+/* 11: Attribute ASendReassignExpr::_prop_signature */
+/* 12: Attribute ASendReassignExpr::_raw_arguments_cache */
+/* 13: Attribute ASendReassignExpr::_assign_method */
+/* 14: Attribute ASendReassignExpr::_n_assign_op */
+/* 15: Attribute ASendReassignExpr::_n_value */
+/* 16: Attribute ASendReassignExpr::_prop */
+/* 17: Attribute ASendReassignExpr::_return_type */
+/* 18: Attribute ASendReassignExpr::_n_expr */
+/* 19: Attribute ASendReassignExpr::_n_closure_defs */
+void INIT_ATTRIBUTES__ASendReassignExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ASendReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_nodes.nit:690 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:1218 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_typing___AAbsAbsSendExpr____raw_arguments_cache(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ASendReassignExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction732;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction732(val_t self, char *from) {
-}
-val_t NEW_ReduceAction732_parser___ReduceAction732___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction732();
-  parser___ReduceAction732___init(self, init_table);
-  CHECKNEW_ReduceAction732(self, "parser::ReduceAction732::init for ReduceAction732");
-  return self;
+  obj = alloc(sizeof(val_t) * 20);
+  obj->vft = (classtable_elt_t*)VFT_ASendReassignExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ASendReassignExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ASendReassignExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_assign_op", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_n_value", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction733[48] = {
-  {(bigint) 363 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction733 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction733 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 363 /* 3: ReduceAction733 < ReduceAction733: superclass typecheck marker */},
+val_t NEW_ASendReassignExpr_parser_prod___ASendExpr___empty_init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4068;
+  fra.me.meth = LOCATE_NEW_ASendReassignExpr_parser_prod___ASendExpr___empty_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./parser//parser_prod.nit:4068 */
+  fra.me.REG[0] = NEW_ASendReassignExpr();
+  INIT_ATTRIBUTES__ASendReassignExpr(fra.me.REG[0]);
+  parser_prod___ASendExpr___empty_init(fra.me.REG[0], init_table);
+  CHECKNEW_ASendReassignExpr(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t NEW_ASendReassignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 4070;
+  fra.me.meth = LOCATE_NEW_ASendReassignExpr_parser_prod___ASendExpr___init_asendexpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:4070 */
+  fra.me.REG[1] = NEW_ASendReassignExpr();
+  INIT_ATTRIBUTES__ASendReassignExpr(fra.me.REG[1]);
+  parser_prod___ASendExpr___init_asendexpr(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASendReassignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t NEW_ASendReassignExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ASendReassignExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ASendReassignExpr();
+  INIT_ATTRIBUTES__ASendReassignExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ASendReassignExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_CSHSorter[54] = {
+  {(bigint) 2119 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: CSHSorter < Object: superclass typecheck marker */},
+  {(bigint) 267 /* 3: CSHSorter < AbstractSorter: superclass typecheck marker */},
+  {(bigint) 2119 /* 4: CSHSorter < CSHSorter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99051,14 +128870,9 @@ const classtable_elt_t VFT_ReduceAction733[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction733 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: CSHSorter < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99066,7 +128880,6 @@ const classtable_elt_t VFT_ReduceAction733[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99074,41 +128887,85 @@ const classtable_elt_t VFT_ReduceAction733[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction733 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction733___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction733 < ReduceAction733: superclass init_table position */},
-  {(bigint) parser___ReduceAction733___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: CSHSorter < AbstractSorter: superclass init_table position */},
+  {(bigint) mmbuilder___CSHSorter___compare},
+  {(bigint) sorter___AbstractSorter___sort},
+  {(bigint) sorter___AbstractSorter___sub_sort},
+  {(bigint) sorter___AbstractSorter___quick_sort},
+  {(bigint) sorter___AbstractSorter___bubble_sort},
+  {(bigint) sorter___AbstractSorter___init},
+  {(bigint) 2 /* 52: CSHSorter < CSHSorter: superclass init_table position */},
+  {(bigint) mmbuilder___CSHSorter___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction733(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction733;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction733(val_t self, char *from) {
-}
-val_t NEW_ReduceAction733_parser___ReduceAction733___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction733();
-  parser___ReduceAction733___init(self, init_table);
-  CHECKNEW_ReduceAction733(self, "parser::ReduceAction733::init for ReduceAction733");
-  return self;
+/* 1: Object_id */
+void INIT_ATTRIBUTES__CSHSorter(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__CSHSorter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction734[48] = {
-  {(bigint) 359 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction734 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction734 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 359 /* 3: ReduceAction734 < ReduceAction734: superclass typecheck marker */},
+val_t NEW_CSHSorter(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_CSHSorter;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_CSHSorter(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_CSHSorter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_CSHSorter_mmbuilder___CSHSorter___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 32;
+  fra.me.meth = LOCATE_NEW_CSHSorter_mmbuilder___CSHSorter___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./syntax//mmbuilder.nit:32 */
+  fra.me.REG[0] = NEW_CSHSorter();
+  INIT_ATTRIBUTES__CSHSorter(fra.me.REG[0]);
+  mmbuilder___CSHSorter___init(fra.me.REG[0], init_table);
+  CHECKNEW_CSHSorter(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_MMSrcAncestor[57] = {
+  {(bigint) 1943 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MMSrcAncestor < Object: superclass typecheck marker */},
+  {(bigint) 171 /* 3: MMSrcAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 1943 /* 4: MMSrcAncestor < MMSrcAncestor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99121,14 +128978,9 @@ const classtable_elt_t VFT_ReduceAction734[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction734 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MMSrcAncestor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99136,7 +128988,6 @@ const classtable_elt_t VFT_ReduceAction734[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99144,42 +128995,111 @@ const classtable_elt_t VFT_ReduceAction734[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) static_type___MMAncestor___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction734 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction734___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction734 < ReduceAction734: superclass init_table position */},
-  {(bigint) parser___ReduceAction734___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) inheritance___MMAncestor___add_in},
+  {(bigint) 0 /* 46: MMSrcAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) static_type___MMAncestor___stype__eq},
+  {(bigint) static_type___MMAncestor___stype},
+  {(bigint) static_type___MMAncestor___inheriter__eq},
+  {(bigint) static_type___MMAncestor___inheriter},
+  {(bigint) static_type___MMAncestor___is_reffinement},
+  {(bigint) static_type___MMAncestor___is_specialisation},
+  {(bigint) mmbuilder___MMSrcAncestor___local_class},
+  {(bigint) static_type___MMAncestor___init},
+  {(bigint) 2 /* 55: MMSrcAncestor < MMSrcAncestor: superclass init_table position */},
+  {(bigint) mmbuilder___MMSrcAncestor___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction734(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MMSrcAncestor::_stype */
+/* 3: Attribute MMSrcAncestor::_inheriter */
+/* 4: Attribute MMSrcAncestor::_local_class */
+void INIT_ATTRIBUTES__MMSrcAncestor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MMSrcAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:273 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//static_type.nit:279 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMSrcAncestor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction734;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction734(val_t self, char *from) {
-}
-val_t NEW_ReduceAction734_parser___ReduceAction734___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction734();
-  parser___ReduceAction734___init(self, init_table);
-  CHECKNEW_ReduceAction734(self, "parser::ReduceAction734::init for ReduceAction734");
-  return self;
-}
-const classtable_elt_t VFT_ReduceAction735[48] = {
-  {(bigint) 355 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction735 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction735 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 355 /* 3: ReduceAction735 < ReduceAction735: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_MMSrcAncestor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MMSrcAncestor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MMSrcAncestor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_mmbuilder___MMSrcAncestor____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MMSrcAncestor_mmbuilder___MMSrcAncestor___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 317;
+  fra.me.meth = LOCATE_NEW_MMSrcAncestor_mmbuilder___MMSrcAncestor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//mmbuilder.nit:317 */
+  fra.me.REG[1] = NEW_MMSrcAncestor();
+  INIT_ATTRIBUTES__MMSrcAncestor(fra.me.REG[1]);
+  mmbuilder___MMSrcAncestor___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_MMSrcAncestor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ClassBuilderVisitor[86] = {
+  {(bigint) 2767 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ClassBuilderVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: ClassBuilderVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 2139 /* 4: ClassBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2767 /* 5: ClassBuilderVisitor < ClassBuilderVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99191,14 +129111,9 @@ const classtable_elt_t VFT_ReduceAction735[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction735 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ClassBuilderVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99206,7 +129121,6 @@ const classtable_elt_t VFT_ReduceAction735[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99214,42 +129128,157 @@ const classtable_elt_t VFT_ReduceAction735[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction735 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction735___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction735 < ReduceAction735: superclass init_table position */},
-  {(bigint) parser___ReduceAction735___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ClassBuilderVisitor < Visitor: superclass init_table position */},
+  {(bigint) mmbuilder___ClassBuilderVisitor___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
+  {(bigint) parser_prod___Visitor___init},
+  {(bigint) 2 /* 50: ClassBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 80: ClassBuilderVisitor < ClassBuilderVisitor: superclass init_table position */},
+  {(bigint) mmbuilder___ClassBuilderVisitor___local_class_arity},
+  {(bigint) mmbuilder___ClassBuilderVisitor___local_class_arity__eq},
+  {(bigint) mmbuilder___ClassBuilderVisitor___formals},
+  {(bigint) mmbuilder___ClassBuilderVisitor___formals__eq},
+  {(bigint) mmbuilder___ClassBuilderVisitor___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction735(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ClassBuilderVisitor::_current_node */
+/* 3: Attribute ClassBuilderVisitor::_mmmodule */
+/* 4: Attribute ClassBuilderVisitor::_local_class */
+/* 5: Attribute ClassBuilderVisitor::_local_property */
+/* 6: Attribute ClassBuilderVisitor::_tc */
+/* 7: Attribute ClassBuilderVisitor::_local_class_arity */
+/* 8: Attribute ClassBuilderVisitor::_formals */
+void INIT_ATTRIBUTES__ClassBuilderVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ClassBuilderVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//mmbuilder.nit:331 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ClassBuilderVisitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction735;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction735(val_t self, char *from) {
-}
-val_t NEW_ReduceAction735_parser___ReduceAction735___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction735();
-  parser___ReduceAction735___init(self, init_table);
-  CHECKNEW_ReduceAction735(self, "parser::ReduceAction735::init for ReduceAction735");
-  return self;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_ClassBuilderVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ClassBuilderVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ClassBuilderVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class_arity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction736[48] = {
-  {(bigint) 351 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction736 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction736 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 351 /* 3: ReduceAction736 < ReduceAction736: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ClassBuilderVisitor_mmbuilder___ClassBuilderVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 337;
+  fra.me.meth = LOCATE_NEW_ClassBuilderVisitor_mmbuilder___ClassBuilderVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//mmbuilder.nit:337 */
+  fra.me.REG[2] = NEW_ClassBuilderVisitor();
+  INIT_ATTRIBUTES__ClassBuilderVisitor(fra.me.REG[2]);
+  mmbuilder___ClassBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ClassBuilderVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ClassSpecializationBuilderVisitor[82] = {
+  {(bigint) 2763 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ClassSpecializationBuilderVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: ClassSpecializationBuilderVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 2139 /* 4: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2763 /* 5: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99261,14 +129290,9 @@ const classtable_elt_t VFT_ReduceAction736[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction736 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ClassSpecializationBuilderVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99276,7 +129300,6 @@ const classtable_elt_t VFT_ReduceAction736[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99284,42 +129307,142 @@ const classtable_elt_t VFT_ReduceAction736[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction736 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction736___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction736 < ReduceAction736: superclass init_table position */},
-  {(bigint) parser___ReduceAction736___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ClassSpecializationBuilderVisitor < Visitor: superclass init_table position */},
+  {(bigint) mmbuilder___ClassSpecializationBuilderVisitor___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
+  {(bigint) parser_prod___Visitor___init},
+  {(bigint) 2 /* 50: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 80: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass init_table position */},
+  {(bigint) mmbuilder___ClassSpecializationBuilderVisitor___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction736(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ClassSpecializationBuilderVisitor::_current_node */
+/* 3: Attribute ClassSpecializationBuilderVisitor::_mmmodule */
+/* 4: Attribute ClassSpecializationBuilderVisitor::_local_class */
+/* 5: Attribute ClassSpecializationBuilderVisitor::_local_property */
+/* 6: Attribute ClassSpecializationBuilderVisitor::_tc */
+void INIT_ATTRIBUTES__ClassSpecializationBuilderVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ClassSpecializationBuilderVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ClassSpecializationBuilderVisitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction736;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction736(val_t self, char *from) {
-}
-val_t NEW_ReduceAction736_parser___ReduceAction736___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction736();
-  parser___ReduceAction736___init(self, init_table);
-  CHECKNEW_ReduceAction736(self, "parser::ReduceAction736::init for ReduceAction736");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_ClassSpecializationBuilderVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ClassSpecializationBuilderVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ClassSpecializationBuilderVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ReduceAction737[48] = {
-  {(bigint) 347 /* 0: Identity */},
-  {(bigint) 3 /* 1: ReduceAction737 < Object: superclass typecheck marker */},
-  {(bigint) 39 /* 2: ReduceAction737 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 347 /* 3: ReduceAction737 < ReduceAction737: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ClassSpecializationBuilderVisitor_mmbuilder___ClassSpecializationBuilderVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 345;
+  fra.me.meth = LOCATE_NEW_ClassSpecializationBuilderVisitor_mmbuilder___ClassSpecializationBuilderVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//mmbuilder.nit:345 */
+  fra.me.REG[2] = NEW_ClassSpecializationBuilderVisitor();
+  INIT_ATTRIBUTES__ClassSpecializationBuilderVisitor(fra.me.REG[2]);
+  mmbuilder___ClassSpecializationBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ClassSpecializationBuilderVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ClassAncestorBuilder[82] = {
+  {(bigint) 2771 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ClassAncestorBuilder < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: ClassAncestorBuilder < Visitor: superclass typecheck marker */},
+  {(bigint) 2139 /* 4: ClassAncestorBuilder < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2771 /* 5: ClassAncestorBuilder < ClassAncestorBuilder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99331,14 +129454,9 @@ const classtable_elt_t VFT_ReduceAction737[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ReduceAction737 < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ClassAncestorBuilder < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99346,7 +129464,6 @@ const classtable_elt_t VFT_ReduceAction737[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99354,43 +129471,143 @@ const classtable_elt_t VFT_ReduceAction737[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ReduceAction737 < ReduceAction: superclass init_table position */},
-  {(bigint) parser___ReduceAction737___action},
-  {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 46: ReduceAction737 < ReduceAction737: superclass init_table position */},
-  {(bigint) parser___ReduceAction737___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ClassAncestorBuilder < Visitor: superclass init_table position */},
+  {(bigint) mmbuilder___ClassAncestorBuilder___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
+  {(bigint) parser_prod___Visitor___init},
+  {(bigint) 2 /* 50: ClassAncestorBuilder < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 80: ClassAncestorBuilder < ClassAncestorBuilder: superclass init_table position */},
+  {(bigint) mmbuilder___ClassAncestorBuilder___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ReduceAction737(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ClassAncestorBuilder::_current_node */
+/* 3: Attribute ClassAncestorBuilder::_mmmodule */
+/* 4: Attribute ClassAncestorBuilder::_local_class */
+/* 5: Attribute ClassAncestorBuilder::_local_property */
+/* 6: Attribute ClassAncestorBuilder::_tc */
+void INIT_ATTRIBUTES__ClassAncestorBuilder(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ClassAncestorBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ClassAncestorBuilder(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ReduceAction737;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ReduceAction737(val_t self, char *from) {
-}
-val_t NEW_ReduceAction737_parser___ReduceAction737___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ReduceAction737();
-  parser___ReduceAction737___init(self, init_table);
-  CHECKNEW_ReduceAction737(self, "parser::ReduceAction737::init for ReduceAction737");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_ClassAncestorBuilder;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ClassAncestorBuilder(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ClassAncestorBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_PartialOrder[82] = {
-  {(bigint) 3195 /* 0: Identity */},
-  {(bigint) 3 /* 1: PartialOrder < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ClassAncestorBuilder_mmbuilder___ClassAncestorBuilder___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 353;
+  fra.me.meth = LOCATE_NEW_ClassAncestorBuilder_mmbuilder___ClassAncestorBuilder___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//mmbuilder.nit:353 */
+  fra.me.REG[2] = NEW_ClassAncestorBuilder();
+  INIT_ATTRIBUTES__ClassAncestorBuilder(fra.me.REG[2]);
+  mmbuilder___ClassAncestorBuilder___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ClassAncestorBuilder(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ClassVerifierVisitor[82] = {
+  {(bigint) 2759 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ClassVerifierVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: ClassVerifierVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 2139 /* 4: ClassVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2759 /* 5: ClassVerifierVisitor < ClassVerifierVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 175 /* 4: PartialOrder < Collection: superclass typecheck marker */},
-  {(bigint) 3195 /* 5: PartialOrder < PartialOrder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99401,14 +129618,9 @@ const classtable_elt_t VFT_PartialOrder[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Collection___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PartialOrder < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ClassVerifierVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99416,7 +129628,6 @@ const classtable_elt_t VFT_PartialOrder[82] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99424,79 +129635,142 @@ const classtable_elt_t VFT_PartialOrder[82] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) string___Collection___join},
-  {(bigint) array___Collection___to_a},
-  {(bigint) 1 /* 60: PartialOrder < Collection: superclass init_table position */},
-  {(bigint) partial_order___PartialOrder___iterator},
-  {(bigint) partial_order___PartialOrder___is_empty},
-  {(bigint) partial_order___PartialOrder___length},
-  {(bigint) partial_order___PartialOrder___has},
-  {(bigint) partial_order___PartialOrder___has_only},
-  {(bigint) partial_order___PartialOrder___count},
-  {(bigint) partial_order___PartialOrder___first},
-  {(bigint) 2 /* 68: PartialOrder < PartialOrder: superclass init_table position */},
-  {(bigint) partial_order___PartialOrder___roots},
-  {(bigint) partial_order___PartialOrder_____bra},
-  {(bigint) partial_order___PartialOrder___to_dot},
-  {(bigint) partial_order___PartialOrder___to_dot_header},
-  {(bigint) partial_order___PartialOrder___to_dot_node},
-  {(bigint) partial_order___PartialOrder___to_dot_edge},
-  {(bigint) partial_order___PartialOrder___select_smallests},
-  {(bigint) partial_order___PartialOrder___add},
-  {(bigint) partial_order___PartialOrder___has_all},
-  {(bigint) partial_order___PartialOrder___new_poe},
-  {(bigint) partial_order___PartialOrder___add_to_smallests},
-  {(bigint) partial_order___PartialOrder___compute_smallers_for},
-  {(bigint) partial_order___PartialOrder___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ClassVerifierVisitor < Visitor: superclass init_table position */},
+  {(bigint) mmbuilder___ClassVerifierVisitor___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
+  {(bigint) parser_prod___Visitor___init},
+  {(bigint) 2 /* 50: ClassVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 80: ClassVerifierVisitor < ClassVerifierVisitor: superclass init_table position */},
+  {(bigint) mmbuilder___ClassVerifierVisitor___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute PartialOrder::_elements */
-/* 2: Attribute PartialOrder::_elements_list */
-/* 3: Attribute PartialOrder::_roots */
-val_t NEW_PartialOrder(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute ClassVerifierVisitor::_current_node */
+/* 3: Attribute ClassVerifierVisitor::_mmmodule */
+/* 4: Attribute ClassVerifierVisitor::_local_class */
+/* 5: Attribute ClassVerifierVisitor::_local_property */
+/* 6: Attribute ClassVerifierVisitor::_tc */
+void INIT_ATTRIBUTES__ClassVerifierVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ClassVerifierVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ClassVerifierVisitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PartialOrder;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PartialOrder(val_t self, char *from) {
-}
-val_t NEW_PartialOrder_partial_order___PartialOrder___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_PartialOrder();
-  partial_order___PartialOrder___init(self, init_table);
-  CHECKNEW_PartialOrder(self, "partial_order::PartialOrder::init for PartialOrder");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_ClassVerifierVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ClassVerifierVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ClassVerifierVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_PartialOrderElement[60] = {
-  {(bigint) 55 /* 0: Identity */},
-  {(bigint) 3 /* 1: PartialOrderElement < Object: superclass typecheck marker */},
-  {(bigint) 55 /* 2: PartialOrderElement < PartialOrderElement: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ClassVerifierVisitor_mmbuilder___ClassVerifierVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 361;
+  fra.me.meth = LOCATE_NEW_ClassVerifierVisitor_mmbuilder___ClassVerifierVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//mmbuilder.nit:361 */
+  fra.me.REG[2] = NEW_ClassVerifierVisitor();
+  INIT_ATTRIBUTES__ClassVerifierVisitor(fra.me.REG[2]);
+  mmbuilder___ClassVerifierVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ClassVerifierVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_PropertyBuilderVisitor[82] = {
+  {(bigint) 2555 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: PropertyBuilderVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: PropertyBuilderVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 2139 /* 4: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2555 /* 5: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99508,14 +129782,9 @@ const classtable_elt_t VFT_PartialOrderElement[60] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PartialOrderElement < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: PropertyBuilderVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99523,7 +129792,6 @@ const classtable_elt_t VFT_PartialOrderElement[60] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99531,66 +129799,142 @@ const classtable_elt_t VFT_PartialOrderElement[60] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: PartialOrderElement < PartialOrderElement: superclass init_table position */},
-  {(bigint) partial_order___PartialOrderElement___order},
-  {(bigint) partial_order___PartialOrderElement___value},
-  {(bigint) partial_order___PartialOrderElement___rank},
-  {(bigint) partial_order___PartialOrderElement___direct_greaters},
-  {(bigint) partial_order___PartialOrderElement___direct_smallers},
-  {(bigint) partial_order___PartialOrderElement___greaters},
-  {(bigint) partial_order___PartialOrderElement___greaters_and_self},
-  {(bigint) partial_order___PartialOrderElement___smallers},
-  {(bigint) partial_order___PartialOrderElement___linear_extension},
-  {(bigint) partial_order___PartialOrderElement___reverse_linear_extension},
-  {(bigint) partial_order___PartialOrderElement_____l},
-  {(bigint) partial_order___PartialOrderElement_____leq},
-  {(bigint) partial_order___PartialOrderElement_____g},
-  {(bigint) partial_order___PartialOrderElement_____geq},
-  {(bigint) partial_order___PartialOrderElement___register_direct_smallers},
-  {(bigint) partial_order___PartialOrderElement___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: PropertyBuilderVisitor < Visitor: superclass init_table position */},
+  {(bigint) mmbuilder___PropertyBuilderVisitor___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
+  {(bigint) parser_prod___Visitor___init},
+  {(bigint) 2 /* 50: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 80: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass init_table position */},
+  {(bigint) mmbuilder___PropertyBuilderVisitor___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute PartialOrderElement::_order */
-/* 2: Attribute PartialOrderElement::_value */
-/* 3: Attribute PartialOrderElement::_rank */
-/* 4: Attribute PartialOrderElement::_direct_greaters */
-/* 5: Attribute PartialOrderElement::_direct_smallers */
-/* 6: Attribute PartialOrderElement::_greaters */
-/* 7: Attribute PartialOrderElement::_greaters_and_self_cache */
-/* 8: Attribute PartialOrderElement::_smallers_last_length */
-/* 9: Attribute PartialOrderElement::_smallers_cache */
-/* 10: Attribute PartialOrderElement::_linear_extension_cache */
-/* 11: Attribute PartialOrderElement::_reverse_linear_extension_cache */
-val_t NEW_PartialOrderElement(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute PropertyBuilderVisitor::_current_node */
+/* 3: Attribute PropertyBuilderVisitor::_mmmodule */
+/* 4: Attribute PropertyBuilderVisitor::_local_class */
+/* 5: Attribute PropertyBuilderVisitor::_local_property */
+/* 6: Attribute PropertyBuilderVisitor::_tc */
+void INIT_ATTRIBUTES__PropertyBuilderVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__PropertyBuilderVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_PropertyBuilderVisitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 12);
-  obj->vft = (classtable_elt_t*)VFT_PartialOrderElement;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_partial_order___PartialOrderElement____smallers_last_length(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PartialOrderElement(val_t self, char *from) {
-}
-val_t NEW_PartialOrderElement_partial_order___PartialOrderElement___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_PartialOrderElement();
-  partial_order___PartialOrderElement___init(self, p0, p1, p2, init_table);
-  CHECKNEW_PartialOrderElement(self, "partial_order::PartialOrderElement::init for PartialOrderElement");
-  return self;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_PropertyBuilderVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_PropertyBuilderVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_PropertyBuilderVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMContext[51] = {
-  {(bigint) 123 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMContext < Object: superclass typecheck marker */},
-  {(bigint) 123 /* 2: MMContext < MMContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_PropertyBuilderVisitor_mmbuilder___PropertyBuilderVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 372;
+  fra.me.meth = LOCATE_NEW_PropertyBuilderVisitor_mmbuilder___PropertyBuilderVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//mmbuilder.nit:372 */
+  fra.me.REG[2] = NEW_PropertyBuilderVisitor();
+  INIT_ATTRIBUTES__PropertyBuilderVisitor(fra.me.REG[2]);
+  mmbuilder___PropertyBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_PropertyBuilderVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_PropertyVerifierVisitor[84] = {
+  {(bigint) 2551 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: PropertyVerifierVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: PropertyVerifierVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 2139 /* 4: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2551 /* 5: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99602,14 +129946,9 @@ const classtable_elt_t VFT_MMContext[51] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMContext < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: PropertyVerifierVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99617,7 +129956,6 @@ const classtable_elt_t VFT_MMContext[51] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99625,51 +129963,148 @@ const classtable_elt_t VFT_MMContext[51] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: MMContext < MMContext: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMContext___init},
-  {(bigint) abstractmetamodel___MMContext___module_hierarchy},
-  {(bigint) abstractmetamodel___MMContext___class_hierarchy},
-  {(bigint) abstractmetamodel___MMContext___modules},
-  {(bigint) abstractmetamodel___MMContext___add_module},
-  {(bigint) abstractmetamodel___MMContext___add_global_class},
-  {(bigint) abstractmetamodel___MMContext___add_local_class},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: PropertyVerifierVisitor < Visitor: superclass init_table position */},
+  {(bigint) mmbuilder___PropertyVerifierVisitor___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
+  {(bigint) parser_prod___Visitor___init},
+  {(bigint) 2 /* 50: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 80: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass init_table position */},
+  {(bigint) mmbuilder___PropertyVerifierVisitor___signature_builder},
+  {(bigint) mmbuilder___PropertyVerifierVisitor___signature_builder__eq},
+  {(bigint) mmbuilder___PropertyVerifierVisitor___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMContext::_module_hierarchy */
-/* 2: Attribute MMContext::_class_hierarchy */
-/* 3: Attribute MMContext::_global_classes */
-/* 4: Attribute MMContext::_modules */
-val_t NEW_MMContext(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute PropertyVerifierVisitor::_current_node */
+/* 3: Attribute PropertyVerifierVisitor::_mmmodule */
+/* 4: Attribute PropertyVerifierVisitor::_local_class */
+/* 5: Attribute PropertyVerifierVisitor::_local_property */
+/* 6: Attribute PropertyVerifierVisitor::_tc */
+/* 7: Attribute PropertyVerifierVisitor::_signature_builder */
+void INIT_ATTRIBUTES__PropertyVerifierVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__PropertyVerifierVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_PropertyVerifierVisitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_MMContext;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMContext____module_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMModule]*/;
-  ATTR_abstractmetamodel___MMContext____class_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMLocalClass]*/;
-  ATTR_abstractmetamodel___MMContext____global_classes(obj) = NEW_Array_array___Array___init() /*new Array[MMGlobalClass]*/;
-  ATTR_abstractmetamodel___MMContext____modules(obj) = NEW_Array_array___Array___init() /*new Array[MMModule]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMContext(val_t self, char *from) {
-}
-val_t NEW_MMContext_abstractmetamodel___MMContext___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_MMContext();
-  abstractmetamodel___MMContext___init(self, init_table);
-  CHECKNEW_MMContext(self, "abstractmetamodel::MMContext::init for MMContext");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_PropertyVerifierVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_PropertyVerifierVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_PropertyVerifierVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_signature_builder", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMDirectory[54] = {
-  {(bigint) 119 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMDirectory < Object: superclass typecheck marker */},
-  {(bigint) 119 /* 2: MMDirectory < MMDirectory: superclass typecheck marker */},
+val_t NEW_PropertyVerifierVisitor_mmbuilder___PropertyVerifierVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 385;
+  fra.me.meth = LOCATE_NEW_PropertyVerifierVisitor_mmbuilder___PropertyVerifierVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//mmbuilder.nit:385 */
+  fra.me.REG[2] = NEW_PropertyVerifierVisitor();
+  INIT_ATTRIBUTES__PropertyVerifierVisitor(fra.me.REG[2]);
+  mmbuilder___PropertyVerifierVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_PropertyVerifierVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_SignatureBuilder[59] = {
+  {(bigint) 47 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: SignatureBuilder < Object: superclass typecheck marker */},
+  {(bigint) 47 /* 3: SignatureBuilder < SignatureBuilder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99683,14 +130118,9 @@ const classtable_elt_t VFT_MMDirectory[54] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMDirectory < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: SignatureBuilder < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99698,7 +130128,6 @@ const classtable_elt_t VFT_MMDirectory[54] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99706,54 +130135,147 @@ const classtable_elt_t VFT_MMDirectory[54] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: MMDirectory < MMDirectory: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMDirectory___name},
-  {(bigint) abstractmetamodel___MMDirectory___path},
-  {(bigint) abstractmetamodel___MMDirectory___parent},
-  {(bigint) abstractmetamodel___MMDirectory___owner},
-  {(bigint) abstractmetamodel___MMDirectory___owner__eq},
-  {(bigint) abstractmetamodel___MMDirectory___modules},
-  {(bigint) abstractmetamodel___MMDirectory___add_module},
-  {(bigint) abstractmetamodel___MMDirectory___dhe},
-  {(bigint) abstractmetamodel___MMDirectory___init},
-  {(bigint) abstractmetamodel___MMDirectory___full_name_for},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: SignatureBuilder < SignatureBuilder: superclass init_table position */},
+  {(bigint) mmbuilder___SignatureBuilder___params},
+  {(bigint) mmbuilder___SignatureBuilder___params__eq},
+  {(bigint) mmbuilder___SignatureBuilder___untyped_params},
+  {(bigint) mmbuilder___SignatureBuilder___untyped_params__eq},
+  {(bigint) mmbuilder___SignatureBuilder___vararg_rank},
+  {(bigint) mmbuilder___SignatureBuilder___vararg_rank__eq},
+  {(bigint) mmbuilder___SignatureBuilder___closure_decls},
+  {(bigint) mmbuilder___SignatureBuilder___closure_decls__eq},
+  {(bigint) mmbuilder___SignatureBuilder___has_error_occured},
+  {(bigint) mmbuilder___SignatureBuilder___has_error_occured__eq},
+  {(bigint) mmbuilder___SignatureBuilder___signature},
+  {(bigint) mmbuilder___SignatureBuilder___signature__eq},
+  {(bigint) mmbuilder___SignatureBuilder___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMDirectory::_name */
-/* 2: Attribute MMDirectory::_path */
-/* 3: Attribute MMDirectory::_parent */
-/* 4: Attribute MMDirectory::_owner */
-/* 5: Attribute MMDirectory::_modules */
-/* 6: Attribute MMDirectory::_dhe */
-val_t NEW_MMDirectory(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute SignatureBuilder::_params */
+/* 3: Attribute SignatureBuilder::_untyped_params */
+/* 4: Attribute SignatureBuilder::_vararg_rank */
+/* 5: Attribute SignatureBuilder::_closure_decls */
+/* 6: Attribute SignatureBuilder::_has_error_occured */
+/* 7: Attribute SignatureBuilder::_signature */
+void INIT_ATTRIBUTES__SignatureBuilder(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__SignatureBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//mmbuilder.nit:395 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_mmbuilder___SignatureBuilder____params(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//mmbuilder.nit:398 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//mmbuilder.nit:401 */
+  REGB0 = TAG_Int(1);
+  /* ./../lib/standard//kernel.nit:216 */
+  REGB0 = TAG_Int(-UNTAG_Int(REGB0));
+  ATTR_mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0]) = REGB0;
+  /* ./syntax//mmbuilder.nit:404 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//mmbuilder.nit:407 */
+  REGB0 = TAG_Bool(false);
+  ATTR_mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0]) = REGB0;
+  /* ./syntax//mmbuilder.nit:409 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_mmbuilder___SignatureBuilder____signature(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_SignatureBuilder(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_MMDirectory;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMDirectory____modules(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[Symbol, MMModule]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMDirectory(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_SignatureBuilder;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_SignatureBuilder(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_SignatureBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_mmbuilder___SignatureBuilder____params(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_params", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_untyped_params", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_vararg_rank", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_closure_decls", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_has_error_occured", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMDirectory_abstractmetamodel___MMDirectory___init(val_t p0, val_t p1, val_t p2) {
+val_t NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_MMDirectory();
-  abstractmetamodel___MMDirectory___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMDirectory(self, "abstractmetamodel::MMDirectory::init for MMDirectory");
-  return self;
-}
-const classtable_elt_t VFT_MMModule[69] = {
-  {(bigint) 99 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMModule < Object: superclass typecheck marker */},
-  {(bigint) 99 /* 2: MMModule < MMModule: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_SignatureBuilder();
+  INIT_ATTRIBUTES__SignatureBuilder(fra.me.REG[0]);
+  mmbuilder___SignatureBuilder___init(fra.me.REG[0], init_table);
+  CHECKNEW_SignatureBuilder(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_MethidAccumulator[52] = {
+  {(bigint) 1903 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MethidAccumulator < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: MethidAccumulator < Visitor: superclass typecheck marker */},
+  {(bigint) 1903 /* 4: MethidAccumulator < MethidAccumulator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99766,14 +130288,9 @@ const classtable_elt_t VFT_MMModule[69] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMModule___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMModule < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: MethidAccumulator < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99781,7 +130298,6 @@ const classtable_elt_t VFT_MMModule[69] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99789,87 +130305,100 @@ const classtable_elt_t VFT_MMModule[69] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) abstracttool___MMModule___dump_module_info},
-  {(bigint) mmloader___MMModule___import_supers_modules},
-  {(bigint) inheritance___MMModule___type_any},
-  {(bigint) inheritance___MMModule___import_global_classes},
-  {(bigint) inheritance___MMModule___import_local_classes},
-  {(bigint) static_type___MMModule___type_none},
-  {(bigint) 1 /* 49: MMModule < MMModule: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMModule___context},
-  {(bigint) abstractmetamodel___MMModule___name},
-  {(bigint) abstractmetamodel___MMModule___full_name},
-  {(bigint) abstractmetamodel___MMModule___directory},
-  {(bigint) abstractmetamodel___MMModule___filename},
-  {(bigint) abstractmetamodel___MMModule___mhe},
-  {(bigint) abstractmetamodel___MMModule___global_classes},
-  {(bigint) abstractmetamodel___MMModule___local_classes},
-  {(bigint) abstractmetamodel___MMModule___class_specialization_hierarchy},
-  {(bigint) abstractmetamodel___MMModule___explicit_imported_modules},
-  {(bigint) abstractmetamodel___MMModule___init},
-  {(bigint) abstractmetamodel___MMModule___add_super_module},
-  {(bigint) abstractmetamodel___MMModule___visibility_for},
-  {(bigint) abstractmetamodel___MMModule_____bra},
-  {(bigint) abstractmetamodel___MMModule___class_by_name},
-  {(bigint) abstractmetamodel___MMModule___has_global_class_named},
-  {(bigint) abstractmetamodel___MMModule___global_class_named},
-  {(bigint) abstractmetamodel___MMModule___set_supers_class},
-  {(bigint) abstractmetamodel___MMModule___register_global_class},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: MethidAccumulator < Visitor: superclass init_table position */},
+  {(bigint) mmbuilder___MethidAccumulator___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
+  {(bigint) parser_prod___Visitor___init},
+  {(bigint) 2 /* 50: MethidAccumulator < MethidAccumulator: superclass init_table position */},
+  {(bigint) mmbuilder___MethidAccumulator___name},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMModule::_type_none */
-/* 2: Attribute MMModule::_context */
-/* 3: Attribute MMModule::_name */
-/* 4: Attribute MMModule::_full_name */
-/* 5: Attribute MMModule::_directory */
-/* 6: Attribute MMModule::_filename */
-/* 7: Attribute MMModule::_mhe */
-/* 8: Attribute MMModule::_global_classes */
-/* 9: Attribute MMModule::_local_classes */
-/* 10: Attribute MMModule::_class_specialization_hierarchy */
-/* 11: Attribute MMModule::_intrude_modules */
-/* 12: Attribute MMModule::_public_modules */
-/* 13: Attribute MMModule::_private_modules */
-/* 14: Attribute MMModule::_explicit_imported_modules */
-/* 15: Attribute MMModule::_local_class_by_global */
-/* 16: Attribute MMModule::_global_class_by_name */
-val_t NEW_MMModule(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute MethidAccumulator::_current_node */
+/* 3: Attribute MethidAccumulator::_name */
+void INIT_ATTRIBUTES__MethidAccumulator(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MethidAccumulator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//mmbuilder.nit:1118 */
+  fra.me.REG[1] = NEW_Buffer_string___Buffer___init();
+  ATTR_mmbuilder___MethidAccumulator____name(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MethidAccumulator(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 17);
-  obj->vft = (classtable_elt_t*)VFT_MMModule;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMModule____global_classes(obj) = NEW_Array_array___Array___init() /*new Array[MMGlobalClass]*/;
-  ATTR_abstractmetamodel___MMModule____local_classes(obj) = NEW_Array_array___Array___init() /*new Array[MMLocalClass]*/;
-  ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMLocalClass]*/;
-  ATTR_abstractmetamodel___MMModule____intrude_modules(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[MMModule]*/;
-  ATTR_abstractmetamodel___MMModule____public_modules(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[MMModule]*/;
-  ATTR_abstractmetamodel___MMModule____private_modules(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[MMModule]*/;
-  ATTR_abstractmetamodel___MMModule____explicit_imported_modules(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[MMModule]*/;
-  ATTR_abstractmetamodel___MMModule____local_class_by_global(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMGlobalClass, MMLocalClass]*/;
-  ATTR_abstractmetamodel___MMModule____global_class_by_name(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[Symbol, MMGlobalClass]*/;
-  ATTR_static_type___MMModule____type_none(obj) = NEW_MMTypeNone_static_type___MMTypeNone___init(variable[0]) /*new MMTypeNone*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMModule(val_t self, char *from) {
-}
-val_t NEW_MMModule_abstractmetamodel___MMModule___init(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_MMModule();
-  abstractmetamodel___MMModule___init(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_MMModule(self, "abstractmetamodel::MMModule::init for MMModule");
-  return self;
-}
-const classtable_elt_t VFT_MMGlobalClass[65] = {
-  {(bigint) 115 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMGlobalClass < Object: superclass typecheck marker */},
-  {(bigint) 115 /* 2: MMGlobalClass < MMGlobalClass: superclass typecheck marker */},
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_MethidAccumulator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MethidAccumulator(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MethidAccumulator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_mmbuilder___MethidAccumulator____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MethidAccumulator_parser_prod___Visitor___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_MethidAccumulator_parser_prod___Visitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_MethidAccumulator();
+  INIT_ATTRIBUTES__MethidAccumulator(fra.me.REG[0]);
+  parser_prod___Visitor___init(fra.me.REG[0], init_table);
+  CHECKNEW_MethidAccumulator(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_IRegister[56] = {
+  {(bigint) 187 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IRegister < Object: superclass typecheck marker */},
+  {(bigint) 187 /* 3: IRegister < IRegister: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99883,14 +130412,9 @@ const classtable_elt_t VFT_MMGlobalClass[65] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMGlobalClass___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMGlobalClass < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IRegister < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99898,7 +130422,6 @@ const classtable_elt_t VFT_MMGlobalClass[65] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -99906,70 +130429,138 @@ const classtable_elt_t VFT_MMGlobalClass[65] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_base___MMGlobalClass___id_id},
-  {(bigint) compiling_base___MMGlobalClass___color_id},
-  {(bigint) compiling_base___MMGlobalClass___init_table_pos_id},
-  {(bigint) syntax_base___MMGlobalClass___check_visibility},
-  {(bigint) 1 /* 47: MMGlobalClass < MMGlobalClass: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMGlobalClass___intro},
-  {(bigint) abstractmetamodel___MMGlobalClass___class_refinement_hierarchy},
-  {(bigint) abstractmetamodel___MMGlobalClass___init},
-  {(bigint) abstractmetamodel___MMGlobalClass___name},
-  {(bigint) abstractmetamodel___MMGlobalClass___module},
-  {(bigint) abstractmetamodel___MMGlobalClass___register_local_class},
-  {(bigint) abstractmetamodel___MMGlobalClass___is_interface},
-  {(bigint) abstractmetamodel___MMGlobalClass___is_interface__eq},
-  {(bigint) abstractmetamodel___MMGlobalClass___is_abstract},
-  {(bigint) abstractmetamodel___MMGlobalClass___is_abstract__eq},
-  {(bigint) abstractmetamodel___MMGlobalClass___is_universal},
-  {(bigint) abstractmetamodel___MMGlobalClass___is_universal__eq},
-  {(bigint) abstractmetamodel___MMGlobalClass___visibility_level},
-  {(bigint) abstractmetamodel___MMGlobalClass___visibility_level__eq},
-  {(bigint) abstractmetamodel___MMGlobalClass___is_mixin},
-  {(bigint) abstractmetamodel___MMGlobalClass___mixin_of},
-  {(bigint) abstractmetamodel___MMGlobalClass___mixin_of__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) allocate_iregister_slots___IRegister___slot_index},
+  {(bigint) allocate_iregister_slots___IRegister___slot_index__eq},
+  {(bigint) allocate_iregister_slots___IRegister___is_local},
+  {(bigint) allocate_iregister_slots___IRegister___is_local__eq},
+  {(bigint) allocate_iregister_slots___IRegister___local_iroutine},
+  {(bigint) allocate_iregister_slots___IRegister___local_iroutine__eq},
+  {(bigint) allocate_iregister_slots___IRegister___in_tag_slots},
+  {(bigint) allocate_iregister_slots___IRegister___in_tag_slots__eq},
+  {(bigint) 1 /* 53: IRegister < IRegister: superclass init_table position */},
+  {(bigint) icode_base___IRegister___stype},
+  {(bigint) icode_base___IRegister___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMGlobalClass::_intro */
-/* 2: Attribute MMGlobalClass::_class_refinement_hierarchy */
-/* 3: Attribute MMGlobalClass::_is_interface */
-/* 4: Attribute MMGlobalClass::_is_abstract */
-/* 5: Attribute MMGlobalClass::_is_universal */
-/* 6: Attribute MMGlobalClass::_visibility_level */
-/* 7: Attribute MMGlobalClass::_mixin_of */
-val_t NEW_MMGlobalClass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_MMGlobalClass;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMGlobalClass____class_refinement_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMLocalClass]*/;
-  ATTR_abstractmetamodel___MMGlobalClass____is_interface(obj) =  TAG_Bool(false);
-  ATTR_abstractmetamodel___MMGlobalClass____is_abstract(obj) =  TAG_Bool(false);
-  ATTR_abstractmetamodel___MMGlobalClass____is_universal(obj) =  TAG_Bool(false);
-  ATTR_abstractmetamodel___MMGlobalClass____visibility_level(obj) =  TAG_Int(1);
-  ATTR_abstractmetamodel___MMGlobalClass____mixin_of(obj) = variable[0];
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IRegister::_slot_index */
+/* 3: Attribute IRegister::_is_local */
+/* 4: Attribute IRegister::_local_iroutine */
+/* 5: Attribute IRegister::_in_tag_slots */
+/* 6: Attribute IRegister::_first */
+/* 7: Attribute IRegister::_last */
+/* 8: Attribute IRegister::_born_rank */
+/* 9: Attribute IRegister::_stype */
+void INIT_ATTRIBUTES__IRegister(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IRegister;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:287 */
+  REGB0 = TAG_Bool(true);
+  ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[0]) = REGB0;
+  /* ./analysis//allocate_iregister_slots.nit:293 */
+  REGB0 = TAG_Bool(false);
+  ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[0]) = REGB0;
+  /* ./analysis//allocate_iregister_slots.nit:295 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_allocate_iregister_slots___IRegister____first(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//allocate_iregister_slots.nit:299 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_allocate_iregister_slots___IRegister____last(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//allocate_iregister_slots.nit:307 */
+  REGB0 = TAG_Int(0);
+  ATTR_allocate_iregister_slots___IRegister____born_rank(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMGlobalClass(val_t self, char *from) {
+val_t NEW_IRegister(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_IRegister;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IRegister(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IRegister;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____is_local(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_local", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____in_tag_slots(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_in_tag_slots", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegister____born_rank(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_born_rank", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___IRegister____stype(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMGlobalClass_abstractmetamodel___MMGlobalClass___init(val_t p0) {
+val_t NEW_IRegister_icode_base___IRegister___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_MMGlobalClass();
-  abstractmetamodel___MMGlobalClass___init(self, p0, init_table);
-  CHECKNEW_MMGlobalClass(self, "abstractmetamodel::MMGlobalClass::init for MMGlobalClass");
-  return self;
-}
-const classtable_elt_t VFT_MMLocalClass[106] = {
-  {(bigint) 107 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMLocalClass < Object: superclass typecheck marker */},
-  {(bigint) 107 /* 2: MMLocalClass < MMLocalClass: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 29;
+  fra.me.meth = LOCATE_NEW_IRegister_icode_base___IRegister___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:29 */
+  fra.me.REG[1] = NEW_IRegister();
+  INIT_ATTRIBUTES__IRegister(fra.me.REG[1]);
+  icode_base___IRegister___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IRegister(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_IEscapeMark[47] = {
+  {(bigint) 195 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IEscapeMark < Object: superclass typecheck marker */},
+  {(bigint) 195 /* 3: IEscapeMark < IEscapeMark: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99983,14 +130574,9 @@ const classtable_elt_t VFT_MMLocalClass[106] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalClass___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMLocalClass < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IEscapeMark < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -99998,7 +130584,6 @@ const classtable_elt_t VFT_MMLocalClass[106] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -100006,121 +130591,76 @@ const classtable_elt_t VFT_MMLocalClass[106] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) abstracttool___MMLocalClass___dump_properties},
-  {(bigint) mmbuilder___MMLocalClass___accept_class_visitor},
-  {(bigint) mmbuilder___MMLocalClass___accept_properties_visitor},
-  {(bigint) genericity___MMLocalClass___get_formal},
-  {(bigint) genericity___MMLocalClass___register_formal},
-  {(bigint) genericity___MMLocalClass___get_instantiate_type},
-  {(bigint) genericity___MMLocalClass___formals_types},
-  {(bigint) static_type___MMLocalClass___get_type},
-  {(bigint) genericity___MMLocalClass___is_generic},
-  {(bigint) inheritance___MMLocalClass___compute_super_classes},
-  {(bigint) inheritance___MMLocalClass___compute_ancestors},
-  {(bigint) inheritance___MMLocalClass___inherit_global_properties},
-  {(bigint) inheritance___MMLocalClass___make_visible_an_inherited_global_property},
-  {(bigint) inheritance___MMLocalClass___add_direct_parent},
-  {(bigint) inheritance___MMLocalClass___computed_super_classes},
-  {(bigint) inheritance___MMLocalClass___computed_ancestors},
-  {(bigint) inheritance___MMLocalClass___ancestor_for},
-  {(bigint) inheritance___MMLocalClass___add_default_any_class},
-  {(bigint) inheritance___MMLocalClass___add_super_classes},
-  {(bigint) inheritance___MMLocalClass___add_explicit_classes},
-  {(bigint) inheritance___MMLocalClass___compute_super_parents},
-  {(bigint) inheritance___MMLocalClass___build_ancestors},
-  {(bigint) inheritance___MMLocalClass___group_ancestors},
-  {(bigint) inheritance___MMLocalClass___merge_ancestors},
-  {(bigint) inheritance___MMLocalClass___inherit_local_property},
-  {(bigint) genericity___MMLocalClass___get_type},
-  {(bigint) static_type___MMLocalClass___add_ancestor},
-  {(bigint) static_type___MMLocalClass___ancestors},
-  {(bigint) static_type___MMLocalClass___ancestor},
-  {(bigint) 1 /* 72: MMLocalClass < MMLocalClass: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalClass___name},
-  {(bigint) abstractmetamodel___MMLocalClass___arity},
-  {(bigint) abstractmetamodel___MMLocalClass___module},
-  {(bigint) abstractmetamodel___MMLocalClass___global},
-  {(bigint) abstractmetamodel___MMLocalClass___crhe},
-  {(bigint) abstractmetamodel___MMLocalClass___cshe},
-  {(bigint) abstractmetamodel___MMLocalClass___che},
-  {(bigint) abstractmetamodel___MMLocalClass___local_property_by_global},
-  {(bigint) abstractmetamodel___MMLocalClass___global_properties},
-  {(bigint) abstractmetamodel___MMLocalClass___properties_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___init},
-  {(bigint) abstractmetamodel___MMLocalClass___for_module},
-  {(bigint) abstractmetamodel___MMLocalClass___new_global},
-  {(bigint) abstractmetamodel___MMLocalClass___set_global},
-  {(bigint) abstractmetamodel___MMLocalClass___has_global_property_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___get_property_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___attribute},
-  {(bigint) abstractmetamodel___MMLocalClass___method},
-  {(bigint) abstractmetamodel___MMLocalClass___select_method},
-  {(bigint) abstractmetamodel___MMLocalClass___select_attribute},
-  {(bigint) abstractmetamodel___MMLocalClass___super_methods_named},
-  {(bigint) abstractmetamodel___MMLocalClass___register_local_property},
-  {(bigint) abstractmetamodel___MMLocalClass___register_global_property},
-  {(bigint) abstractmetamodel___MMLocalClass___has_global_property},
-  {(bigint) inheritance___MMLocalClass_____bra},
-  {(bigint) abstractmetamodel___MMLocalClass___context},
-  {(bigint) virtualtype___MMLocalClass___virtual_type},
-  {(bigint) virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) compiling_global___MMLocalClass___compare},
-  {(bigint) compiling_global___MMLocalClass___declare_tables_to_c},
-  {(bigint) compiling_global___MMLocalClass___compile_tables_to_c},
-  {(bigint) compiling_base___MMLocalClass___primitive_info},
-  {(bigint) compiling_base___MMLocalClass___primitive_ctypes},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute MMLocalClass::_types */
-/* 2: Attribute MMLocalClass::_formals_types */
-/* 3: Attribute MMLocalClass::_direct_parents */
-/* 4: Attribute MMLocalClass::_computing_super */
-/* 5: Attribute MMLocalClass::_base_type_cache */
-/* 6: Attribute MMLocalClass::_ancestors */
-/* 7: Attribute MMLocalClass::_name */
-/* 8: Attribute MMLocalClass::_arity */
-/* 9: Attribute MMLocalClass::_module */
-/* 10: Attribute MMLocalClass::_global */
-/* 11: Attribute MMLocalClass::_crhe */
-/* 12: Attribute MMLocalClass::_cshe */
-/* 13: Attribute MMLocalClass::_che */
-/* 14: Attribute MMLocalClass::_local_property_by_global */
-/* 15: Attribute MMLocalClass::_global_properties */
-/* 16: Attribute MMLocalClass::_properties_by_name */
-/* 17: Attribute MMLocalClass::_primitive_info_cache */
-/* 18: Attribute MMLocalClass::_primitive_info_b */
-val_t NEW_MMLocalClass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_MMLocalClass;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_inheritance___MMLocalClass____direct_parents(obj) = NEW_Array_array___Array___init() /*new Array[MMAncestor]*/;
-  ATTR_inheritance___MMLocalClass____computing_super(obj) =  TAG_Bool(false);
-  ATTR_genericity___MMLocalClass____types(obj) = NEW_Array_array___Array___init() /*new Array[MMTypeGeneric]*/;
-  ATTR_genericity___MMLocalClass____formals_types(obj) = NEW_Array_array___Array___init() /*new Array[MMTypeFormalParameter]*/;
-  ATTR_compiling_base___MMLocalClass____primitive_info_b(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMLocalClass(val_t self, char *from) {
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: IEscapeMark < IEscapeMark: superclass init_table position */},
+  {(bigint) icode_base___IEscapeMark___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+void INIT_ATTRIBUTES__IEscapeMark(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IEscapeMark;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMLocalClass_abstractmetamodel___MMLocalClass___init(val_t p0, val_t p1, val_t p2) {
+val_t NEW_IEscapeMark(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_IEscapeMark;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IEscapeMark(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IEscapeMark;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IEscapeMark_icode_base___IEscapeMark___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_MMLocalClass();
-  abstractmetamodel___MMLocalClass___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMLocalClass(self, "abstractmetamodel::MMLocalClass::init for MMLocalClass");
-  return self;
-}
-const classtable_elt_t VFT_MMGlobalProperty[60] = {
-  {(bigint) 111 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMGlobalProperty < Object: superclass typecheck marker */},
-  {(bigint) 111 /* 2: MMGlobalProperty < MMGlobalProperty: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_IEscapeMark_icode_base___IEscapeMark___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_IEscapeMark();
+  INIT_ATTRIBUTES__IEscapeMark(fra.me.REG[0]);
+  icode_base___IEscapeMark___init(fra.me.REG[0], init_table);
+  CHECKNEW_IEscapeMark(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_IClosureDecl[51] = {
+  {(bigint) 219 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IClosureDecl < Object: superclass typecheck marker */},
+  {(bigint) 219 /* 3: IClosureDecl < IClosureDecl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100134,14 +130674,9 @@ const classtable_elt_t VFT_MMGlobalProperty[60] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMGlobalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMGlobalProperty < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IClosureDecl < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -100149,7 +130684,6 @@ const classtable_elt_t VFT_MMGlobalProperty[60] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -100157,58 +130691,93 @@ const classtable_elt_t VFT_MMGlobalProperty[60] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_base___MMGlobalProperty___meth_call},
-  {(bigint) compiling_base___MMGlobalProperty___attr_access},
-  {(bigint) syntax_base___MMGlobalProperty___check_visibility},
-  {(bigint) virtualtype___MMGlobalProperty___is_virtual_type},
-  {(bigint) 1 /* 47: MMGlobalProperty < MMGlobalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMGlobalProperty___intro},
-  {(bigint) abstractmetamodel___MMGlobalProperty___local_class},
-  {(bigint) abstractmetamodel___MMGlobalProperty___property_hierarchy},
-  {(bigint) abstractmetamodel___MMGlobalProperty___init},
-  {(bigint) abstractmetamodel___MMGlobalProperty___add_local_property},
-  {(bigint) abstractmetamodel___MMGlobalProperty___is_attribute},
-  {(bigint) abstractmetamodel___MMGlobalProperty___is_method},
-  {(bigint) abstractmetamodel___MMGlobalProperty___is_init},
-  {(bigint) abstractmetamodel___MMGlobalProperty___is_init__eq},
-  {(bigint) abstractmetamodel___MMGlobalProperty___is_init_for},
-  {(bigint) abstractmetamodel___MMGlobalProperty___visibility_level},
-  {(bigint) abstractmetamodel___MMGlobalProperty___visibility_level__eq},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) icode_dump___IClosureDecl___dump},
+  {(bigint) 1 /* 46: IClosureDecl < IClosureDecl: superclass init_table position */},
+  {(bigint) icode_base___IClosureDecl___closure},
+  {(bigint) icode_base___IClosureDecl___default},
+  {(bigint) icode_base___IClosureDecl___default__eq},
+  {(bigint) icode_base___IClosureDecl___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMGlobalProperty::_intro */
-/* 2: Attribute MMGlobalProperty::_property_hierarchy */
-/* 3: Attribute MMGlobalProperty::_is_init */
-/* 4: Attribute MMGlobalProperty::_visibility_level */
-val_t NEW_MMGlobalProperty(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_MMGlobalProperty;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMGlobalProperty____property_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMLocalProperty]*/;
-  ATTR_abstractmetamodel___MMGlobalProperty____visibility_level(obj) =  TAG_Int(1);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IClosureDecl::_closure */
+/* 3: Attribute IClosureDecl::_default */
+void INIT_ATTRIBUTES__IClosureDecl(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IClosureDecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMGlobalProperty(val_t self, char *from) {
+val_t NEW_IClosureDecl(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_IClosureDecl;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IClosureDecl(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IClosureDecl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IClosureDecl____closure(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMGlobalProperty_abstractmetamodel___MMGlobalProperty___init(val_t p0) {
+val_t NEW_IClosureDecl_icode_base___IClosureDecl___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_MMGlobalProperty();
-  abstractmetamodel___MMGlobalProperty___init(self, p0, init_table);
-  CHECKNEW_MMGlobalProperty(self, "abstractmetamodel::MMGlobalProperty::init for MMGlobalProperty");
-  return self;
-}
-const classtable_elt_t VFT_MMLocalProperty[65] = {
-  {(bigint) 103 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMLocalProperty < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMLocalProperty < MMLocalProperty: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 47;
+  fra.me.meth = LOCATE_NEW_IClosureDecl_icode_base___IClosureDecl___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:47 */
+  fra.me.REG[1] = NEW_IClosureDecl();
+  INIT_ATTRIBUTES__IClosureDecl(fra.me.REG[1]);
+  icode_base___IClosureDecl___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IClosureDecl(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_IRoutine[66] = {
+  {(bigint) 183 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IRoutine < Object: superclass typecheck marker */},
+  {(bigint) 183 /* 3: IRoutine < IRoutine: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100222,14 +130791,9 @@ const classtable_elt_t VFT_MMLocalProperty[65] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMLocalProperty < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IRoutine < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -100237,7 +130801,6 @@ const classtable_elt_t VFT_MMLocalProperty[65] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -100245,68 +130808,168 @@ const classtable_elt_t VFT_MMLocalProperty[65] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMLocalProperty___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax_base___MMLocalProperty___node},
-  {(bigint) syntax_base___MMLocalProperty___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMLocalProperty < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IRoutine___compile_signature_to_c},
+  {(bigint) compiling_icode___IRoutine___compile_inside_to_c},
+  {(bigint) compiling_icode___IRoutine___compile_to_c},
+  {(bigint) analysis___IRoutine___optimize},
+  {(bigint) icode_dump___IRoutine___dump},
+  {(bigint) allocate_iregister_slots___IRoutine___std_slots_nb},
+  {(bigint) allocate_iregister_slots___IRoutine___tag_slots_nb},
+  {(bigint) allocate_iregister_slots___IRoutine___allocate_iregister_slots},
+  {(bigint) 1 /* 53: IRoutine < IRoutine: superclass init_table position */},
+  {(bigint) icode_base___IRoutine___params},
+  {(bigint) icode_base___IRoutine___closure_decls},
+  {(bigint) icode_base___IRoutine___closure_decls__eq},
+  {(bigint) icode_base___IRoutine___registers},
+  {(bigint) icode_base___IRoutine___result},
+  {(bigint) icode_base___IRoutine___escape_marks},
+  {(bigint) icode_base___IRoutine___body},
+  {(bigint) icode_base___IRoutine___location},
+  {(bigint) icode_base___IRoutine___location__eq},
+  {(bigint) icode_base___IRoutine___init},
+  {(bigint) inline_methods___IRoutine___inline_methods},
+  {(bigint) dead_method_removal___IRoutine___set_not_reachable},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMLocalProperty::_cname_cache */
-/* 2: Attribute MMLocalProperty::_signature */
-/* 3: Attribute MMLocalProperty::_signatures_cache */
-/* 4: Attribute MMLocalProperty::_name */
-/* 5: Attribute MMLocalProperty::_local_class */
-/* 6: Attribute MMLocalProperty::_global */
-/* 7: Attribute MMLocalProperty::_prhe */
-/* 8: Attribute MMLocalProperty::_need_super */
-val_t NEW_MMLocalProperty(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_MMLocalProperty;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IRoutine::_std_slots_nb */
+/* 3: Attribute IRoutine::_tag_slots_nb */
+/* 4: Attribute IRoutine::_params */
+/* 5: Attribute IRoutine::_closure_decls */
+/* 6: Attribute IRoutine::_registers */
+/* 7: Attribute IRoutine::_result */
+/* 8: Attribute IRoutine::_escape_marks */
+/* 9: Attribute IRoutine::_body */
+/* 10: Attribute IRoutine::_location */
+void INIT_ATTRIBUTES__IRoutine(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IRoutine;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:268 */
+  REGB0 = TAG_Int(0);
+  ATTR_allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0]) = REGB0;
+  /* ./analysis//allocate_iregister_slots.nit:271 */
+  REGB0 = TAG_Int(0);
+  ATTR_allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0]) = REGB0;
+  /* ./icode//icode_base.nit:55 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___IRoutine____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:59 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_icode_base___IRoutine____registers(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:65 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_icode_base___IRoutine____escape_marks(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:68 */
+  fra.me.REG[1] = NEW_ISeq_icode_base___ISeq___init();
+  ATTR_icode_base___IRoutine____body(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:70 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___IRoutine____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMLocalProperty(val_t self, char *from) {
+val_t NEW_IRoutine(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_IRoutine;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IRoutine(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IRoutine;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_std_slots_nb", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tag_slots_nb", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___IRoutine____params(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_params", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___IRoutine____registers(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_registers", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___IRoutine____escape_marks(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_escape_marks", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___IRoutine____body(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_body", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMLocalProperty_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1) {
+val_t NEW_IRoutine_icode_base___IRoutine___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_MMLocalProperty();
-  abstractmetamodel___MMLocalProperty___init(self, p0, p1, init_table);
-  CHECKNEW_MMLocalProperty(self, "abstractmetamodel::MMLocalProperty::init for MMLocalProperty");
-  return self;
-}
-const classtable_elt_t VFT_MMAttribute[69] = {
-  {(bigint) 3299 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMAttribute < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMAttribute < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 3299 /* 3: MMAttribute < MMAttribute: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 73;
+  fra.me.meth = LOCATE_NEW_IRoutine_icode_base___IRoutine___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:73 */
+  fra.me.REG[2] = NEW_IRoutine();
+  INIT_ATTRIBUTES__IRoutine(fra.me.REG[2]);
+  icode_base___IRoutine___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IRoutine(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_IClosureDef[69] = {
+  {(bigint) 2027 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IClosureDef < Object: superclass typecheck marker */},
+  {(bigint) 183 /* 3: IClosureDef < IRoutine: superclass typecheck marker */},
+  {(bigint) 2027 /* 4: IClosureDef < IClosureDef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100319,14 +130982,9 @@ const classtable_elt_t VFT_MMAttribute[69] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMAttribute < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IClosureDef < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -100334,7 +130992,6 @@ const classtable_elt_t VFT_MMAttribute[69] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -100342,73 +130999,172 @@ const classtable_elt_t VFT_MMAttribute[69] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMLocalProperty___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax_base___MMLocalProperty___node},
-  {(bigint) syntax_base___MMLocalProperty___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMAttribute < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling_methods___MMAttribute___compile_isset},
-  {(bigint) compiling_methods___MMAttribute___compile_read_access},
-  {(bigint) compiling_methods___MMAttribute___compile_write_access},
-  {(bigint) 2 /* 68: MMAttribute < MMAttribute: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IRoutine___compile_signature_to_c},
+  {(bigint) compiling_icode___IRoutine___compile_inside_to_c},
+  {(bigint) compiling_icode___IRoutine___compile_to_c},
+  {(bigint) analysis___IRoutine___optimize},
+  {(bigint) icode_dump___IRoutine___dump},
+  {(bigint) allocate_iregister_slots___IRoutine___std_slots_nb},
+  {(bigint) allocate_iregister_slots___IRoutine___tag_slots_nb},
+  {(bigint) allocate_iregister_slots___IRoutine___allocate_iregister_slots},
+  {(bigint) 1 /* 53: IClosureDef < IRoutine: superclass init_table position */},
+  {(bigint) icode_base___IRoutine___params},
+  {(bigint) icode_base___IRoutine___closure_decls},
+  {(bigint) icode_base___IRoutine___closure_decls__eq},
+  {(bigint) icode_base___IRoutine___registers},
+  {(bigint) icode_base___IRoutine___result},
+  {(bigint) icode_base___IRoutine___escape_marks},
+  {(bigint) icode_base___IRoutine___body},
+  {(bigint) icode_base___IRoutine___location},
+  {(bigint) icode_base___IRoutine___location__eq},
+  {(bigint) icode_base___IRoutine___init},
+  {(bigint) inline_methods___IRoutine___inline_methods},
+  {(bigint) dead_method_removal___IRoutine___set_not_reachable},
+  {(bigint) compiling_icode___IClosureDef___compile_closure},
+  {(bigint) 2 /* 67: IClosureDef < IClosureDef: superclass init_table position */},
+  {(bigint) icode_base___IClosureDef___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMAttribute::_cname_cache */
-/* 2: Attribute MMAttribute::_signature */
-/* 3: Attribute MMAttribute::_signatures_cache */
-/* 4: Attribute MMAttribute::_name */
-/* 5: Attribute MMAttribute::_local_class */
-/* 6: Attribute MMAttribute::_global */
-/* 7: Attribute MMAttribute::_prhe */
-/* 8: Attribute MMAttribute::_need_super */
-val_t NEW_MMAttribute(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_MMAttribute;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMAttribute(val_t self, char *from) {
-}
-val_t NEW_MMAttribute_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMAttribute();
-  abstractmetamodel___MMLocalProperty___init(self, p0, p1, init_table);
-  CHECKNEW_MMAttribute(self, "abstractmetamodel::MMLocalProperty::init for MMAttribute");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute IClosureDef::_std_slots_nb */
+/* 3: Attribute IClosureDef::_tag_slots_nb */
+/* 4: Attribute IClosureDef::_params */
+/* 5: Attribute IClosureDef::_closure_decls */
+/* 6: Attribute IClosureDef::_registers */
+/* 7: Attribute IClosureDef::_result */
+/* 8: Attribute IClosureDef::_escape_marks */
+/* 9: Attribute IClosureDef::_body */
+/* 10: Attribute IClosureDef::_location */
+void INIT_ATTRIBUTES__IClosureDef(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IClosureDef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:55 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___IRoutine____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:59 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_icode_base___IRoutine____registers(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:65 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_icode_base___IRoutine____escape_marks(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:68 */
+  fra.me.REG[1] = NEW_ISeq_icode_base___ISeq___init();
+  ATTR_icode_base___IRoutine____body(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:70 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___IRoutine____location(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//allocate_iregister_slots.nit:268 */
+  REGB0 = TAG_Int(0);
+  ATTR_allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0]) = REGB0;
+  /* ./analysis//allocate_iregister_slots.nit:271 */
+  REGB0 = TAG_Int(0);
+  ATTR_allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMMethod[73] = {
-  {(bigint) 3283 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMMethod < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 3283 /* 3: MMMethod < MMMethod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_IClosureDef(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_IClosureDef;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IClosureDef(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IClosureDef;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IRoutine____params(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_params", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___IRoutine____registers(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_registers", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___IRoutine____escape_marks(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_escape_marks", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___IRoutine____body(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_body", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRoutine____std_slots_nb(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_std_slots_nb", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tag_slots_nb", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IClosureDef_icode_base___IClosureDef___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 83;
+  fra.me.meth = LOCATE_NEW_IClosureDef_icode_base___IClosureDef___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:83 */
+  fra.me.REG[2] = NEW_IClosureDef();
+  INIT_ATTRIBUTES__IClosureDef(fra.me.REG[2]);
+  icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IClosureDef(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ISeq[68] = {
+  {(bigint) 2639 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ISeq < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: ISeq < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: ISeq < ICode0: superclass typecheck marker */},
+  {(bigint) 2639 /* 5: ISeq < ISeq: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100420,14 +131176,9 @@ const classtable_elt_t VFT_MMMethod[73] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMMethod < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ISeq < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -100435,7 +131186,6 @@ const classtable_elt_t VFT_MMMethod[73] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -100443,96 +131193,138 @@ const classtable_elt_t VFT_MMMethod[73] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMLocalProperty___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax_base___MMLocalProperty___node},
-  {(bigint) syntax_base___MMLocalProperty___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling_methods___MMMethod___compile_expr_call},
-  {(bigint) compiling_methods___MMMethod___compile_stmt_call},
-  {(bigint) compiling_methods___MMMethod___intern_compile_call},
-  {(bigint) compiling_methods___MMMethod___compile_call_and_closures},
-  {(bigint) compiling_methods___MMMethod___compile_constructor_call},
-  {(bigint) compiling_methods___MMMethod___compile_super_call},
-  {(bigint) compiling_methods___MMMethod___closure_cname},
-  {(bigint) 2 /* 72: MMMethod < MMMethod: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___ISeq___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ISeq___dump},
+  {(bigint) icode_dump___ICode___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___ISeq___inner_dup_with},
+  {(bigint) 1 /* 53: ISeq < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: ISeq < ICode0: superclass init_table position */},
+  {(bigint) icode_tools___ISeq___dup_seq_to},
+  {(bigint) 3 /* 63: ISeq < ISeq: superclass init_table position */},
+  {(bigint) icode_base___ISeq___icodes},
+  {(bigint) icode_base___ISeq___iescape_mark},
+  {(bigint) icode_base___ISeq___iescape_mark__eq},
+  {(bigint) icode_base___ISeq___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMMethod::_cname_cache */
-/* 2: Attribute MMMethod::_signature */
-/* 3: Attribute MMMethod::_signatures_cache */
-/* 4: Attribute MMMethod::_name */
-/* 5: Attribute MMMethod::_local_class */
-/* 6: Attribute MMMethod::_global */
-/* 7: Attribute MMMethod::_prhe */
-/* 8: Attribute MMMethod::_need_super */
-val_t NEW_MMMethod(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_MMMethod;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMMethod(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ISeq::_result */
+/* 3: Attribute ISeq::_location */
+/* 4: Attribute ISeq::_icodes */
+/* 5: Attribute ISeq::_iescape_mark */
+void INIT_ATTRIBUTES__ISeq(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ISeq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:168 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_icode_base___ISeq____icodes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMMethod_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMMethod();
-  abstractmetamodel___MMLocalProperty___init(self, p0, p1, init_table);
-  CHECKNEW_MMMethod(self, "abstractmetamodel::MMLocalProperty::init for MMMethod");
-  return self;
+val_t NEW_ISeq(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_ISeq;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ISeq(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ISeq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___ISeq____icodes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_icodes", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMConcreteClass[107] = {
-  {(bigint) 3295 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMConcreteClass < Object: superclass typecheck marker */},
-  {(bigint) 107 /* 2: MMConcreteClass < MMLocalClass: superclass typecheck marker */},
-  {(bigint) 3295 /* 3: MMConcreteClass < MMConcreteClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ISeq_icode_base___ISeq___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 173;
+  fra.me.meth = LOCATE_NEW_ISeq_icode_base___ISeq___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./icode//icode_base.nit:173 */
+  fra.me.REG[0] = NEW_ISeq();
+  INIT_ATTRIBUTES__ISeq(fra.me.REG[0]);
+  icode_base___ISeq___init(fra.me.REG[0], init_table);
+  CHECKNEW_ISeq(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ILoop[70] = {
+  {(bigint) 2951 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ILoop < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: ILoop < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: ILoop < ICode0: superclass typecheck marker */},
+  {(bigint) 2639 /* 5: ILoop < ISeq: superclass typecheck marker */},
+  {(bigint) 2951 /* 6: ILoop < ILoop: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalClass___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMConcreteClass < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ILoop < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -100540,7 +131332,6 @@ const classtable_elt_t VFT_MMConcreteClass[107] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -100548,124 +131339,126 @@ const classtable_elt_t VFT_MMConcreteClass[107] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) abstracttool___MMLocalClass___dump_properties},
-  {(bigint) mmbuilder___MMLocalClass___accept_class_visitor},
-  {(bigint) mmbuilder___MMLocalClass___accept_properties_visitor},
-  {(bigint) genericity___MMLocalClass___get_formal},
-  {(bigint) genericity___MMLocalClass___register_formal},
-  {(bigint) genericity___MMLocalClass___get_instantiate_type},
-  {(bigint) genericity___MMLocalClass___formals_types},
-  {(bigint) static_type___MMLocalClass___get_type},
-  {(bigint) genericity___MMLocalClass___is_generic},
-  {(bigint) inheritance___MMLocalClass___compute_super_classes},
-  {(bigint) inheritance___MMLocalClass___compute_ancestors},
-  {(bigint) inheritance___MMLocalClass___inherit_global_properties},
-  {(bigint) inheritance___MMLocalClass___make_visible_an_inherited_global_property},
-  {(bigint) inheritance___MMLocalClass___add_direct_parent},
-  {(bigint) inheritance___MMLocalClass___computed_super_classes},
-  {(bigint) inheritance___MMLocalClass___computed_ancestors},
-  {(bigint) inheritance___MMLocalClass___ancestor_for},
-  {(bigint) inheritance___MMLocalClass___add_default_any_class},
-  {(bigint) inheritance___MMLocalClass___add_super_classes},
-  {(bigint) inheritance___MMLocalClass___add_explicit_classes},
-  {(bigint) inheritance___MMLocalClass___compute_super_parents},
-  {(bigint) inheritance___MMLocalClass___build_ancestors},
-  {(bigint) inheritance___MMLocalClass___group_ancestors},
-  {(bigint) inheritance___MMLocalClass___merge_ancestors},
-  {(bigint) inheritance___MMLocalClass___inherit_local_property},
-  {(bigint) genericity___MMLocalClass___get_type},
-  {(bigint) static_type___MMLocalClass___add_ancestor},
-  {(bigint) static_type___MMLocalClass___ancestors},
-  {(bigint) static_type___MMLocalClass___ancestor},
-  {(bigint) 1 /* 72: MMConcreteClass < MMLocalClass: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalClass___name},
-  {(bigint) abstractmetamodel___MMLocalClass___arity},
-  {(bigint) abstractmetamodel___MMLocalClass___module},
-  {(bigint) abstractmetamodel___MMLocalClass___global},
-  {(bigint) abstractmetamodel___MMLocalClass___crhe},
-  {(bigint) abstractmetamodel___MMLocalClass___cshe},
-  {(bigint) abstractmetamodel___MMLocalClass___che},
-  {(bigint) abstractmetamodel___MMLocalClass___local_property_by_global},
-  {(bigint) abstractmetamodel___MMLocalClass___global_properties},
-  {(bigint) abstractmetamodel___MMLocalClass___properties_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___init},
-  {(bigint) abstractmetamodel___MMLocalClass___for_module},
-  {(bigint) abstractmetamodel___MMLocalClass___new_global},
-  {(bigint) abstractmetamodel___MMLocalClass___set_global},
-  {(bigint) abstractmetamodel___MMLocalClass___has_global_property_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___get_property_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___attribute},
-  {(bigint) abstractmetamodel___MMLocalClass___method},
-  {(bigint) abstractmetamodel___MMLocalClass___select_method},
-  {(bigint) abstractmetamodel___MMLocalClass___select_attribute},
-  {(bigint) abstractmetamodel___MMLocalClass___super_methods_named},
-  {(bigint) abstractmetamodel___MMLocalClass___register_local_property},
-  {(bigint) abstractmetamodel___MMLocalClass___register_global_property},
-  {(bigint) abstractmetamodel___MMLocalClass___has_global_property},
-  {(bigint) inheritance___MMLocalClass_____bra},
-  {(bigint) abstractmetamodel___MMLocalClass___context},
-  {(bigint) virtualtype___MMLocalClass___virtual_type},
-  {(bigint) virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) compiling_global___MMLocalClass___compare},
-  {(bigint) compiling_global___MMLocalClass___declare_tables_to_c},
-  {(bigint) compiling_global___MMLocalClass___compile_tables_to_c},
-  {(bigint) compiling_base___MMLocalClass___primitive_info},
-  {(bigint) compiling_base___MMLocalClass___primitive_ctypes},
-  {(bigint) 2 /* 106: MMConcreteClass < MMConcreteClass: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute MMConcreteClass::_types */
-/* 2: Attribute MMConcreteClass::_formals_types */
-/* 3: Attribute MMConcreteClass::_direct_parents */
-/* 4: Attribute MMConcreteClass::_computing_super */
-/* 5: Attribute MMConcreteClass::_base_type_cache */
-/* 6: Attribute MMConcreteClass::_ancestors */
-/* 7: Attribute MMConcreteClass::_name */
-/* 8: Attribute MMConcreteClass::_arity */
-/* 9: Attribute MMConcreteClass::_module */
-/* 10: Attribute MMConcreteClass::_global */
-/* 11: Attribute MMConcreteClass::_crhe */
-/* 12: Attribute MMConcreteClass::_cshe */
-/* 13: Attribute MMConcreteClass::_che */
-/* 14: Attribute MMConcreteClass::_local_property_by_global */
-/* 15: Attribute MMConcreteClass::_global_properties */
-/* 16: Attribute MMConcreteClass::_properties_by_name */
-/* 17: Attribute MMConcreteClass::_primitive_info_cache */
-/* 18: Attribute MMConcreteClass::_primitive_info_b */
-val_t NEW_MMConcreteClass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_MMConcreteClass;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_inheritance___MMLocalClass____direct_parents(obj) = NEW_Array_array___Array___init() /*new Array[MMAncestor]*/;
-  ATTR_inheritance___MMLocalClass____computing_super(obj) =  TAG_Bool(false);
-  ATTR_genericity___MMLocalClass____types(obj) = NEW_Array_array___Array___init() /*new Array[MMTypeGeneric]*/;
-  ATTR_genericity___MMLocalClass____formals_types(obj) = NEW_Array_array___Array___init() /*new Array[MMTypeFormalParameter]*/;
-  ATTR_compiling_base___MMLocalClass____primitive_info_b(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMConcreteClass(val_t self, char *from) {
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___ILoop___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ILoop___dump},
+  {(bigint) icode_dump___ICode___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___ILoop___inner_dup_with},
+  {(bigint) 1 /* 53: ILoop < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: ILoop < ICode0: superclass init_table position */},
+  {(bigint) icode_tools___ISeq___dup_seq_to},
+  {(bigint) 3 /* 63: ILoop < ISeq: superclass init_table position */},
+  {(bigint) icode_base___ISeq___icodes},
+  {(bigint) icode_base___ISeq___iescape_mark},
+  {(bigint) icode_base___ISeq___iescape_mark__eq},
+  {(bigint) icode_base___ISeq___init},
+  {(bigint) 4 /* 68: ILoop < ILoop: superclass init_table position */},
+  {(bigint) icode_base___ILoop___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ILoop::_result */
+/* 3: Attribute ILoop::_location */
+/* 4: Attribute ILoop::_icodes */
+/* 5: Attribute ILoop::_iescape_mark */
+void INIT_ATTRIBUTES__ILoop(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ILoop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:168 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_icode_base___ISeq____icodes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMConcreteClass_abstractmetamodel___MMLocalClass___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMConcreteClass();
-  abstractmetamodel___MMLocalClass___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMConcreteClass(self, "abstractmetamodel::MMLocalClass::init for MMConcreteClass");
-  return self;
+val_t NEW_ILoop(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_ILoop;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ILoop(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ILoop;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___ISeq____icodes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_icodes", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMSignature[59] = {
-  {(bigint) 95 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMSignature < Object: superclass typecheck marker */},
-  {(bigint) 95 /* 2: MMSignature < MMSignature: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ILoop_icode_base___ILoop___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 180;
+  fra.me.meth = LOCATE_NEW_ILoop_icode_base___ILoop___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./icode//icode_base.nit:180 */
+  fra.me.REG[0] = NEW_ILoop();
+  INIT_ATTRIBUTES__ILoop(fra.me.REG[0]);
+  icode_base___ILoop___init(fra.me.REG[0], init_table);
+  CHECKNEW_ILoop(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_IIf[68] = {
+  {(bigint) 2679 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IIf < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IIf < ICode: superclass typecheck marker */},
+  {(bigint) 2019 /* 4: IIf < ICode1: superclass typecheck marker */},
+  {(bigint) 2679 /* 5: IIf < IIf: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100677,14 +131470,9 @@ const classtable_elt_t VFT_MMSignature[59] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) static_type___MMSignature___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMSignature < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IIf < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -100692,7 +131480,6 @@ const classtable_elt_t VFT_MMSignature[59] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -100700,61 +131487,140 @@ const classtable_elt_t VFT_MMSignature[59] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) vararg___MMSignature___vararg_rank},
-  {(bigint) vararg___MMSignature___vararg_rank__eq},
-  {(bigint) vararg___MMSignature___has_vararg},
-  {(bigint) static_type___MMSignature___adaptation_to},
-  {(bigint) static_type___MMSignature___not_for_self},
-  {(bigint) static_type___MMSignature___init},
-  {(bigint) 1 /* 49: MMSignature < MMSignature: superclass init_table position */},
-  {(bigint) static_type___MMSignature___recv},
-  {(bigint) static_type___MMSignature___return_type},
-  {(bigint) static_type___MMSignature___closures},
-  {(bigint) static_type___MMSignature___arity},
-  {(bigint) static_type___MMSignature_____l},
-  {(bigint) static_type___MMSignature_____bra},
-  {(bigint) vararg___MMSignature___adaptation_to},
-  {(bigint) vararg___MMSignature___not_for_self},
-  {(bigint) vararg___MMSignature___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IIf___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___IIf___dump},
+  {(bigint) icode_dump___ICode___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IIf___inner_dup_with},
+  {(bigint) 1 /* 53: IIf < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode1___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IIf < ICode1: superclass init_table position */},
+  {(bigint) icode_base___ICode1___expr},
+  {(bigint) icode_base___ICode1___init},
+  {(bigint) 3 /* 64: IIf < IIf: superclass init_table position */},
+  {(bigint) icode_base___IIf___then_seq},
+  {(bigint) icode_base___IIf___else_seq},
+  {(bigint) icode_base___IIf___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMSignature::_vararg_rank */
-/* 2: Attribute MMSignature::_recv */
-/* 3: Attribute MMSignature::_params */
-/* 4: Attribute MMSignature::_return_type */
-/* 5: Attribute MMSignature::_closures */
-/* 6: Attribute MMSignature::_not_for_self_cache */
-val_t NEW_MMSignature(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute IIf::_result */
+/* 3: Attribute IIf::_location */
+/* 4: Attribute IIf::_expr */
+/* 5: Attribute IIf::_then_seq */
+/* 6: Attribute IIf::_else_seq */
+void INIT_ATTRIBUTES__IIf(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IIf;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:188 */
+  fra.me.REG[1] = NEW_ISeq_icode_base___ISeq___init();
+  ATTR_icode_base___IIf____then_seq(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:190 */
+  fra.me.REG[1] = NEW_ISeq_icode_base___ISeq___init();
+  ATTR_icode_base___IIf____else_seq(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IIf(void)
+{
   obj_t obj;
   obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_MMSignature;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMSignature____closures(obj) = NEW_Array_array___Array___init() /*new Array[MMClosure]*/;
-  ATTR_static_type___MMSignature____not_for_self_cache(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMSignature(val_t self, char *from) {
-}
-val_t NEW_MMSignature_static_type___MMSignature___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_MMSignature();
-  vararg___MMSignature___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMSignature(self, "vararg::MMSignature::(static_type::MMSignature::init) for MMSignature");
-  return self;
+  obj->vft = (classtable_elt_t*)VFT_IIf;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IIf(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IIf;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IIf____then_seq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_then_seq", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___IIf____else_seq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_else_seq", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMClosure[51] = {
-  {(bigint) 127 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMClosure < Object: superclass typecheck marker */},
-  {(bigint) 127 /* 2: MMClosure < MMClosure: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_IIf_icode_base___IIf___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 191;
+  fra.me.meth = LOCATE_NEW_IIf_icode_base___IIf___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:191 */
+  fra.me.REG[1] = NEW_IIf();
+  INIT_ATTRIBUTES__IIf(fra.me.REG[1]);
+  icode_base___IIf___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IIf(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_IEscape[65] = {
+  {(bigint) 2691 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IEscape < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IEscape < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: IEscape < ICode0: superclass typecheck marker */},
+  {(bigint) 2691 /* 5: IEscape < IEscape: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100766,14 +131632,9 @@ const classtable_elt_t VFT_MMClosure[51] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMClosure < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IEscape < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -100781,7 +131642,6 @@ const classtable_elt_t VFT_MMClosure[51] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -100789,48 +131649,119 @@ const classtable_elt_t VFT_MMClosure[51] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: MMClosure < MMClosure: superclass init_table position */},
-  {(bigint) static_type___MMClosure___signature},
-  {(bigint) static_type___MMClosure___is_break},
-  {(bigint) static_type___MMClosure___is_optional},
-  {(bigint) static_type___MMClosure___adaptation_to},
-  {(bigint) static_type___MMClosure___init},
-  {(bigint) static_type___MMClosure___not_for_self},
-  {(bigint) static_type___MMClosure_____l},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IEscape___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IEscape___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IEscape___inner_dup_with},
+  {(bigint) 1 /* 53: IEscape < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IEscape < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 62: IEscape < IEscape: superclass init_table position */},
+  {(bigint) icode_base___IEscape___iescape_mark},
+  {(bigint) icode_base___IEscape___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMClosure::_signature */
-/* 2: Attribute MMClosure::_is_break */
-/* 3: Attribute MMClosure::_is_optional */
-val_t NEW_MMClosure(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_MMClosure;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IEscape::_result */
+/* 3: Attribute IEscape::_location */
+/* 4: Attribute IEscape::_iescape_mark */
+void INIT_ATTRIBUTES__IEscape(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IEscape;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMClosure(val_t self, char *from) {
-}
-val_t NEW_MMClosure_static_type___MMClosure___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_MMClosure();
-  static_type___MMClosure___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMClosure(self, "static_type::MMClosure::init for MMClosure");
-  return self;
+val_t NEW_IEscape(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_IEscape;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IEscape(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IEscape;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IEscape____iescape_mark(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_iescape_mark", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMAncestor[53] = {
-  {(bigint) 131 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMAncestor < Object: superclass typecheck marker */},
-  {(bigint) 131 /* 2: MMAncestor < MMAncestor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_IEscape_icode_base___IEscape___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 200;
+  fra.me.meth = LOCATE_NEW_IEscape_icode_base___IEscape___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:200 */
+  fra.me.REG[1] = NEW_IEscape();
+  INIT_ATTRIBUTES__IEscape(fra.me.REG[1]);
+  icode_base___IEscape___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IEscape(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_IAbort[66] = {
+  {(bigint) 2731 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IAbort < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IAbort < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: IAbort < ICode0: superclass typecheck marker */},
+  {(bigint) 2731 /* 5: IAbort < IAbort: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100842,14 +131773,9 @@ const classtable_elt_t VFT_MMAncestor[53] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) static_type___MMAncestor___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMAncestor < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IAbort < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -100857,7 +131783,6 @@ const classtable_elt_t VFT_MMAncestor[53] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -100865,52 +131790,129 @@ const classtable_elt_t VFT_MMAncestor[53] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) inheritance___MMAncestor___add_in},
-  {(bigint) 1 /* 44: MMAncestor < MMAncestor: superclass init_table position */},
-  {(bigint) static_type___MMAncestor___stype},
-  {(bigint) static_type___MMAncestor___stype__eq},
-  {(bigint) static_type___MMAncestor___inheriter},
-  {(bigint) static_type___MMAncestor___inheriter__eq},
-  {(bigint) static_type___MMAncestor___is_reffinement},
-  {(bigint) static_type___MMAncestor___is_specialisation},
-  {(bigint) static_type___MMAncestor___local_class},
-  {(bigint) static_type___MMAncestor___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IAbort___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IAbort___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IAbort___inner_dup_with},
+  {(bigint) 1 /* 53: IAbort < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IAbort < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 62: IAbort < IAbort: superclass init_table position */},
+  {(bigint) icode_base___IAbort___texts},
+  {(bigint) icode_base___IAbort___module_location},
+  {(bigint) icode_base___IAbort___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMAncestor::_stype */
-/* 2: Attribute MMAncestor::_inheriter */
-val_t NEW_MMAncestor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_MMAncestor;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMAncestor____stype(obj) =  NIT_NULL /*null*/;
-  ATTR_static_type___MMAncestor____inheriter(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IAbort::_result */
+/* 3: Attribute IAbort::_location */
+/* 4: Attribute IAbort::_texts */
+/* 5: Attribute IAbort::_module_location */
+void INIT_ATTRIBUTES__IAbort(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IAbort;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMAncestor(val_t self, char *from) {
-}
-val_t NEW_MMAncestor_static_type___MMAncestor___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_MMAncestor();
-  static_type___MMAncestor___init(self, init_table);
-  CHECKNEW_MMAncestor(self, "static_type::MMAncestor::init for MMAncestor");
-  return self;
+val_t NEW_IAbort(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_IAbort;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IAbort(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IAbort;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IAbort____texts(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_texts", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___IAbort____module_location(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_module_location", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMType[66] = {
-  {(bigint) 91 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMType < Object: superclass typecheck marker */},
-  {(bigint) 91 /* 2: MMType < MMType: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_IAbort_icode_base___IAbort___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 211;
+  fra.me.meth = LOCATE_NEW_IAbort_icode_base___IAbort___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:211 */
+  fra.me.REG[2] = NEW_IAbort();
+  INIT_ATTRIBUTES__IAbort(fra.me.REG[2]);
+  icode_base___IAbort___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IAbort(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ICall[74] = {
+  {(bigint) 2959 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ICall < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: ICall < ICode: superclass typecheck marker */},
+  {(bigint) 2011 /* 4: ICall < ICodeN: superclass typecheck marker */},
+  {(bigint) 2727 /* 5: ICall < IAbsCall: superclass typecheck marker */},
+  {(bigint) 2959 /* 6: ICall < ICall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100921,14 +131923,9 @@ const classtable_elt_t VFT_MMType[66] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMType < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: ICall < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -100936,7 +131933,6 @@ const classtable_elt_t VFT_MMType[66] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -100944,63 +131940,138 @@ const classtable_elt_t VFT_MMType[66] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMType___compile_cast},
-  {(bigint) compiling_methods___MMType___compile_type_check},
-  {(bigint) compiling_methods___MMType___compile_notnull_check},
-  {(bigint) compiling_base___MMType___cname},
-  {(bigint) compiling_base___MMType___default_cvalue},
-  {(bigint) compiling_base___MMType___boxtype},
-  {(bigint) compiling_base___MMType___unboxtype},
-  {(bigint) genericity___MMType___is_generic},
-  {(bigint) type_formal___MMType___direct_type},
-  {(bigint) 1 /* 52: MMType < MMType: superclass init_table position */},
-  {(bigint) static_type___MMType___module},
-  {(bigint) static_type___MMType___local_class},
-  {(bigint) static_type___MMType___is_valid},
-  {(bigint) static_type___MMType_____l},
-  {(bigint) static_type___MMType___is_supertype},
-  {(bigint) static_type___MMType___for_module},
-  {(bigint) static_type___MMType___adapt_to},
-  {(bigint) static_type___MMType___upcast_for},
-  {(bigint) static_type___MMType___not_for_self},
-  {(bigint) static_type___MMType___is_nullable},
-  {(bigint) static_type___MMType___as_nullable},
-  {(bigint) static_type___MMType___as_notnull},
-  {(bigint) static_type___MMType___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IAbsCall___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICodeN___dump},
+  {(bigint) icode_dump___ICall___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___ICall___inner_dup_with},
+  {(bigint) 2 /* 53: ICall < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) 1 /* 62: ICall < ICodeN: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___exprs},
+  {(bigint) icode_base___ICodeN___closure_defs},
+  {(bigint) icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode_base___ICodeN___init},
+  {(bigint) compiling_icode___ICall___compile_call_to_c},
+  {(bigint) 0 /* 68: ICall < IAbsCall: superclass init_table position */},
+  {(bigint) icode_base___IAbsCall___property},
+  {(bigint) icode_base___IAbsCall___init},
+  {(bigint) 4 /* 71: ICall < ICall: superclass init_table position */},
+  {(bigint) icode_base___ICall___init},
+  {(bigint) inline_methods___ICall___is_inlinable},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMType::_as_nullable_cache */
-val_t NEW_MMType(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_MMType;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMType____as_nullable_cache(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMType(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ICall::_result */
+/* 3: Attribute ICall::_location */
+/* 4: Attribute ICall::_exprs */
+/* 5: Attribute ICall::_closure_defs */
+/* 6: Attribute ICall::_property */
+void INIT_ATTRIBUTES__ICall(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ICall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMType_static_type___MMType___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_MMType();
-  static_type___MMType___init(self, init_table);
-  CHECKNEW_MMType(self, "static_type::MMType::init for MMType");
-  return self;
+val_t NEW_ICall(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_ICall;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ICall(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ICall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IAbsCall____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMNullableType[68] = {
-  {(bigint) 3279 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMNullableType < Object: superclass typecheck marker */},
-  {(bigint) 91 /* 2: MMNullableType < MMType: superclass typecheck marker */},
-  {(bigint) 3279 /* 3: MMNullableType < MMNullableType: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ICall_icode_base___ICall___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 237;
+  fra.me.meth = LOCATE_NEW_ICall_icode_base___ICall___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:237 */
+  fra.me.REG[2] = NEW_ICall();
+  INIT_ATTRIBUTES__ICall(fra.me.REG[2]);
+  icode_base___ICall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ICall(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ISuper[73] = {
+  {(bigint) 2935 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ISuper < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: ISuper < ICode: superclass typecheck marker */},
+  {(bigint) 2011 /* 4: ISuper < ICodeN: superclass typecheck marker */},
+  {(bigint) 2727 /* 5: ISuper < IAbsCall: superclass typecheck marker */},
+  {(bigint) 2935 /* 6: ISuper < ISuper: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101011,14 +132082,9 @@ const classtable_elt_t VFT_MMNullableType[68] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) static_type___MMNullableType___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMNullableType < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: ISuper < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -101026,7 +132092,6 @@ const classtable_elt_t VFT_MMNullableType[68] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -101034,66 +132099,137 @@ const classtable_elt_t VFT_MMNullableType[68] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMType___compile_cast},
-  {(bigint) compiling_methods___MMType___compile_type_check},
-  {(bigint) compiling_methods___MMType___compile_notnull_check},
-  {(bigint) compiling_base___MMType___cname},
-  {(bigint) compiling_base___MMType___default_cvalue},
-  {(bigint) compiling_base___MMType___boxtype},
-  {(bigint) compiling_base___MMType___unboxtype},
-  {(bigint) genericity___MMType___is_generic},
-  {(bigint) type_formal___MMType___direct_type},
-  {(bigint) 1 /* 52: MMNullableType < MMType: superclass init_table position */},
-  {(bigint) static_type___MMNullableType___module},
-  {(bigint) static_type___MMNullableType___local_class},
-  {(bigint) static_type___MMNullableType___is_valid},
-  {(bigint) static_type___MMNullableType_____l},
-  {(bigint) static_type___MMNullableType___is_supertype},
-  {(bigint) static_type___MMNullableType___for_module},
-  {(bigint) static_type___MMNullableType___adapt_to},
-  {(bigint) static_type___MMNullableType___upcast_for},
-  {(bigint) static_type___MMNullableType___not_for_self},
-  {(bigint) static_type___MMNullableType___is_nullable},
-  {(bigint) static_type___MMNullableType___as_nullable},
-  {(bigint) static_type___MMNullableType___as_notnull},
-  {(bigint) static_type___MMType___init},
-  {(bigint) 2 /* 66: MMNullableType < MMNullableType: superclass init_table position */},
-  {(bigint) static_type___MMNullableType___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IAbsCall___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICodeN___dump},
+  {(bigint) icode_dump___ISuper___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___ISuper___inner_dup_with},
+  {(bigint) 2 /* 53: ISuper < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) 1 /* 62: ISuper < ICodeN: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___exprs},
+  {(bigint) icode_base___ICodeN___closure_defs},
+  {(bigint) icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode_base___ICodeN___init},
+  {(bigint) compiling_icode___ISuper___compile_call_to_c},
+  {(bigint) 0 /* 68: ISuper < IAbsCall: superclass init_table position */},
+  {(bigint) icode_base___IAbsCall___property},
+  {(bigint) icode_base___IAbsCall___init},
+  {(bigint) 4 /* 71: ISuper < ISuper: superclass init_table position */},
+  {(bigint) icode_base___ISuper___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMNullableType::_as_nullable_cache */
-/* 2: Attribute MMNullableType::_base_type */
-val_t NEW_MMNullableType(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_MMNullableType;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMType____as_nullable_cache(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMNullableType(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ISuper::_result */
+/* 3: Attribute ISuper::_location */
+/* 4: Attribute ISuper::_exprs */
+/* 5: Attribute ISuper::_closure_defs */
+/* 6: Attribute ISuper::_property */
+void INIT_ATTRIBUTES__ISuper(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ISuper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMNullableType_static_type___MMNullableType___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMNullableType();
-  static_type___MMNullableType___init(self, p0, init_table);
-  CHECKNEW_MMNullableType(self, "static_type::MMNullableType::init for MMNullableType");
-  return self;
+val_t NEW_ISuper(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_ISuper;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ISuper(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ISuper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IAbsCall____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMTypeClass[68] = {
-  {(bigint) 3259 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMTypeClass < Object: superclass typecheck marker */},
-  {(bigint) 91 /* 2: MMTypeClass < MMType: superclass typecheck marker */},
-  {(bigint) 3259 /* 3: MMTypeClass < MMTypeClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_ISuper_icode_base___ISuper___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 244;
+  fra.me.meth = LOCATE_NEW_ISuper_icode_base___ISuper___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:244 */
+  fra.me.REG[2] = NEW_ISuper();
+  INIT_ATTRIBUTES__ISuper(fra.me.REG[2]);
+  icode_base___ISuper___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ISuper(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_INew[74] = {
+  {(bigint) 2947 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: INew < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: INew < ICode: superclass typecheck marker */},
+  {(bigint) 2011 /* 4: INew < ICodeN: superclass typecheck marker */},
+  {(bigint) 2727 /* 5: INew < IAbsCall: superclass typecheck marker */},
+  {(bigint) 2947 /* 6: INew < INew: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101104,14 +132240,9 @@ const classtable_elt_t VFT_MMTypeClass[68] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) static_type___MMTypeClass___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMTypeClass < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: INew < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -101119,7 +132250,6 @@ const classtable_elt_t VFT_MMTypeClass[68] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -101127,65 +132257,145 @@ const classtable_elt_t VFT_MMTypeClass[68] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMType___compile_cast},
-  {(bigint) compiling_methods___MMType___compile_type_check},
-  {(bigint) compiling_methods___MMType___compile_notnull_check},
-  {(bigint) compiling_base___MMType___cname},
-  {(bigint) compiling_base___MMType___default_cvalue},
-  {(bigint) compiling_base___MMType___boxtype},
-  {(bigint) compiling_base___MMType___unboxtype},
-  {(bigint) genericity___MMType___is_generic},
-  {(bigint) type_formal___MMType___direct_type},
-  {(bigint) 1 /* 52: MMTypeClass < MMType: superclass init_table position */},
-  {(bigint) static_type___MMTypeClass___module},
-  {(bigint) static_type___MMTypeClass___local_class},
-  {(bigint) static_type___MMType___is_valid},
-  {(bigint) static_type___MMTypeClass_____l},
-  {(bigint) static_type___MMType___is_supertype},
-  {(bigint) static_type___MMType___for_module},
-  {(bigint) static_type___MMType___adapt_to},
-  {(bigint) static_type___MMTypeClass___upcast_for},
-  {(bigint) static_type___MMType___not_for_self},
-  {(bigint) static_type___MMType___is_nullable},
-  {(bigint) static_type___MMType___as_nullable},
-  {(bigint) static_type___MMType___as_notnull},
-  {(bigint) static_type___MMType___init},
-  {(bigint) 2 /* 66: MMTypeClass < MMTypeClass: superclass init_table position */},
-  {(bigint) static_type___MMTypeClass___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IAbsCall___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICodeN___dump},
+  {(bigint) icode_dump___INew___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___INew___inner_dup_with},
+  {(bigint) 2 /* 53: INew < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) 1 /* 62: INew < ICodeN: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___exprs},
+  {(bigint) icode_base___ICodeN___closure_defs},
+  {(bigint) icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode_base___ICodeN___init},
+  {(bigint) compiling_icode___INew___compile_call_to_c},
+  {(bigint) 0 /* 68: INew < IAbsCall: superclass init_table position */},
+  {(bigint) icode_base___IAbsCall___property},
+  {(bigint) icode_base___IAbsCall___init},
+  {(bigint) 4 /* 71: INew < INew: superclass init_table position */},
+  {(bigint) icode_base___INew___stype},
+  {(bigint) icode_base___INew___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMTypeClass::_as_nullable_cache */
-/* 2: Attribute MMTypeClass::_local_class */
-val_t NEW_MMTypeClass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_MMTypeClass;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMType____as_nullable_cache(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMTypeClass(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute INew::_result */
+/* 3: Attribute INew::_location */
+/* 4: Attribute INew::_exprs */
+/* 5: Attribute INew::_closure_defs */
+/* 6: Attribute INew::_property */
+/* 7: Attribute INew::_stype */
+void INIT_ATTRIBUTES__INew(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__INew;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeClass_static_type___MMTypeClass___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMTypeClass();
-  static_type___MMTypeClass___init(self, p0, init_table);
-  CHECKNEW_MMTypeClass(self, "static_type::MMTypeClass::init for MMTypeClass");
-  return self;
+val_t NEW_INew(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_INew;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_INew(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_INew;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___INew____stype(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___IAbsCall____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMTypeSimpleClass[70] = {
-  {(bigint) 3907 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMTypeSimpleClass < Object: superclass typecheck marker */},
-  {(bigint) 91 /* 2: MMTypeSimpleClass < MMType: superclass typecheck marker */},
-  {(bigint) 3259 /* 3: MMTypeSimpleClass < MMTypeClass: superclass typecheck marker */},
-  {(bigint) 3907 /* 4: MMTypeSimpleClass < MMTypeSimpleClass: superclass typecheck marker */},
+val_t NEW_INew_icode_base___INew___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 258;
+  fra.me.meth = LOCATE_NEW_INew_icode_base___INew___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./icode//icode_base.nit:258 */
+  fra.me.REG[3] = NEW_INew();
+  INIT_ATTRIBUTES__INew(fra.me.REG[3]);
+  icode_base___INew___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_INew(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_IAllocateInstance[65] = {
+  {(bigint) 2723 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IAllocateInstance < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IAllocateInstance < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: IAllocateInstance < ICode0: superclass typecheck marker */},
+  {(bigint) 2723 /* 5: IAllocateInstance < IAllocateInstance: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101197,14 +132407,9 @@ const classtable_elt_t VFT_MMTypeSimpleClass[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) static_type___MMTypeClass___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMTypeSimpleClass < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IAllocateInstance < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -101212,7 +132417,6 @@ const classtable_elt_t VFT_MMTypeSimpleClass[70] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -101220,68 +132424,120 @@ const classtable_elt_t VFT_MMTypeSimpleClass[70] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMType___compile_cast},
-  {(bigint) compiling_methods___MMType___compile_type_check},
-  {(bigint) compiling_methods___MMType___compile_notnull_check},
-  {(bigint) compiling_base___MMType___cname},
-  {(bigint) compiling_base___MMType___default_cvalue},
-  {(bigint) compiling_base___MMType___boxtype},
-  {(bigint) compiling_base___MMType___unboxtype},
-  {(bigint) genericity___MMTypeSimpleClass___is_generic},
-  {(bigint) type_formal___MMType___direct_type},
-  {(bigint) 1 /* 52: MMTypeSimpleClass < MMType: superclass init_table position */},
-  {(bigint) static_type___MMTypeClass___module},
-  {(bigint) static_type___MMTypeClass___local_class},
-  {(bigint) static_type___MMType___is_valid},
-  {(bigint) static_type___MMTypeClass_____l},
-  {(bigint) static_type___MMTypeSimpleClass___is_supertype},
-  {(bigint) static_type___MMTypeSimpleClass___for_module},
-  {(bigint) static_type___MMTypeSimpleClass___adapt_to},
-  {(bigint) static_type___MMTypeClass___upcast_for},
-  {(bigint) static_type___MMType___not_for_self},
-  {(bigint) static_type___MMType___is_nullable},
-  {(bigint) static_type___MMType___as_nullable},
-  {(bigint) static_type___MMType___as_notnull},
-  {(bigint) static_type___MMType___init},
-  {(bigint) 2 /* 66: MMTypeSimpleClass < MMTypeClass: superclass init_table position */},
-  {(bigint) static_type___MMTypeClass___init},
-  {(bigint) 3 /* 68: MMTypeSimpleClass < MMTypeSimpleClass: superclass init_table position */},
-  {(bigint) static_type___MMTypeSimpleClass___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IAllocateInstance___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IAllocateInstance___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IAllocateInstance___inner_dup_with},
+  {(bigint) 1 /* 53: IAllocateInstance < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IAllocateInstance < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 62: IAllocateInstance < IAllocateInstance: superclass init_table position */},
+  {(bigint) icode_base___IAllocateInstance___stype},
+  {(bigint) icode_base___IAllocateInstance___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMTypeSimpleClass::_as_nullable_cache */
-/* 2: Attribute MMTypeSimpleClass::_local_class */
-val_t NEW_MMTypeSimpleClass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_MMTypeSimpleClass;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMType____as_nullable_cache(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IAllocateInstance::_result */
+/* 3: Attribute IAllocateInstance::_location */
+/* 4: Attribute IAllocateInstance::_stype */
+void INIT_ATTRIBUTES__IAllocateInstance(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IAllocateInstance;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMTypeSimpleClass(val_t self, char *from) {
+val_t NEW_IAllocateInstance(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_IAllocateInstance;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IAllocateInstance(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IAllocateInstance;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IAllocateInstance____stype(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeSimpleClass_static_type___MMTypeSimpleClass___init(val_t p0) {
+val_t NEW_IAllocateInstance_icode_base___IAllocateInstance___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_MMTypeSimpleClass();
-  static_type___MMTypeSimpleClass___init(self, p0, init_table);
-  CHECKNEW_MMTypeSimpleClass(self, "static_type::MMTypeSimpleClass::init for MMTypeSimpleClass");
-  return self;
-}
-const classtable_elt_t VFT_MMTypeNone[68] = {
-  {(bigint) 3251 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMTypeNone < Object: superclass typecheck marker */},
-  {(bigint) 91 /* 2: MMTypeNone < MMType: superclass typecheck marker */},
-  {(bigint) 3251 /* 3: MMTypeNone < MMTypeNone: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 272;
+  fra.me.meth = LOCATE_NEW_IAllocateInstance_icode_base___IAllocateInstance___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:272 */
+  fra.me.REG[1] = NEW_IAllocateInstance();
+  INIT_ATTRIBUTES__IAllocateInstance(fra.me.REG[1]);
+  icode_base___IAllocateInstance___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IAllocateInstance(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_IStaticCall[73] = {
+  {(bigint) 2939 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IStaticCall < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IStaticCall < ICode: superclass typecheck marker */},
+  {(bigint) 2011 /* 4: IStaticCall < ICodeN: superclass typecheck marker */},
+  {(bigint) 2727 /* 5: IStaticCall < IAbsCall: superclass typecheck marker */},
+  {(bigint) 2939 /* 6: IStaticCall < IStaticCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101292,14 +132548,9 @@ const classtable_elt_t VFT_MMTypeNone[68] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) static_type___MMTypeNone___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMTypeNone < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: IStaticCall < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -101307,7 +132558,6 @@ const classtable_elt_t VFT_MMTypeNone[68] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -101315,65 +132565,136 @@ const classtable_elt_t VFT_MMTypeNone[68] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMType___compile_cast},
-  {(bigint) compiling_methods___MMType___compile_type_check},
-  {(bigint) compiling_methods___MMType___compile_notnull_check},
-  {(bigint) compiling_base___MMType___cname},
-  {(bigint) compiling_base___MMType___default_cvalue},
-  {(bigint) compiling_base___MMType___boxtype},
-  {(bigint) compiling_base___MMType___unboxtype},
-  {(bigint) genericity___MMTypeNone___is_generic},
-  {(bigint) type_formal___MMType___direct_type},
-  {(bigint) 1 /* 52: MMTypeNone < MMType: superclass init_table position */},
-  {(bigint) static_type___MMTypeNone___module},
-  {(bigint) static_type___MMTypeNone___local_class},
-  {(bigint) static_type___MMType___is_valid},
-  {(bigint) static_type___MMTypeNone_____l},
-  {(bigint) static_type___MMTypeNone___is_supertype},
-  {(bigint) genericity___MMTypeNone___for_module},
-  {(bigint) genericity___MMTypeNone___adapt_to},
-  {(bigint) static_type___MMTypeNone___upcast_for},
-  {(bigint) static_type___MMType___not_for_self},
-  {(bigint) static_type___MMTypeNone___is_nullable},
-  {(bigint) static_type___MMTypeNone___as_nullable},
-  {(bigint) static_type___MMTypeNone___as_notnull},
-  {(bigint) static_type___MMType___init},
-  {(bigint) 2 /* 66: MMTypeNone < MMTypeNone: superclass init_table position */},
-  {(bigint) static_type___MMTypeNone___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IAbsCall___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICodeN___dump},
+  {(bigint) icode_dump___IStaticCall___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IStaticCall___inner_dup_with},
+  {(bigint) 2 /* 53: IStaticCall < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) 1 /* 62: IStaticCall < ICodeN: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___exprs},
+  {(bigint) icode_base___ICodeN___closure_defs},
+  {(bigint) icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode_base___ICodeN___init},
+  {(bigint) compiling_icode___IStaticCall___compile_call_to_c},
+  {(bigint) 0 /* 68: IStaticCall < IAbsCall: superclass init_table position */},
+  {(bigint) icode_base___IAbsCall___property},
+  {(bigint) icode_base___IAbsCall___init},
+  {(bigint) 4 /* 71: IStaticCall < IStaticCall: superclass init_table position */},
+  {(bigint) icode_base___IStaticCall___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMTypeNone::_as_nullable_cache */
-/* 2: Attribute MMTypeNone::_module */
-val_t NEW_MMTypeNone(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_MMTypeNone;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMType____as_nullable_cache(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IStaticCall::_result */
+/* 3: Attribute IStaticCall::_location */
+/* 4: Attribute IStaticCall::_exprs */
+/* 5: Attribute IStaticCall::_closure_defs */
+/* 6: Attribute IStaticCall::_property */
+void INIT_ATTRIBUTES__IStaticCall(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IStaticCall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMTypeNone(val_t self, char *from) {
-}
-val_t NEW_MMTypeNone_static_type___MMTypeNone___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMTypeNone();
-  static_type___MMTypeNone___init(self, p0, init_table);
-  CHECKNEW_MMTypeNone(self, "static_type::MMTypeNone::init for MMTypeNone");
-  return self;
+val_t NEW_IStaticCall(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_IStaticCall;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IStaticCall(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IStaticCall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IAbsCall____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMImplicitLocalClass[108] = {
-  {(bigint) 3287 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMImplicitLocalClass < Object: superclass typecheck marker */},
-  {(bigint) 107 /* 2: MMImplicitLocalClass < MMLocalClass: superclass typecheck marker */},
-  {(bigint) 3287 /* 3: MMImplicitLocalClass < MMImplicitLocalClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_IStaticCall_icode_base___IStaticCall___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 281;
+  fra.me.meth = LOCATE_NEW_IStaticCall_icode_base___IStaticCall___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:281 */
+  fra.me.REG[2] = NEW_IStaticCall();
+  INIT_ATTRIBUTES__IStaticCall(fra.me.REG[2]);
+  icode_base___IStaticCall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IStaticCall(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ICheckInstance[67] = {
+  {(bigint) 2699 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ICheckInstance < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: ICheckInstance < ICode: superclass typecheck marker */},
+  {(bigint) 2019 /* 4: ICheckInstance < ICode1: superclass typecheck marker */},
+  {(bigint) 2699 /* 5: ICheckInstance < ICheckInstance: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101385,148 +132706,146 @@ const classtable_elt_t VFT_MMImplicitLocalClass[108] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalClass___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMImplicitLocalClass < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ICheckInstance < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) abstracttool___MMLocalClass___dump_properties},
-  {(bigint) mmbuilder___MMLocalClass___accept_class_visitor},
-  {(bigint) mmbuilder___MMLocalClass___accept_properties_visitor},
-  {(bigint) genericity___MMLocalClass___get_formal},
-  {(bigint) genericity___MMLocalClass___register_formal},
-  {(bigint) genericity___MMLocalClass___get_instantiate_type},
-  {(bigint) genericity___MMLocalClass___formals_types},
-  {(bigint) static_type___MMLocalClass___get_type},
-  {(bigint) genericity___MMLocalClass___is_generic},
-  {(bigint) inheritance___MMLocalClass___compute_super_classes},
-  {(bigint) inheritance___MMLocalClass___compute_ancestors},
-  {(bigint) inheritance___MMLocalClass___inherit_global_properties},
-  {(bigint) inheritance___MMLocalClass___make_visible_an_inherited_global_property},
-  {(bigint) inheritance___MMLocalClass___add_direct_parent},
-  {(bigint) inheritance___MMLocalClass___computed_super_classes},
-  {(bigint) inheritance___MMLocalClass___computed_ancestors},
-  {(bigint) inheritance___MMLocalClass___ancestor_for},
-  {(bigint) inheritance___MMLocalClass___add_default_any_class},
-  {(bigint) inheritance___MMLocalClass___add_super_classes},
-  {(bigint) inheritance___MMLocalClass___add_explicit_classes},
-  {(bigint) inheritance___MMLocalClass___compute_super_parents},
-  {(bigint) inheritance___MMLocalClass___build_ancestors},
-  {(bigint) inheritance___MMLocalClass___group_ancestors},
-  {(bigint) inheritance___MMLocalClass___merge_ancestors},
-  {(bigint) inheritance___MMLocalClass___inherit_local_property},
-  {(bigint) genericity___MMLocalClass___get_type},
-  {(bigint) static_type___MMLocalClass___add_ancestor},
-  {(bigint) static_type___MMLocalClass___ancestors},
-  {(bigint) static_type___MMLocalClass___ancestor},
-  {(bigint) 1 /* 72: MMImplicitLocalClass < MMLocalClass: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalClass___name},
-  {(bigint) abstractmetamodel___MMLocalClass___arity},
-  {(bigint) abstractmetamodel___MMLocalClass___module},
-  {(bigint) abstractmetamodel___MMLocalClass___global},
-  {(bigint) abstractmetamodel___MMLocalClass___crhe},
-  {(bigint) abstractmetamodel___MMLocalClass___cshe},
-  {(bigint) abstractmetamodel___MMLocalClass___che},
-  {(bigint) abstractmetamodel___MMLocalClass___local_property_by_global},
-  {(bigint) abstractmetamodel___MMLocalClass___global_properties},
-  {(bigint) abstractmetamodel___MMLocalClass___properties_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___init},
-  {(bigint) abstractmetamodel___MMLocalClass___for_module},
-  {(bigint) abstractmetamodel___MMLocalClass___new_global},
-  {(bigint) abstractmetamodel___MMLocalClass___set_global},
-  {(bigint) abstractmetamodel___MMLocalClass___has_global_property_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___get_property_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___attribute},
-  {(bigint) abstractmetamodel___MMLocalClass___method},
-  {(bigint) abstractmetamodel___MMLocalClass___select_method},
-  {(bigint) abstractmetamodel___MMLocalClass___select_attribute},
-  {(bigint) abstractmetamodel___MMLocalClass___super_methods_named},
-  {(bigint) abstractmetamodel___MMLocalClass___register_local_property},
-  {(bigint) abstractmetamodel___MMLocalClass___register_global_property},
-  {(bigint) abstractmetamodel___MMLocalClass___has_global_property},
-  {(bigint) inheritance___MMLocalClass_____bra},
-  {(bigint) abstractmetamodel___MMLocalClass___context},
-  {(bigint) virtualtype___MMLocalClass___virtual_type},
-  {(bigint) virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) compiling_global___MMLocalClass___compare},
-  {(bigint) compiling_global___MMLocalClass___declare_tables_to_c},
-  {(bigint) compiling_global___MMLocalClass___compile_tables_to_c},
-  {(bigint) compiling_base___MMLocalClass___primitive_info},
-  {(bigint) compiling_base___MMLocalClass___primitive_ctypes},
-  {(bigint) 2 /* 106: MMImplicitLocalClass < MMImplicitLocalClass: superclass init_table position */},
-  {(bigint) inheritance___MMImplicitLocalClass___init},
+  {(bigint) kernel___Object_____neq},
+  {(bigint) kernel___Object___output},
+  {(bigint) kernel___Object___exit},
+  {(bigint) kernel___Object___sys},
+  {(bigint) file___Object___printn},
+  {(bigint) file___Object___print},
+  {(bigint) file___Object___getc},
+  {(bigint) file___Object___gets},
+  {(bigint) file___Object___stdin},
+  {(bigint) file___Object___stdout},
+  {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
+  {(bigint) math___Object___atan2},
+  {(bigint) math___Object___pi},
+  {(bigint) math___Object___srand_from},
+  {(bigint) math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___ICheckInstance___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___ICheckInstance___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___ICheckInstance___inner_dup_with},
+  {(bigint) 1 /* 53: ICheckInstance < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode1___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: ICheckInstance < ICode1: superclass init_table position */},
+  {(bigint) icode_base___ICode1___expr},
+  {(bigint) icode_base___ICode1___init},
+  {(bigint) 3 /* 64: ICheckInstance < ICheckInstance: superclass init_table position */},
+  {(bigint) icode_base___ICheckInstance___stype},
+  {(bigint) icode_base___ICheckInstance___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMImplicitLocalClass::_types */
-/* 2: Attribute MMImplicitLocalClass::_formals_types */
-/* 3: Attribute MMImplicitLocalClass::_direct_parents */
-/* 4: Attribute MMImplicitLocalClass::_computing_super */
-/* 5: Attribute MMImplicitLocalClass::_base_type_cache */
-/* 6: Attribute MMImplicitLocalClass::_ancestors */
-/* 7: Attribute MMImplicitLocalClass::_name */
-/* 8: Attribute MMImplicitLocalClass::_arity */
-/* 9: Attribute MMImplicitLocalClass::_module */
-/* 10: Attribute MMImplicitLocalClass::_global */
-/* 11: Attribute MMImplicitLocalClass::_crhe */
-/* 12: Attribute MMImplicitLocalClass::_cshe */
-/* 13: Attribute MMImplicitLocalClass::_che */
-/* 14: Attribute MMImplicitLocalClass::_local_property_by_global */
-/* 15: Attribute MMImplicitLocalClass::_global_properties */
-/* 16: Attribute MMImplicitLocalClass::_properties_by_name */
-/* 17: Attribute MMImplicitLocalClass::_primitive_info_cache */
-/* 18: Attribute MMImplicitLocalClass::_primitive_info_b */
-val_t NEW_MMImplicitLocalClass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 19);
-  obj->vft = (classtable_elt_t*)VFT_MMImplicitLocalClass;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_inheritance___MMLocalClass____direct_parents(obj) = NEW_Array_array___Array___init() /*new Array[MMAncestor]*/;
-  ATTR_inheritance___MMLocalClass____computing_super(obj) =  TAG_Bool(false);
-  ATTR_genericity___MMLocalClass____types(obj) = NEW_Array_array___Array___init() /*new Array[MMTypeGeneric]*/;
-  ATTR_genericity___MMLocalClass____formals_types(obj) = NEW_Array_array___Array___init() /*new Array[MMTypeFormalParameter]*/;
-  ATTR_compiling_base___MMLocalClass____primitive_info_b(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ICheckInstance::_result */
+/* 3: Attribute ICheckInstance::_location */
+/* 4: Attribute ICheckInstance::_expr */
+/* 5: Attribute ICheckInstance::_stype */
+void INIT_ATTRIBUTES__ICheckInstance(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ICheckInstance;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMImplicitLocalClass(val_t self, char *from) {
-}
-val_t NEW_MMImplicitLocalClass_inheritance___MMImplicitLocalClass___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMImplicitLocalClass();
-  inheritance___MMImplicitLocalClass___init(self, p0, p1, init_table);
-  CHECKNEW_MMImplicitLocalClass(self, "inheritance::MMImplicitLocalClass::init for MMImplicitLocalClass");
-  return self;
+val_t NEW_ICheckInstance(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_ICheckInstance;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ICheckInstance(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ICheckInstance;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___ICheckInstance____stype(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMRefineAncestor[55] = {
-  {(bigint) 3275 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMRefineAncestor < Object: superclass typecheck marker */},
-  {(bigint) 131 /* 2: MMRefineAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 3275 /* 3: MMRefineAncestor < MMRefineAncestor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ICheckInstance_icode_base___ICheckInstance___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 289;
+  fra.me.meth = LOCATE_NEW_ICheckInstance_icode_base___ICheckInstance___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:289 */
+  fra.me.REG[2] = NEW_ICheckInstance();
+  INIT_ATTRIBUTES__ICheckInstance(fra.me.REG[2]);
+  icode_base___ICheckInstance___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ICheckInstance(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_IInitAttributes[67] = {
+  {(bigint) 2675 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IInitAttributes < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IInitAttributes < ICode: superclass typecheck marker */},
+  {(bigint) 2019 /* 4: IInitAttributes < ICode1: superclass typecheck marker */},
+  {(bigint) 2675 /* 5: IInitAttributes < IInitAttributes: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101538,14 +132857,9 @@ const classtable_elt_t VFT_MMRefineAncestor[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) static_type___MMAncestor___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMRefineAncestor < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IInitAttributes < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -101553,7 +132867,6 @@ const classtable_elt_t VFT_MMRefineAncestor[55] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -101561,54 +132874,129 @@ const classtable_elt_t VFT_MMRefineAncestor[55] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) inheritance___MMAncestor___add_in},
-  {(bigint) 1 /* 44: MMRefineAncestor < MMAncestor: superclass init_table position */},
-  {(bigint) static_type___MMAncestor___stype},
-  {(bigint) static_type___MMAncestor___stype__eq},
-  {(bigint) static_type___MMAncestor___inheriter},
-  {(bigint) static_type___MMAncestor___inheriter__eq},
-  {(bigint) static_type___MMAncestor___is_reffinement},
-  {(bigint) static_type___MMAncestor___is_specialisation},
-  {(bigint) inheritance___MMRefineAncestor___local_class},
-  {(bigint) static_type___MMAncestor___init},
-  {(bigint) 2 /* 53: MMRefineAncestor < MMRefineAncestor: superclass init_table position */},
-  {(bigint) inheritance___MMRefineAncestor___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IInitAttributes___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IInitAttributes___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IInitAttributes___inner_dup_with},
+  {(bigint) 1 /* 53: IInitAttributes < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode1___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IInitAttributes < ICode1: superclass init_table position */},
+  {(bigint) icode_base___ICode1___expr},
+  {(bigint) icode_base___ICode1___init},
+  {(bigint) 3 /* 64: IInitAttributes < IInitAttributes: superclass init_table position */},
+  {(bigint) icode_base___IInitAttributes___stype},
+  {(bigint) icode_base___IInitAttributes___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMRefineAncestor::_stype */
-/* 2: Attribute MMRefineAncestor::_inheriter */
-/* 3: Attribute MMRefineAncestor::_local_class */
-val_t NEW_MMRefineAncestor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_MMRefineAncestor;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMAncestor____stype(obj) =  NIT_NULL /*null*/;
-  ATTR_static_type___MMAncestor____inheriter(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IInitAttributes::_result */
+/* 3: Attribute IInitAttributes::_location */
+/* 4: Attribute IInitAttributes::_expr */
+/* 5: Attribute IInitAttributes::_stype */
+void INIT_ATTRIBUTES__IInitAttributes(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IInitAttributes;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMRefineAncestor(val_t self, char *from) {
-}
-val_t NEW_MMRefineAncestor_inheritance___MMRefineAncestor___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMRefineAncestor();
-  inheritance___MMRefineAncestor___init(self, p0, p1, init_table);
-  CHECKNEW_MMRefineAncestor(self, "inheritance::MMRefineAncestor::init for MMRefineAncestor");
-  return self;
+val_t NEW_IInitAttributes(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_IInitAttributes;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IInitAttributes(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IInitAttributes;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IInitAttributes____stype(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMSpecAncestor[55] = {
-  {(bigint) 3271 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMSpecAncestor < Object: superclass typecheck marker */},
-  {(bigint) 131 /* 2: MMSpecAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 3271 /* 3: MMSpecAncestor < MMSpecAncestor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_IInitAttributes_icode_base___IInitAttributes___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 301;
+  fra.me.meth = LOCATE_NEW_IInitAttributes_icode_base___IInitAttributes___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:301 */
+  fra.me.REG[2] = NEW_IInitAttributes();
+  INIT_ATTRIBUTES__IInitAttributes(fra.me.REG[2]);
+  icode_base___IInitAttributes___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IInitAttributes(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_IClosCall[73] = {
+  {(bigint) 2695 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IClosCall < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IClosCall < ICode: superclass typecheck marker */},
+  {(bigint) 2011 /* 4: IClosCall < ICodeN: superclass typecheck marker */},
+  {(bigint) 2695 /* 5: IClosCall < IClosCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101620,14 +133008,9 @@ const classtable_elt_t VFT_MMSpecAncestor[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) static_type___MMAncestor___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMSpecAncestor < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IClosCall < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -101635,7 +133018,6 @@ const classtable_elt_t VFT_MMSpecAncestor[55] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -101643,53 +133025,140 @@ const classtable_elt_t VFT_MMSpecAncestor[55] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) inheritance___MMAncestor___add_in},
-  {(bigint) 1 /* 44: MMSpecAncestor < MMAncestor: superclass init_table position */},
-  {(bigint) static_type___MMAncestor___stype},
-  {(bigint) static_type___MMAncestor___stype__eq},
-  {(bigint) static_type___MMAncestor___inheriter},
-  {(bigint) static_type___MMAncestor___inheriter__eq},
-  {(bigint) static_type___MMAncestor___is_reffinement},
-  {(bigint) static_type___MMAncestor___is_specialisation},
-  {(bigint) inheritance___MMSpecAncestor___local_class},
-  {(bigint) static_type___MMAncestor___init},
-  {(bigint) 2 /* 53: MMSpecAncestor < MMSpecAncestor: superclass init_table position */},
-  {(bigint) inheritance___MMSpecAncestor___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IClosCall___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICodeN___dump},
+  {(bigint) icode_dump___IClosCall___dump_intern},
+  {(bigint) icode_tools___IClosCall___dup_with},
+  {(bigint) icode_tools___IClosCall___inner_dup_with},
+  {(bigint) 1 /* 53: IClosCall < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) 0 /* 62: IClosCall < ICodeN: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___exprs},
+  {(bigint) icode_base___ICodeN___closure_defs},
+  {(bigint) icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode_base___ICodeN___init},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) 3 /* 68: IClosCall < IClosCall: superclass init_table position */},
+  {(bigint) icode_base___IClosCall___closure_decl},
+  {(bigint) icode_base___IClosCall___break_seq},
+  {(bigint) icode_base___IClosCall___break_seq__eq},
+  {(bigint) icode_base___IClosCall___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMSpecAncestor::_stype */
-/* 2: Attribute MMSpecAncestor::_inheriter */
-val_t NEW_MMSpecAncestor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_MMSpecAncestor;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMAncestor____stype(obj) =  NIT_NULL /*null*/;
-  ATTR_static_type___MMAncestor____inheriter(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IClosCall::_result */
+/* 3: Attribute IClosCall::_location */
+/* 4: Attribute IClosCall::_exprs */
+/* 5: Attribute IClosCall::_closure_defs */
+/* 6: Attribute IClosCall::_closure_decl */
+/* 7: Attribute IClosCall::_break_seq */
+void INIT_ATTRIBUTES__IClosCall(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IClosCall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:315 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___IClosCall____break_seq(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMSpecAncestor(val_t self, char *from) {
-}
-val_t NEW_MMSpecAncestor_inheritance___MMSpecAncestor___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMSpecAncestor();
-  inheritance___MMSpecAncestor___init(self, p0, p1, init_table);
-  CHECKNEW_MMSpecAncestor(self, "inheritance::MMSpecAncestor::init for MMSpecAncestor");
-  return self;
+val_t NEW_IClosCall(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_IClosCall;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IClosCall(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IClosCall;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IClosCall____closure_decl(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMDefaultAncestor[55] = {
-  {(bigint) 3291 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMDefaultAncestor < Object: superclass typecheck marker */},
-  {(bigint) 131 /* 2: MMDefaultAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 3291 /* 3: MMDefaultAncestor < MMDefaultAncestor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_IClosCall_icode_base___IClosCall___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 318;
+  fra.me.meth = LOCATE_NEW_IClosCall_icode_base___IClosCall___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:318 */
+  fra.me.REG[2] = NEW_IClosCall();
+  INIT_ATTRIBUTES__IClosCall(fra.me.REG[2]);
+  icode_base___IClosCall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IClosCall(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_INative[73] = {
+  {(bigint) 2659 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: INative < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: INative < ICode: superclass typecheck marker */},
+  {(bigint) 2011 /* 4: INative < ICodeN: superclass typecheck marker */},
+  {(bigint) 2659 /* 5: INative < INative: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101701,14 +133170,9 @@ const classtable_elt_t VFT_MMDefaultAncestor[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) static_type___MMAncestor___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMDefaultAncestor < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: INative < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -101716,7 +133180,6 @@ const classtable_elt_t VFT_MMDefaultAncestor[55] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -101724,53 +133187,146 @@ const classtable_elt_t VFT_MMDefaultAncestor[55] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) inheritance___MMAncestor___add_in},
-  {(bigint) 1 /* 44: MMDefaultAncestor < MMAncestor: superclass init_table position */},
-  {(bigint) static_type___MMAncestor___stype},
-  {(bigint) static_type___MMAncestor___stype__eq},
-  {(bigint) static_type___MMAncestor___inheriter},
-  {(bigint) static_type___MMAncestor___inheriter__eq},
-  {(bigint) static_type___MMAncestor___is_reffinement},
-  {(bigint) static_type___MMAncestor___is_specialisation},
-  {(bigint) inheritance___MMDefaultAncestor___local_class},
-  {(bigint) static_type___MMAncestor___init},
-  {(bigint) 2 /* 53: MMDefaultAncestor < MMDefaultAncestor: superclass init_table position */},
-  {(bigint) inheritance___MMDefaultAncestor___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___INative___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICodeN___dump},
+  {(bigint) icode_dump___INative___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___INative___inner_dup_with},
+  {(bigint) 1 /* 53: INative < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___INative___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) 0 /* 62: INative < ICodeN: superclass init_table position */},
+  {(bigint) icode_base___ICodeN___exprs},
+  {(bigint) icode_base___ICodeN___closure_defs},
+  {(bigint) icode_base___ICodeN___closure_defs__eq},
+  {(bigint) icode_base___ICodeN___init},
+  {(bigint) compiling_icode___INative___compile_extern_method_to_c},
+  {(bigint) compiling_icode___INative___compile_intern_method_to_c},
+  {(bigint) 3 /* 69: INative < INative: superclass init_table position */},
+  {(bigint) icode_base___INative___method},
+  {(bigint) icode_base___INative___init},
+  {(bigint) icode_base___INative___is_pure__eq},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMDefaultAncestor::_stype */
-/* 2: Attribute MMDefaultAncestor::_inheriter */
-val_t NEW_MMDefaultAncestor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_MMDefaultAncestor;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMAncestor____stype(obj) =  NIT_NULL /*null*/;
-  ATTR_static_type___MMAncestor____inheriter(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMDefaultAncestor(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute INative::_result */
+/* 3: Attribute INative::_location */
+/* 4: Attribute INative::_exprs */
+/* 5: Attribute INative::_closure_defs */
+/* 6: Attribute INative::_method */
+/* 7: Attribute INative::_is_pure */
+void INIT_ATTRIBUTES__INative(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__INative;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:339 */
+  REGB0 = TAG_Bool(false);
+  ATTR_icode_base___INative____is_pure(fra.me.REG[0]) = REGB0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMDefaultAncestor_inheritance___MMDefaultAncestor___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMDefaultAncestor();
-  inheritance___MMDefaultAncestor___init(self, p0, p1, init_table);
-  CHECKNEW_MMDefaultAncestor(self, "inheritance::MMDefaultAncestor::init for MMDefaultAncestor");
-  return self;
+val_t NEW_INative(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_INative;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_INative(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_INative;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___INative____method(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_method", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___INative____is_pure(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_pure", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMTypeFormal[70] = {
-  {(bigint) 3255 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMTypeFormal < Object: superclass typecheck marker */},
-  {(bigint) 91 /* 2: MMTypeFormal < MMType: superclass typecheck marker */},
-  {(bigint) 3255 /* 3: MMTypeFormal < MMTypeFormal: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_INative_icode_base___INative___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 333;
+  fra.me.meth = LOCATE_NEW_INative_icode_base___INative___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:333 */
+  fra.me.REG[2] = NEW_INative();
+  INIT_ATTRIBUTES__INative(fra.me.REG[2]);
+  icode_base___INative___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_INative(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_IIntValue[65] = {
+  {(bigint) 2671 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IIntValue < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IIntValue < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: IIntValue < ICode0: superclass typecheck marker */},
+  {(bigint) 2671 /* 5: IIntValue < IIntValue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101782,14 +133338,9 @@ const classtable_elt_t VFT_MMTypeFormal[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) type_formal___MMTypeFormal___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMTypeFormal < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IIntValue < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -101797,7 +133348,6 @@ const classtable_elt_t VFT_MMTypeFormal[70] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -101805,68 +133355,119 @@ const classtable_elt_t VFT_MMTypeFormal[70] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMType___compile_cast},
-  {(bigint) compiling_methods___MMType___compile_type_check},
-  {(bigint) compiling_methods___MMType___compile_notnull_check},
-  {(bigint) compiling_base___MMType___cname},
-  {(bigint) compiling_base___MMType___default_cvalue},
-  {(bigint) compiling_base___MMType___boxtype},
-  {(bigint) compiling_base___MMType___unboxtype},
-  {(bigint) genericity___MMTypeFormal___is_generic},
-  {(bigint) type_formal___MMTypeFormal___direct_type},
-  {(bigint) 1 /* 52: MMTypeFormal < MMType: superclass init_table position */},
-  {(bigint) static_type___MMType___module},
-  {(bigint) type_formal___MMTypeFormal___local_class},
-  {(bigint) type_formal___MMTypeFormal___is_valid},
-  {(bigint) type_formal___MMTypeFormal_____l},
-  {(bigint) type_formal___MMTypeFormal___is_supertype},
-  {(bigint) static_type___MMType___for_module},
-  {(bigint) static_type___MMType___adapt_to},
-  {(bigint) static_type___MMType___upcast_for},
-  {(bigint) static_type___MMType___not_for_self},
-  {(bigint) type_formal___MMTypeFormal___is_nullable},
-  {(bigint) static_type___MMType___as_nullable},
-  {(bigint) static_type___MMType___as_notnull},
-  {(bigint) static_type___MMType___init},
-  {(bigint) 2 /* 66: MMTypeFormal < MMTypeFormal: superclass init_table position */},
-  {(bigint) type_formal___MMTypeFormal___name},
-  {(bigint) type_formal___MMTypeFormal___bound},
-  {(bigint) type_formal___MMTypeFormal___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IIntValue___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IIntValue___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IIntValue___inner_dup_with},
+  {(bigint) 1 /* 53: IIntValue < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___IIntValue___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IIntValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 62: IIntValue < IIntValue: superclass init_table position */},
+  {(bigint) icode_base___IIntValue___value},
+  {(bigint) icode_base___IIntValue___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMTypeFormal::_as_nullable_cache */
-/* 2: Attribute MMTypeFormal::_name */
-/* 3: Attribute MMTypeFormal::_bound */
-val_t NEW_MMTypeFormal(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_MMTypeFormal;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMType____as_nullable_cache(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMTypeFormal(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute IIntValue::_result */
+/* 3: Attribute IIntValue::_location */
+/* 4: Attribute IIntValue::_value */
+void INIT_ATTRIBUTES__IIntValue(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IIntValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeFormal_type_formal___MMTypeFormal___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMTypeFormal();
-  type_formal___MMTypeFormal___init(self, p0, p1, init_table);
-  CHECKNEW_MMTypeFormal(self, "type_formal::MMTypeFormal::init for MMTypeFormal");
-  return self;
+val_t NEW_IIntValue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_IIntValue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IIntValue(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IIntValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IIntValue____value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMTypeGeneric[75] = {
-  {(bigint) 3911 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMTypeGeneric < Object: superclass typecheck marker */},
-  {(bigint) 91 /* 2: MMTypeGeneric < MMType: superclass typecheck marker */},
-  {(bigint) 3259 /* 3: MMTypeGeneric < MMTypeClass: superclass typecheck marker */},
-  {(bigint) 3911 /* 4: MMTypeGeneric < MMTypeGeneric: superclass typecheck marker */},
+val_t NEW_IIntValue_icode_base___IIntValue___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 348;
+  fra.me.meth = LOCATE_NEW_IIntValue_icode_base___IIntValue___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:348 */
+  fra.me.REG[1] = NEW_IIntValue();
+  INIT_ATTRIBUTES__IIntValue(fra.me.REG[1]);
+  icode_base___IIntValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IIntValue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_IBoolValue[65] = {
+  {(bigint) 2707 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IBoolValue < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IBoolValue < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: IBoolValue < ICode0: superclass typecheck marker */},
+  {(bigint) 2707 /* 5: IBoolValue < IBoolValue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101878,14 +133479,9 @@ const classtable_elt_t VFT_MMTypeGeneric[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) genericity___MMTypeGeneric___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMTypeGeneric < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IBoolValue < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -101893,7 +133489,6 @@ const classtable_elt_t VFT_MMTypeGeneric[75] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -101901,73 +133496,119 @@ const classtable_elt_t VFT_MMTypeGeneric[75] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMType___compile_cast},
-  {(bigint) compiling_methods___MMType___compile_type_check},
-  {(bigint) compiling_methods___MMType___compile_notnull_check},
-  {(bigint) compiling_base___MMType___cname},
-  {(bigint) compiling_base___MMType___default_cvalue},
-  {(bigint) compiling_base___MMType___boxtype},
-  {(bigint) compiling_base___MMType___unboxtype},
-  {(bigint) genericity___MMTypeGeneric___is_generic},
-  {(bigint) type_formal___MMType___direct_type},
-  {(bigint) 1 /* 52: MMTypeGeneric < MMType: superclass init_table position */},
-  {(bigint) static_type___MMTypeClass___module},
-  {(bigint) static_type___MMTypeClass___local_class},
-  {(bigint) static_type___MMType___is_valid},
-  {(bigint) static_type___MMTypeClass_____l},
-  {(bigint) genericity___MMTypeGeneric___is_supertype},
-  {(bigint) genericity___MMTypeGeneric___for_module},
-  {(bigint) genericity___MMTypeGeneric___adapt_to},
-  {(bigint) genericity___MMTypeGeneric___upcast_for},
-  {(bigint) static_type___MMType___not_for_self},
-  {(bigint) static_type___MMType___is_nullable},
-  {(bigint) static_type___MMType___as_nullable},
-  {(bigint) static_type___MMType___as_notnull},
-  {(bigint) static_type___MMType___init},
-  {(bigint) 2 /* 66: MMTypeGeneric < MMTypeClass: superclass init_table position */},
-  {(bigint) static_type___MMTypeClass___init},
-  {(bigint) 3 /* 68: MMTypeGeneric < MMTypeGeneric: superclass init_table position */},
-  {(bigint) genericity___MMTypeGeneric___params},
-  {(bigint) static_type___MMTypeClass___upcast_for},
-  {(bigint) genericity___MMTypeGeneric___params_equals},
-  {(bigint) static_type___MMTypeClass___to_s},
-  {(bigint) genericity___MMTypeGeneric___is_subtype},
-  {(bigint) genericity___MMTypeGeneric___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IBoolValue___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IBoolValue___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IBoolValue___inner_dup_with},
+  {(bigint) 1 /* 53: IBoolValue < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___IBoolValue___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IBoolValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 62: IBoolValue < IBoolValue: superclass init_table position */},
+  {(bigint) icode_base___IBoolValue___value},
+  {(bigint) icode_base___IBoolValue___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMTypeGeneric::_as_nullable_cache */
-/* 2: Attribute MMTypeGeneric::_local_class */
-/* 3: Attribute MMTypeGeneric::_params */
-val_t NEW_MMTypeGeneric(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_MMTypeGeneric;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMType____as_nullable_cache(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IBoolValue::_result */
+/* 3: Attribute IBoolValue::_location */
+/* 4: Attribute IBoolValue::_value */
+void INIT_ATTRIBUTES__IBoolValue(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IBoolValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMTypeGeneric(val_t self, char *from) {
+val_t NEW_IBoolValue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_IBoolValue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IBoolValue(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IBoolValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IBoolValue____value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeGeneric_genericity___MMTypeGeneric___init(val_t p0, val_t p1) {
+val_t NEW_IBoolValue_icode_base___IBoolValue___init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_MMTypeGeneric();
-  genericity___MMTypeGeneric___init(self, p0, p1, init_table);
-  CHECKNEW_MMTypeGeneric(self, "genericity::MMTypeGeneric::init for MMTypeGeneric");
-  return self;
-}
-const classtable_elt_t VFT_MMTypeFormalParameter[76] = {
-  {(bigint) 3915 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMTypeFormalParameter < Object: superclass typecheck marker */},
-  {(bigint) 91 /* 2: MMTypeFormalParameter < MMType: superclass typecheck marker */},
-  {(bigint) 3255 /* 3: MMTypeFormalParameter < MMTypeFormal: superclass typecheck marker */},
-  {(bigint) 3915 /* 4: MMTypeFormalParameter < MMTypeFormalParameter: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 359;
+  fra.me.meth = LOCATE_NEW_IBoolValue_icode_base___IBoolValue___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  /* ./icode//icode_base.nit:359 */
+  fra.me.REG[0] = NEW_IBoolValue();
+  INIT_ATTRIBUTES__IBoolValue(fra.me.REG[0]);
+  icode_base___IBoolValue___init(fra.me.REG[0], REGB0, init_table);
+  CHECKNEW_IBoolValue(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_IStringValue[65] = {
+  {(bigint) 2635 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IStringValue < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IStringValue < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: IStringValue < ICode0: superclass typecheck marker */},
+  {(bigint) 2635 /* 5: IStringValue < IStringValue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101979,14 +133620,9 @@ const classtable_elt_t VFT_MMTypeFormalParameter[76] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) type_formal___MMTypeFormal___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMTypeFormalParameter < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IStringValue < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -101994,7 +133630,6 @@ const classtable_elt_t VFT_MMTypeFormalParameter[76] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -102002,83 +133637,119 @@ const classtable_elt_t VFT_MMTypeFormalParameter[76] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMType___compile_cast},
-  {(bigint) compiling_methods___MMType___compile_type_check},
-  {(bigint) compiling_methods___MMType___compile_notnull_check},
-  {(bigint) compiling_base___MMType___cname},
-  {(bigint) compiling_base___MMType___default_cvalue},
-  {(bigint) compiling_base___MMType___boxtype},
-  {(bigint) compiling_base___MMType___unboxtype},
-  {(bigint) genericity___MMTypeFormal___is_generic},
-  {(bigint) type_formal___MMTypeFormal___direct_type},
-  {(bigint) 1 /* 52: MMTypeFormalParameter < MMType: superclass init_table position */},
-  {(bigint) genericity___MMTypeFormalParameter___module},
-  {(bigint) type_formal___MMTypeFormal___local_class},
-  {(bigint) type_formal___MMTypeFormal___is_valid},
-  {(bigint) type_formal___MMTypeFormal_____l},
-  {(bigint) type_formal___MMTypeFormal___is_supertype},
-  {(bigint) genericity___MMTypeFormalParameter___for_module},
-  {(bigint) genericity___MMTypeFormalParameter___adapt_to},
-  {(bigint) genericity___MMTypeFormalParameter___upcast_for},
-  {(bigint) static_type___MMType___not_for_self},
-  {(bigint) type_formal___MMTypeFormal___is_nullable},
-  {(bigint) static_type___MMType___as_nullable},
-  {(bigint) static_type___MMType___as_notnull},
-  {(bigint) static_type___MMType___init},
-  {(bigint) 2 /* 66: MMTypeFormalParameter < MMTypeFormal: superclass init_table position */},
-  {(bigint) type_formal___MMTypeFormal___name},
-  {(bigint) type_formal___MMTypeFormal___bound},
-  {(bigint) type_formal___MMTypeFormal___init},
-  {(bigint) 3 /* 70: MMTypeFormalParameter < MMTypeFormalParameter: superclass init_table position */},
-  {(bigint) genericity___MMTypeFormalParameter___def_class},
-  {(bigint) genericity___MMTypeFormalParameter___position},
-  {(bigint) genericity___MMTypeFormalParameter___bound__eq},
-  {(bigint) genericity___MMTypeFormalParameter___with_bound},
-  {(bigint) genericity___MMTypeFormalParameter___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IStringValue___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IStringValue___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IStringValue___inner_dup_with},
+  {(bigint) 1 /* 53: IStringValue < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___IStringValue___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IStringValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 62: IStringValue < IStringValue: superclass init_table position */},
+  {(bigint) icode_base___IStringValue___value},
+  {(bigint) icode_base___IStringValue___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMTypeFormalParameter::_as_nullable_cache */
-/* 2: Attribute MMTypeFormalParameter::_name */
-/* 3: Attribute MMTypeFormalParameter::_bound */
-/* 4: Attribute MMTypeFormalParameter::_def_class */
-/* 5: Attribute MMTypeFormalParameter::_position */
-val_t NEW_MMTypeFormalParameter(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_MMTypeFormalParameter;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMType____as_nullable_cache(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IStringValue::_result */
+/* 3: Attribute IStringValue::_location */
+/* 4: Attribute IStringValue::_value */
+void INIT_ATTRIBUTES__IStringValue(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IStringValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMTypeFormalParameter(val_t self, char *from) {
-}
-val_t NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___with_bound(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_MMTypeFormalParameter();
-  genericity___MMTypeFormalParameter___with_bound(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_MMTypeFormalParameter(self, "genericity::MMTypeFormalParameter::with_bound for MMTypeFormalParameter");
-  return self;
+val_t NEW_IStringValue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_IStringValue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IStringValue(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IStringValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IStringValue____value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeFormalParameter_genericity___MMTypeFormalParameter___init(val_t p0, val_t p1, val_t p2) {
+val_t NEW_IStringValue_icode_base___IStringValue___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_MMTypeFormalParameter();
-  genericity___MMTypeFormalParameter___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMTypeFormalParameter(self, "genericity::MMTypeFormalParameter::init for MMTypeFormalParameter");
-  return self;
-}
-const classtable_elt_t VFT_MMTypeProperty[68] = {
-  {(bigint) 3247 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMTypeProperty < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMTypeProperty < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 3247 /* 3: MMTypeProperty < MMTypeProperty: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 370;
+  fra.me.meth = LOCATE_NEW_IStringValue_icode_base___IStringValue___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:370 */
+  fra.me.REG[1] = NEW_IStringValue();
+  INIT_ATTRIBUTES__IStringValue(fra.me.REG[1]);
+  icode_base___IStringValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IStringValue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_IFloatValue[65] = {
+  {(bigint) 2687 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IFloatValue < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IFloatValue < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: IFloatValue < ICode0: superclass typecheck marker */},
+  {(bigint) 2687 /* 5: IFloatValue < IFloatValue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102090,14 +133761,9 @@ const classtable_elt_t VFT_MMTypeProperty[68] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMTypeProperty < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IFloatValue < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -102105,7 +133771,6 @@ const classtable_elt_t VFT_MMTypeProperty[68] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -102113,74 +133778,119 @@ const classtable_elt_t VFT_MMTypeProperty[68] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMLocalProperty___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax_base___MMLocalProperty___node},
-  {(bigint) syntax_base___MMLocalProperty___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMTypeProperty < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
-  {(bigint) 2 /* 65: MMTypeProperty < MMTypeProperty: superclass init_table position */},
-  {(bigint) virtualtype___MMTypeProperty___stype_for},
-  {(bigint) virtualtype___MMTypeProperty___real_stype_for},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IFloatValue___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IFloatValue___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IFloatValue___inner_dup_with},
+  {(bigint) 1 /* 53: IFloatValue < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___IFloatValue___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IFloatValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 62: IFloatValue < IFloatValue: superclass init_table position */},
+  {(bigint) icode_base___IFloatValue___value},
+  {(bigint) icode_base___IFloatValue___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMTypeProperty::_cname_cache */
-/* 2: Attribute MMTypeProperty::_signature */
-/* 3: Attribute MMTypeProperty::_signatures_cache */
-/* 4: Attribute MMTypeProperty::_name */
-/* 5: Attribute MMTypeProperty::_local_class */
-/* 6: Attribute MMTypeProperty::_global */
-/* 7: Attribute MMTypeProperty::_prhe */
-/* 8: Attribute MMTypeProperty::_need_super */
-/* 9: Attribute MMTypeProperty::_stypes_cache */
-val_t NEW_MMTypeProperty(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_MMTypeProperty;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  ATTR_virtualtype___MMTypeProperty____stypes_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMVirtualType]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMTypeProperty(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute IFloatValue::_result */
+/* 3: Attribute IFloatValue::_location */
+/* 4: Attribute IFloatValue::_value */
+void INIT_ATTRIBUTES__IFloatValue(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IFloatValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMTypeProperty_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMTypeProperty();
-  abstractmetamodel___MMLocalProperty___init(self, p0, p1, init_table);
-  CHECKNEW_MMTypeProperty(self, "abstractmetamodel::MMLocalProperty::init for MMTypeProperty");
-  return self;
+val_t NEW_IFloatValue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_IFloatValue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IFloatValue(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IFloatValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IFloatValue____value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMVirtualType[74] = {
-  {(bigint) 3903 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMVirtualType < Object: superclass typecheck marker */},
-  {(bigint) 91 /* 2: MMVirtualType < MMType: superclass typecheck marker */},
-  {(bigint) 3255 /* 3: MMVirtualType < MMTypeFormal: superclass typecheck marker */},
-  {(bigint) 3903 /* 4: MMVirtualType < MMVirtualType: superclass typecheck marker */},
+val_t NEW_IFloatValue_icode_base___IFloatValue___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 381;
+  fra.me.meth = LOCATE_NEW_IFloatValue_icode_base___IFloatValue___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:381 */
+  fra.me.REG[1] = NEW_IFloatValue();
+  INIT_ATTRIBUTES__IFloatValue(fra.me.REG[1]);
+  icode_base___IFloatValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IFloatValue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ICharValue[65] = {
+  {(bigint) 2703 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ICharValue < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: ICharValue < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: ICharValue < ICode0: superclass typecheck marker */},
+  {(bigint) 2703 /* 5: ICharValue < ICharValue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102192,14 +133902,9 @@ const classtable_elt_t VFT_MMVirtualType[74] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) type_formal___MMTypeFormal___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMVirtualType < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ICharValue < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -102207,7 +133912,6 @@ const classtable_elt_t VFT_MMVirtualType[74] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -102215,74 +133919,119 @@ const classtable_elt_t VFT_MMVirtualType[74] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMType___compile_cast},
-  {(bigint) compiling_methods___MMType___compile_type_check},
-  {(bigint) compiling_methods___MMType___compile_notnull_check},
-  {(bigint) compiling_base___MMType___cname},
-  {(bigint) compiling_base___MMType___default_cvalue},
-  {(bigint) compiling_base___MMType___boxtype},
-  {(bigint) compiling_base___MMType___unboxtype},
-  {(bigint) genericity___MMTypeFormal___is_generic},
-  {(bigint) type_formal___MMTypeFormal___direct_type},
-  {(bigint) 1 /* 52: MMVirtualType < MMType: superclass init_table position */},
-  {(bigint) virtualtype___MMVirtualType___module},
-  {(bigint) type_formal___MMTypeFormal___local_class},
-  {(bigint) type_formal___MMTypeFormal___is_valid},
-  {(bigint) type_formal___MMTypeFormal_____l},
-  {(bigint) type_formal___MMTypeFormal___is_supertype},
-  {(bigint) virtualtype___MMVirtualType___for_module},
-  {(bigint) virtualtype___MMVirtualType___adapt_to},
-  {(bigint) static_type___MMType___upcast_for},
-  {(bigint) virtualtype___MMVirtualType___not_for_self},
-  {(bigint) type_formal___MMTypeFormal___is_nullable},
-  {(bigint) static_type___MMType___as_nullable},
-  {(bigint) static_type___MMType___as_notnull},
-  {(bigint) static_type___MMType___init},
-  {(bigint) 2 /* 66: MMVirtualType < MMTypeFormal: superclass init_table position */},
-  {(bigint) type_formal___MMTypeFormal___name},
-  {(bigint) type_formal___MMTypeFormal___bound},
-  {(bigint) type_formal___MMTypeFormal___init},
-  {(bigint) 3 /* 70: MMVirtualType < MMVirtualType: superclass init_table position */},
-  {(bigint) virtualtype___MMVirtualType___property},
-  {(bigint) virtualtype___MMVirtualType___recv},
-  {(bigint) virtualtype___MMVirtualType___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___ICharValue___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___ICharValue___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___ICharValue___inner_dup_with},
+  {(bigint) 1 /* 53: ICharValue < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICharValue___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: ICharValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 62: ICharValue < ICharValue: superclass init_table position */},
+  {(bigint) icode_base___ICharValue___value},
+  {(bigint) icode_base___ICharValue___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMVirtualType::_as_nullable_cache */
-/* 2: Attribute MMVirtualType::_name */
-/* 3: Attribute MMVirtualType::_bound */
-/* 4: Attribute MMVirtualType::_property */
-/* 5: Attribute MMVirtualType::_recv */
-val_t NEW_MMVirtualType(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_MMVirtualType;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMType____as_nullable_cache(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ICharValue::_result */
+/* 3: Attribute ICharValue::_location */
+/* 4: Attribute ICharValue::_value */
+void INIT_ATTRIBUTES__ICharValue(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ICharValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMVirtualType(val_t self, char *from) {
+val_t NEW_ICharValue(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_ICharValue;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ICharValue(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ICharValue;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___ICharValue____value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMVirtualType_virtualtype___MMVirtualType___init(val_t p0, val_t p1) {
+val_t NEW_ICharValue_icode_base___ICharValue___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_MMVirtualType();
-  virtualtype___MMVirtualType___init(self, p0, p1, init_table);
-  CHECKNEW_MMVirtualType(self, "virtualtype::MMVirtualType::init for MMVirtualType");
-  return self;
-}
-const classtable_elt_t VFT_Option[59] = {
-  {(bigint) 71 /* 0: Identity */},
-  {(bigint) 3 /* 1: Option < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 2: Option < Option: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 392;
+  fra.me.meth = LOCATE_NEW_ICharValue_icode_base___ICharValue___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:392 */
+  fra.me.REG[1] = NEW_ICharValue();
+  INIT_ATTRIBUTES__ICharValue(fra.me.REG[1]);
+  icode_base___ICharValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ICharValue(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_IMove[66] = {
+  {(bigint) 2663 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IMove < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IMove < ICode: superclass typecheck marker */},
+  {(bigint) 2019 /* 4: IMove < ICode1: superclass typecheck marker */},
+  {(bigint) 2663 /* 5: IMove < IMove: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102294,14 +134043,9 @@ const classtable_elt_t VFT_Option[59] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) opts___Option___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Option < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IMove < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -102309,7 +134053,6 @@ const classtable_elt_t VFT_Option[59] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -102317,59 +134060,122 @@ const classtable_elt_t VFT_Option[59] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: Option < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) opts___Option___helptext},
-  {(bigint) opts___Option___mandatory},
-  {(bigint) opts___Option___mandatory__eq},
-  {(bigint) opts___Option___context},
-  {(bigint) opts___Option___context__eq},
-  {(bigint) opts___Option___value},
-  {(bigint) opts___Option___value__eq},
-  {(bigint) opts___Option___default_value},
-  {(bigint) opts___Option___default_value__eq},
-  {(bigint) opts___Option___init_opt},
-  {(bigint) opts___Option___add_aliases},
-  {(bigint) opts___Option___pretty},
-  {(bigint) opts___Option___pretty_default},
-  {(bigint) opts___Option___read_param},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IMove___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IMove___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IMove___inner_dup_with},
+  {(bigint) 1 /* 53: IMove < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode1___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___IMove___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IMove < ICode1: superclass init_table position */},
+  {(bigint) icode_base___ICode1___expr},
+  {(bigint) icode_base___ICode1___init},
+  {(bigint) 3 /* 64: IMove < IMove: superclass init_table position */},
+  {(bigint) icode_base___IMove___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute Option::_names */
-/* 2: Attribute Option::_helptext */
-/* 3: Attribute Option::_mandatory */
-/* 4: Attribute Option::_context */
-/* 5: Attribute Option::_value */
-/* 6: Attribute Option::_default_value */
-val_t NEW_Option(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_Option;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Option(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute IMove::_result */
+/* 3: Attribute IMove::_location */
+/* 4: Attribute IMove::_expr */
+void INIT_ATTRIBUTES__IMove(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IMove;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_Option_opts___Option___init_opt(val_t p0, val_t p1, val_t p2) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Option();
-  opts___Option___init_opt(self, p0, p1, p2, init_table);
-  CHECKNEW_Option(self, "opts::Option::init_opt for Option");
-  return self;
+val_t NEW_IMove(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_IMove;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IMove(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IMove;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_OptionText[61] = {
-  {(bigint) 3207 /* 0: Identity */},
-  {(bigint) 3 /* 1: OptionText < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 2: OptionText < Option: superclass typecheck marker */},
-  {(bigint) 3207 /* 3: OptionText < OptionText: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_IMove_icode_base___IMove___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 402;
+  fra.me.meth = LOCATE_NEW_IMove_icode_base___IMove___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:402 */
+  fra.me.REG[2] = NEW_IMove();
+  INIT_ATTRIBUTES__IMove(fra.me.REG[2]);
+  icode_base___IMove___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IMove(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_IAttrRead[67] = {
+  {(bigint) 2715 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IAttrRead < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IAttrRead < ICode: superclass typecheck marker */},
+  {(bigint) 2019 /* 4: IAttrRead < ICode1: superclass typecheck marker */},
+  {(bigint) 2715 /* 5: IAttrRead < IAttrRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102381,14 +134187,9 @@ const classtable_elt_t VFT_OptionText[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) opts___OptionText___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OptionText < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IAttrRead < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -102396,7 +134197,6 @@ const classtable_elt_t VFT_OptionText[61] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -102404,61 +134204,129 @@ const classtable_elt_t VFT_OptionText[61] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: OptionText < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) opts___Option___helptext},
-  {(bigint) opts___Option___mandatory},
-  {(bigint) opts___Option___mandatory__eq},
-  {(bigint) opts___Option___context},
-  {(bigint) opts___Option___context__eq},
-  {(bigint) opts___Option___value},
-  {(bigint) opts___Option___value__eq},
-  {(bigint) opts___Option___default_value},
-  {(bigint) opts___Option___default_value__eq},
-  {(bigint) opts___Option___init_opt},
-  {(bigint) opts___Option___add_aliases},
-  {(bigint) opts___OptionText___pretty},
-  {(bigint) opts___Option___pretty_default},
-  {(bigint) opts___Option___read_param},
-  {(bigint) 2 /* 59: OptionText < OptionText: superclass init_table position */},
-  {(bigint) opts___OptionText___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IAttrRead___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IAttrRead___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IAttrRead___inner_dup_with},
+  {(bigint) 1 /* 53: IAttrRead < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode1___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___IAttrRead___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IAttrRead < ICode1: superclass init_table position */},
+  {(bigint) icode_base___ICode1___expr},
+  {(bigint) icode_base___ICode1___init},
+  {(bigint) 3 /* 64: IAttrRead < IAttrRead: superclass init_table position */},
+  {(bigint) icode_base___IAttrRead___property},
+  {(bigint) icode_base___IAttrRead___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute OptionText::_names */
-/* 2: Attribute OptionText::_helptext */
-/* 3: Attribute OptionText::_mandatory */
-/* 4: Attribute OptionText::_context */
-/* 5: Attribute OptionText::_value */
-/* 6: Attribute OptionText::_default_value */
-val_t NEW_OptionText(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_OptionText;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IAttrRead::_result */
+/* 3: Attribute IAttrRead::_location */
+/* 4: Attribute IAttrRead::_expr */
+/* 5: Attribute IAttrRead::_property */
+void INIT_ATTRIBUTES__IAttrRead(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IAttrRead;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_OptionText(val_t self, char *from) {
-}
-val_t NEW_OptionText_opts___OptionText___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_OptionText();
-  opts___OptionText___init(self, p0, init_table);
-  CHECKNEW_OptionText(self, "opts::OptionText::init for OptionText");
-  return self;
+val_t NEW_IAttrRead(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_IAttrRead;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IAttrRead(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IAttrRead;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IAttrRead____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_OptionBool[61] = {
-  {(bigint) 3219 /* 0: Identity */},
-  {(bigint) 3 /* 1: OptionBool < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 2: OptionBool < Option: superclass typecheck marker */},
-  {(bigint) 3219 /* 3: OptionBool < OptionBool: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_IAttrRead_icode_base___IAttrRead___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 418;
+  fra.me.meth = LOCATE_NEW_IAttrRead_icode_base___IAttrRead___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:418 */
+  fra.me.REG[2] = NEW_IAttrRead();
+  INIT_ATTRIBUTES__IAttrRead(fra.me.REG[2]);
+  icode_base___IAttrRead___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IAttrRead(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_IAttrWrite[68] = {
+  {(bigint) 2711 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IAttrWrite < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IAttrWrite < ICode: superclass typecheck marker */},
+  {(bigint) 2015 /* 4: IAttrWrite < ICode2: superclass typecheck marker */},
+  {(bigint) 2711 /* 5: IAttrWrite < IAttrWrite: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102470,14 +134338,9 @@ const classtable_elt_t VFT_OptionBool[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) opts___Option___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OptionBool < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IAttrWrite < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -102485,7 +134348,6 @@ const classtable_elt_t VFT_OptionBool[61] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -102493,61 +134355,138 @@ const classtable_elt_t VFT_OptionBool[61] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: OptionBool < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) opts___Option___helptext},
-  {(bigint) opts___Option___mandatory},
-  {(bigint) opts___Option___mandatory__eq},
-  {(bigint) opts___Option___context},
-  {(bigint) opts___Option___context__eq},
-  {(bigint) opts___Option___value},
-  {(bigint) opts___Option___value__eq},
-  {(bigint) opts___Option___default_value},
-  {(bigint) opts___Option___default_value__eq},
-  {(bigint) opts___Option___init_opt},
-  {(bigint) opts___Option___add_aliases},
-  {(bigint) opts___Option___pretty},
-  {(bigint) opts___Option___pretty_default},
-  {(bigint) opts___OptionBool___read_param},
-  {(bigint) 2 /* 59: OptionBool < OptionBool: superclass init_table position */},
-  {(bigint) opts___OptionBool___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IAttrWrite___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IAttrWrite___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IAttrWrite___inner_dup_with},
+  {(bigint) 1 /* 53: IAttrWrite < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode2___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IAttrWrite < ICode2: superclass init_table position */},
+  {(bigint) icode_base___ICode2___expr1},
+  {(bigint) icode_base___ICode2___expr2},
+  {(bigint) icode_base___ICode2___init},
+  {(bigint) 3 /* 65: IAttrWrite < IAttrWrite: superclass init_table position */},
+  {(bigint) icode_base___IAttrWrite___property},
+  {(bigint) icode_base___IAttrWrite___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute OptionBool::_names */
-/* 2: Attribute OptionBool::_helptext */
-/* 3: Attribute OptionBool::_mandatory */
-/* 4: Attribute OptionBool::_context */
-/* 5: Attribute OptionBool::_value */
-/* 6: Attribute OptionBool::_default_value */
-val_t NEW_OptionBool(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute IAttrWrite::_result */
+/* 3: Attribute IAttrWrite::_location */
+/* 4: Attribute IAttrWrite::_expr1 */
+/* 5: Attribute IAttrWrite::_expr2 */
+/* 6: Attribute IAttrWrite::_property */
+void INIT_ATTRIBUTES__IAttrWrite(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IAttrWrite;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IAttrWrite(void)
+{
   obj_t obj;
   obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_OptionBool;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_OptionBool(val_t self, char *from) {
-}
-val_t NEW_OptionBool_opts___OptionBool___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_OptionBool();
-  opts___OptionBool___init(self, p0, p1, init_table);
-  CHECKNEW_OptionBool(self, "opts::OptionBool::init for OptionBool");
-  return self;
+  obj->vft = (classtable_elt_t*)VFT_IAttrWrite;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IAttrWrite(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IAttrWrite;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IAttrWrite____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode2____expr1(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr1", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode2____expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr2", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_OptionCount[61] = {
-  {(bigint) 3215 /* 0: Identity */},
-  {(bigint) 3 /* 1: OptionCount < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 2: OptionCount < Option: superclass typecheck marker */},
-  {(bigint) 3215 /* 3: OptionCount < OptionCount: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_IAttrWrite_icode_base___IAttrWrite___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 434;
+  fra.me.meth = LOCATE_NEW_IAttrWrite_icode_base___IAttrWrite___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./icode//icode_base.nit:434 */
+  fra.me.REG[3] = NEW_IAttrWrite();
+  INIT_ATTRIBUTES__IAttrWrite(fra.me.REG[3]);
+  icode_base___IAttrWrite___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_IAttrWrite(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_IAttrIsset[67] = {
+  {(bigint) 2719 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IAttrIsset < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IAttrIsset < ICode: superclass typecheck marker */},
+  {(bigint) 2019 /* 4: IAttrIsset < ICode1: superclass typecheck marker */},
+  {(bigint) 2719 /* 5: IAttrIsset < IAttrIsset: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102559,14 +134498,9 @@ const classtable_elt_t VFT_OptionCount[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) opts___Option___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OptionCount < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IAttrIsset < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -102574,7 +134508,6 @@ const classtable_elt_t VFT_OptionCount[61] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -102582,61 +134515,129 @@ const classtable_elt_t VFT_OptionCount[61] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: OptionCount < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) opts___Option___helptext},
-  {(bigint) opts___Option___mandatory},
-  {(bigint) opts___Option___mandatory__eq},
-  {(bigint) opts___Option___context},
-  {(bigint) opts___Option___context__eq},
-  {(bigint) opts___Option___value},
-  {(bigint) opts___Option___value__eq},
-  {(bigint) opts___Option___default_value},
-  {(bigint) opts___Option___default_value__eq},
-  {(bigint) opts___Option___init_opt},
-  {(bigint) opts___Option___add_aliases},
-  {(bigint) opts___Option___pretty},
-  {(bigint) opts___Option___pretty_default},
-  {(bigint) opts___OptionCount___read_param},
-  {(bigint) 2 /* 59: OptionCount < OptionCount: superclass init_table position */},
-  {(bigint) opts___OptionCount___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IAttrIsset___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IAttrIsset___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IAttrIsset___inner_dup_with},
+  {(bigint) 1 /* 53: IAttrIsset < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode1___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___IAttrIsset___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IAttrIsset < ICode1: superclass init_table position */},
+  {(bigint) icode_base___ICode1___expr},
+  {(bigint) icode_base___ICode1___init},
+  {(bigint) 3 /* 64: IAttrIsset < IAttrIsset: superclass init_table position */},
+  {(bigint) icode_base___IAttrIsset___property},
+  {(bigint) icode_base___IAttrIsset___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute OptionCount::_names */
-/* 2: Attribute OptionCount::_helptext */
-/* 3: Attribute OptionCount::_mandatory */
-/* 4: Attribute OptionCount::_context */
-/* 5: Attribute OptionCount::_value */
-/* 6: Attribute OptionCount::_default_value */
-val_t NEW_OptionCount(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_OptionCount;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_OptionCount(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute IAttrIsset::_result */
+/* 3: Attribute IAttrIsset::_location */
+/* 4: Attribute IAttrIsset::_expr */
+/* 5: Attribute IAttrIsset::_property */
+void INIT_ATTRIBUTES__IAttrIsset(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IAttrIsset;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_OptionCount_opts___OptionCount___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_OptionCount();
-  opts___OptionCount___init(self, p0, p1, init_table);
-  CHECKNEW_OptionCount(self, "opts::OptionCount::init for OptionCount");
-  return self;
+val_t NEW_IAttrIsset(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_IAttrIsset;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IAttrIsset(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IAttrIsset;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IAttrIsset____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_OptionParameter[62] = {
-  {(bigint) 3211 /* 0: Identity */},
-  {(bigint) 3 /* 1: OptionParameter < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 2: OptionParameter < Option: superclass typecheck marker */},
-  {(bigint) 3211 /* 3: OptionParameter < OptionParameter: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_IAttrIsset_icode_base___IAttrIsset___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 449;
+  fra.me.meth = LOCATE_NEW_IAttrIsset_icode_base___IAttrIsset___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:449 */
+  fra.me.REG[2] = NEW_IAttrIsset();
+  INIT_ATTRIBUTES__IAttrIsset(fra.me.REG[2]);
+  icode_base___IAttrIsset___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IAttrIsset(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ITypeCheck[67] = {
+  {(bigint) 2631 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ITypeCheck < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: ITypeCheck < ICode: superclass typecheck marker */},
+  {(bigint) 2019 /* 4: ITypeCheck < ICode1: superclass typecheck marker */},
+  {(bigint) 2631 /* 5: ITypeCheck < ITypeCheck: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102648,14 +134649,9 @@ const classtable_elt_t VFT_OptionParameter[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) opts___Option___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OptionParameter < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ITypeCheck < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -102663,7 +134659,6 @@ const classtable_elt_t VFT_OptionParameter[62] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -102671,62 +134666,129 @@ const classtable_elt_t VFT_OptionParameter[62] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: OptionParameter < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) opts___Option___helptext},
-  {(bigint) opts___Option___mandatory},
-  {(bigint) opts___Option___mandatory__eq},
-  {(bigint) opts___Option___context},
-  {(bigint) opts___Option___context__eq},
-  {(bigint) opts___Option___value},
-  {(bigint) opts___Option___value__eq},
-  {(bigint) opts___Option___default_value},
-  {(bigint) opts___Option___default_value__eq},
-  {(bigint) opts___Option___init_opt},
-  {(bigint) opts___Option___add_aliases},
-  {(bigint) opts___Option___pretty},
-  {(bigint) opts___Option___pretty_default},
-  {(bigint) opts___OptionParameter___read_param},
-  {(bigint) 2 /* 59: OptionParameter < OptionParameter: superclass init_table position */},
-  {(bigint) opts___OptionParameter___convert},
-  {(bigint) opts___OptionParameter___init_opt},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___ITypeCheck___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___ITypeCheck___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___ITypeCheck___inner_dup_with},
+  {(bigint) 1 /* 53: ITypeCheck < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode1___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ITypeCheck___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: ITypeCheck < ICode1: superclass init_table position */},
+  {(bigint) icode_base___ICode1___expr},
+  {(bigint) icode_base___ICode1___init},
+  {(bigint) 3 /* 64: ITypeCheck < ITypeCheck: superclass init_table position */},
+  {(bigint) icode_base___ITypeCheck___stype},
+  {(bigint) icode_base___ITypeCheck___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute OptionParameter::_names */
-/* 2: Attribute OptionParameter::_helptext */
-/* 3: Attribute OptionParameter::_mandatory */
-/* 4: Attribute OptionParameter::_context */
-/* 5: Attribute OptionParameter::_value */
-/* 6: Attribute OptionParameter::_default_value */
-val_t NEW_OptionParameter(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_OptionParameter;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ITypeCheck::_result */
+/* 3: Attribute ITypeCheck::_location */
+/* 4: Attribute ITypeCheck::_expr */
+/* 5: Attribute ITypeCheck::_stype */
+void INIT_ATTRIBUTES__ITypeCheck(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ITypeCheck;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_OptionParameter(val_t self, char *from) {
-}
-val_t NEW_OptionParameter_opts___OptionParameter___init_opt(val_t p0, val_t p1, val_t p2) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_OptionParameter();
-  opts___OptionParameter___init_opt(self, p0, p1, p2, init_table);
-  CHECKNEW_OptionParameter(self, "opts::OptionParameter::init_opt for OptionParameter");
-  return self;
+val_t NEW_ITypeCheck(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_ITypeCheck;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ITypeCheck(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ITypeCheck;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___ITypeCheck____stype(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_OptionString[64] = {
-  {(bigint) 3871 /* 0: Identity */},
-  {(bigint) 3 /* 1: OptionString < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 2: OptionString < Option: superclass typecheck marker */},
-  {(bigint) 3211 /* 3: OptionString < OptionParameter: superclass typecheck marker */},
-  {(bigint) 3871 /* 4: OptionString < OptionString: superclass typecheck marker */},
+val_t NEW_ITypeCheck_icode_base___ITypeCheck___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 465;
+  fra.me.meth = LOCATE_NEW_ITypeCheck_icode_base___ITypeCheck___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:465 */
+  fra.me.REG[2] = NEW_ITypeCheck();
+  INIT_ATTRIBUTES__ITypeCheck(fra.me.REG[2]);
+  icode_base___ITypeCheck___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ITypeCheck(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_IIs[67] = {
+  {(bigint) 2667 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IIs < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IIs < ICode: superclass typecheck marker */},
+  {(bigint) 2015 /* 4: IIs < ICode2: superclass typecheck marker */},
+  {(bigint) 2667 /* 5: IIs < IIs: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102738,14 +134800,9 @@ const classtable_elt_t VFT_OptionString[64] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) opts___Option___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OptionString < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IIs < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -102753,7 +134810,6 @@ const classtable_elt_t VFT_OptionString[64] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -102761,64 +134817,129 @@ const classtable_elt_t VFT_OptionString[64] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: OptionString < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) opts___Option___helptext},
-  {(bigint) opts___Option___mandatory},
-  {(bigint) opts___Option___mandatory__eq},
-  {(bigint) opts___Option___context},
-  {(bigint) opts___Option___context__eq},
-  {(bigint) opts___Option___value},
-  {(bigint) opts___Option___value__eq},
-  {(bigint) opts___Option___default_value},
-  {(bigint) opts___Option___default_value__eq},
-  {(bigint) opts___Option___init_opt},
-  {(bigint) opts___Option___add_aliases},
-  {(bigint) opts___Option___pretty},
-  {(bigint) opts___Option___pretty_default},
-  {(bigint) opts___OptionParameter___read_param},
-  {(bigint) 2 /* 59: OptionString < OptionParameter: superclass init_table position */},
-  {(bigint) opts___OptionString___convert},
-  {(bigint) opts___OptionParameter___init_opt},
-  {(bigint) 3 /* 62: OptionString < OptionString: superclass init_table position */},
-  {(bigint) opts___OptionString___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IIs___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IIs___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IIs___inner_dup_with},
+  {(bigint) 1 /* 53: IIs < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode2___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___IIs___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IIs < ICode2: superclass init_table position */},
+  {(bigint) icode_base___ICode2___expr1},
+  {(bigint) icode_base___ICode2___expr2},
+  {(bigint) icode_base___ICode2___init},
+  {(bigint) 3 /* 65: IIs < IIs: superclass init_table position */},
+  {(bigint) icode_base___IIs___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute OptionString::_names */
-/* 2: Attribute OptionString::_helptext */
-/* 3: Attribute OptionString::_mandatory */
-/* 4: Attribute OptionString::_context */
-/* 5: Attribute OptionString::_value */
-/* 6: Attribute OptionString::_default_value */
-val_t NEW_OptionString(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_OptionString;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IIs::_result */
+/* 3: Attribute IIs::_location */
+/* 4: Attribute IIs::_expr1 */
+/* 5: Attribute IIs::_expr2 */
+void INIT_ATTRIBUTES__IIs(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IIs;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_OptionString(val_t self, char *from) {
+val_t NEW_IIs(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_IIs;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IIs(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IIs;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode2____expr1(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr1", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode2____expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr2", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_OptionString_opts___OptionString___init(val_t p0, val_t p1) {
+val_t NEW_IIs_icode_base___IIs___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_OptionString();
-  opts___OptionString___init(self, p0, p1, init_table);
-  CHECKNEW_OptionString(self, "opts::OptionString::init for OptionString");
-  return self;
-}
-const classtable_elt_t VFT_OptionEnum[64] = {
-  {(bigint) 3879 /* 0: Identity */},
-  {(bigint) 3 /* 1: OptionEnum < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 2: OptionEnum < Option: superclass typecheck marker */},
-  {(bigint) 3211 /* 3: OptionEnum < OptionParameter: superclass typecheck marker */},
-  {(bigint) 3879 /* 4: OptionEnum < OptionEnum: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 478;
+  fra.me.meth = LOCATE_NEW_IIs_icode_base___IIs___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_base.nit:478 */
+  fra.me.REG[2] = NEW_IIs();
+  INIT_ATTRIBUTES__IIs(fra.me.REG[2]);
+  icode_base___IIs___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_IIs(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_INot[66] = {
+  {(bigint) 2655 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: INot < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: INot < ICode: superclass typecheck marker */},
+  {(bigint) 2019 /* 4: INot < ICode1: superclass typecheck marker */},
+  {(bigint) 2655 /* 5: INot < INot: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102830,14 +134951,9 @@ const classtable_elt_t VFT_OptionEnum[64] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) opts___Option___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OptionEnum < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: INot < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -102845,7 +134961,6 @@ const classtable_elt_t VFT_OptionEnum[64] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -102853,65 +134968,120 @@ const classtable_elt_t VFT_OptionEnum[64] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: OptionEnum < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) opts___Option___helptext},
-  {(bigint) opts___Option___mandatory},
-  {(bigint) opts___Option___mandatory__eq},
-  {(bigint) opts___Option___context},
-  {(bigint) opts___Option___context__eq},
-  {(bigint) opts___Option___value},
-  {(bigint) opts___Option___value__eq},
-  {(bigint) opts___Option___default_value},
-  {(bigint) opts___Option___default_value__eq},
-  {(bigint) opts___Option___init_opt},
-  {(bigint) opts___Option___add_aliases},
-  {(bigint) opts___Option___pretty},
-  {(bigint) opts___OptionEnum___pretty_default},
-  {(bigint) opts___OptionParameter___read_param},
-  {(bigint) 2 /* 59: OptionEnum < OptionParameter: superclass init_table position */},
-  {(bigint) opts___OptionEnum___convert},
-  {(bigint) opts___OptionParameter___init_opt},
-  {(bigint) 3 /* 62: OptionEnum < OptionEnum: superclass init_table position */},
-  {(bigint) opts___OptionEnum___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___INot___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___INot___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___INot___inner_dup_with},
+  {(bigint) 1 /* 53: INot < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode1___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___INot___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: INot < ICode1: superclass init_table position */},
+  {(bigint) icode_base___ICode1___expr},
+  {(bigint) icode_base___ICode1___init},
+  {(bigint) 3 /* 64: INot < INot: superclass init_table position */},
+  {(bigint) icode_base___INot___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute OptionEnum::_names */
-/* 2: Attribute OptionEnum::_helptext */
-/* 3: Attribute OptionEnum::_mandatory */
-/* 4: Attribute OptionEnum::_context */
-/* 5: Attribute OptionEnum::_value */
-/* 6: Attribute OptionEnum::_default_value */
-/* 7: Attribute OptionEnum::_enum */
-val_t NEW_OptionEnum(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_OptionEnum;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute INot::_result */
+/* 3: Attribute INot::_location */
+/* 4: Attribute INot::_expr */
+void INIT_ATTRIBUTES__INot(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__INot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_OptionEnum(val_t self, char *from) {
+val_t NEW_INot(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_INot;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_INot(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_INot;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_OptionEnum_opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3) {
+val_t NEW_INot_icode_base___INot___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_OptionEnum();
-  opts___OptionEnum___init(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_OptionEnum(self, "opts::OptionEnum::init for OptionEnum");
-  return self;
-}
-const classtable_elt_t VFT_OptionInt[64] = {
-  {(bigint) 3875 /* 0: Identity */},
-  {(bigint) 3 /* 1: OptionInt < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 2: OptionInt < Option: superclass typecheck marker */},
-  {(bigint) 3211 /* 3: OptionInt < OptionParameter: superclass typecheck marker */},
-  {(bigint) 3875 /* 4: OptionInt < OptionInt: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 490;
+  fra.me.meth = LOCATE_NEW_INot_icode_base___INot___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:490 */
+  fra.me.REG[1] = NEW_INot();
+  INIT_ATTRIBUTES__INot(fra.me.REG[1]);
+  icode_base___INot___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_INot(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_IOnce[65] = {
+  {(bigint) 2647 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IOnce < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IOnce < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: IOnce < ICode0: superclass typecheck marker */},
+  {(bigint) 2647 /* 5: IOnce < IOnce: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102923,14 +135093,9 @@ const classtable_elt_t VFT_OptionInt[64] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) opts___Option___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OptionInt < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IOnce < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -102938,7 +135103,6 @@ const classtable_elt_t VFT_OptionInt[64] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -102946,64 +135110,120 @@ const classtable_elt_t VFT_OptionInt[64] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: OptionInt < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) opts___Option___helptext},
-  {(bigint) opts___Option___mandatory},
-  {(bigint) opts___Option___mandatory__eq},
-  {(bigint) opts___Option___context},
-  {(bigint) opts___Option___context__eq},
-  {(bigint) opts___Option___value},
-  {(bigint) opts___Option___value__eq},
-  {(bigint) opts___Option___default_value},
-  {(bigint) opts___Option___default_value__eq},
-  {(bigint) opts___Option___init_opt},
-  {(bigint) opts___Option___add_aliases},
-  {(bigint) opts___Option___pretty},
-  {(bigint) opts___Option___pretty_default},
-  {(bigint) opts___OptionParameter___read_param},
-  {(bigint) 2 /* 59: OptionInt < OptionParameter: superclass init_table position */},
-  {(bigint) opts___OptionInt___convert},
-  {(bigint) opts___OptionParameter___init_opt},
-  {(bigint) 3 /* 62: OptionInt < OptionInt: superclass init_table position */},
-  {(bigint) opts___OptionInt___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IOnce___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___IOnce___dump},
+  {(bigint) icode_dump___ICode___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IOnce___inner_dup_with},
+  {(bigint) 1 /* 53: IOnce < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___ICode___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IOnce < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 62: IOnce < IOnce: superclass init_table position */},
+  {(bigint) icode_base___IOnce___body},
+  {(bigint) icode_base___IOnce___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute OptionInt::_names */
-/* 2: Attribute OptionInt::_helptext */
-/* 3: Attribute OptionInt::_mandatory */
-/* 4: Attribute OptionInt::_context */
-/* 5: Attribute OptionInt::_value */
-/* 6: Attribute OptionInt::_default_value */
-val_t NEW_OptionInt(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_OptionInt;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IOnce::_result */
+/* 3: Attribute IOnce::_location */
+/* 4: Attribute IOnce::_body */
+void INIT_ATTRIBUTES__IOnce(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IOnce;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:502 */
+  fra.me.REG[1] = NEW_ISeq_icode_base___ISeq___init();
+  ATTR_icode_base___IOnce____body(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_OptionInt(val_t self, char *from) {
+val_t NEW_IOnce(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_IOnce;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IOnce(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IOnce;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IOnce____body(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_body", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_OptionInt_opts___OptionInt___init(val_t p0, val_t p1, val_t p2) {
+val_t NEW_IOnce_icode_base___IOnce___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_OptionInt();
-  opts___OptionInt___init(self, p0, p1, p2, init_table);
-  CHECKNEW_OptionInt(self, "opts::OptionInt::init for OptionInt");
-  return self;
-}
-const classtable_elt_t VFT_OptionArray[64] = {
-  {(bigint) 3883 /* 0: Identity */},
-  {(bigint) 3 /* 1: OptionArray < Object: superclass typecheck marker */},
-  {(bigint) 71 /* 2: OptionArray < Option: superclass typecheck marker */},
-  {(bigint) 3211 /* 3: OptionArray < OptionParameter: superclass typecheck marker */},
-  {(bigint) 3883 /* 4: OptionArray < OptionArray: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 503;
+  fra.me.meth = LOCATE_NEW_IOnce_icode_base___IOnce___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./icode//icode_base.nit:503 */
+  fra.me.REG[0] = NEW_IOnce();
+  INIT_ATTRIBUTES__IOnce(fra.me.REG[0]);
+  icode_base___IOnce___init(fra.me.REG[0], init_table);
+  CHECKNEW_IOnce(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_IHasClos[65] = {
+  {(bigint) 2683 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IHasClos < Object: superclass typecheck marker */},
+  {(bigint) 215 /* 3: IHasClos < ICode: superclass typecheck marker */},
+  {(bigint) 2023 /* 4: IHasClos < ICode0: superclass typecheck marker */},
+  {(bigint) 2683 /* 5: IHasClos < IHasClos: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103015,14 +135235,9 @@ const classtable_elt_t VFT_OptionArray[64] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) opts___Option___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OptionArray < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: IHasClos < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -103030,7 +135245,6 @@ const classtable_elt_t VFT_OptionArray[64] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -103038,63 +135252,117 @@ const classtable_elt_t VFT_OptionArray[64] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: OptionArray < Option: superclass init_table position */},
-  {(bigint) opts___Option___names},
-  {(bigint) opts___Option___helptext},
-  {(bigint) opts___Option___mandatory},
-  {(bigint) opts___Option___mandatory__eq},
-  {(bigint) opts___Option___context},
-  {(bigint) opts___Option___context__eq},
-  {(bigint) opts___Option___value},
-  {(bigint) opts___Option___value__eq},
-  {(bigint) opts___Option___default_value},
-  {(bigint) opts___Option___default_value__eq},
-  {(bigint) opts___Option___init_opt},
-  {(bigint) opts___Option___add_aliases},
-  {(bigint) opts___Option___pretty},
-  {(bigint) opts___Option___pretty_default},
-  {(bigint) opts___OptionParameter___read_param},
-  {(bigint) 2 /* 59: OptionArray < OptionParameter: superclass init_table position */},
-  {(bigint) opts___OptionArray___convert},
-  {(bigint) opts___OptionParameter___init_opt},
-  {(bigint) 3 /* 62: OptionArray < OptionArray: superclass init_table position */},
-  {(bigint) opts___OptionArray___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_icode___IHasClos___compile_to_c},
+  {(bigint) compiling_icode___ICode___need_result},
+  {(bigint) compiling_icode___ICode___store_result},
+  {(bigint) compiling_icode___ICode___new_result},
+  {(bigint) icode_dump___ICode___dump},
+  {(bigint) icode_dump___IHasClos___dump_intern},
+  {(bigint) icode_tools___ICode___dup_with},
+  {(bigint) icode_tools___IHasClos___inner_dup_with},
+  {(bigint) 1 /* 53: IHasClos < ICode: superclass init_table position */},
+  {(bigint) icode_base___ICode0___arity},
+  {(bigint) icode_base___ICode___result},
+  {(bigint) icode_base___ICode___result__eq},
+  {(bigint) icode_base___ICode___location},
+  {(bigint) icode_base___ICode___location__eq},
+  {(bigint) icode_base___IHasClos___is_pure},
+  {(bigint) icode_base___ICode___init},
+  {(bigint) 0 /* 61: IHasClos < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 62: IHasClos < IHasClos: superclass init_table position */},
+  {(bigint) icode_base___IHasClos___closure_decl},
+  {(bigint) icode_base___IHasClos___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute OptionArray::_names */
-/* 2: Attribute OptionArray::_helptext */
-/* 3: Attribute OptionArray::_mandatory */
-/* 4: Attribute OptionArray::_context */
-/* 5: Attribute OptionArray::_value */
-/* 6: Attribute OptionArray::_default_value */
-/* 7: Attribute OptionArray::_values */
-val_t NEW_OptionArray(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_OptionArray;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IHasClos::_result */
+/* 3: Attribute IHasClos::_location */
+/* 4: Attribute IHasClos::_closure_decl */
+void INIT_ATTRIBUTES__IHasClos(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IHasClos;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:96 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_base.nit:99 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_OptionArray(val_t self, char *from) {
+val_t NEW_IHasClos(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_IHasClos;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IHasClos(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IHasClos;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_base___IHasClos____closure_decl(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_OptionArray_opts___OptionArray___init(val_t p0, val_t p1) {
+val_t NEW_IHasClos_icode_base___IHasClos___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_OptionArray();
-  opts___OptionArray___init(self, p0, p1, init_table);
-  CHECKNEW_OptionArray(self, "opts::OptionArray::init for OptionArray");
-  return self;
-}
-const classtable_elt_t VFT_OptionContext[52] = {
-  {(bigint) 67 /* 0: Identity */},
-  {(bigint) 3 /* 1: OptionContext < Object: superclass typecheck marker */},
-  {(bigint) 67 /* 2: OptionContext < OptionContext: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 512;
+  fra.me.meth = LOCATE_NEW_IHasClos_icode_base___IHasClos___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:512 */
+  fra.me.REG[1] = NEW_IHasClos();
+  INIT_ATTRIBUTES__IHasClos(fra.me.REG[1]);
+  icode_base___IHasClos___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IHasClos(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ICodeBuilder[69] = {
+  {(bigint) 211 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ICodeBuilder < Object: superclass typecheck marker */},
+  {(bigint) 211 /* 3: ICodeBuilder < ICodeBuilder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103108,14 +135376,9 @@ const classtable_elt_t VFT_OptionContext[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: OptionContext < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ICodeBuilder < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -103123,7 +135386,6 @@ const classtable_elt_t VFT_OptionContext[52] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -103131,48 +135393,131 @@ const classtable_elt_t VFT_OptionContext[52] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: OptionContext < OptionContext: superclass init_table position */},
-  {(bigint) opts___OptionContext___options},
-  {(bigint) opts___OptionContext___rest},
-  {(bigint) opts___OptionContext___usage},
-  {(bigint) opts___OptionContext___parse},
-  {(bigint) opts___OptionContext___parse_intern},
-  {(bigint) opts___OptionContext___add_option},
-  {(bigint) opts___OptionContext___init},
-  {(bigint) opts___OptionContext___build},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) icode_tools___ICodeBuilder___inline_routine},
+  {(bigint) 1 /* 46: ICodeBuilder < ICodeBuilder: superclass init_table position */},
+  {(bigint) icode_builder___ICodeBuilder___stmt},
+  {(bigint) icode_builder___ICodeBuilder___expr},
+  {(bigint) icode_builder___ICodeBuilder___add_assignment},
+  {(bigint) icode_builder___ICodeBuilder___add_null_reciever_check},
+  {(bigint) icode_builder___ICodeBuilder___add_type_cast},
+  {(bigint) icode_builder___ICodeBuilder___add_attr_check},
+  {(bigint) icode_builder___ICodeBuilder___add_attr_read},
+  {(bigint) icode_builder___ICodeBuilder___add_abort},
+  {(bigint) icode_builder___ICodeBuilder___add_return_value},
+  {(bigint) icode_builder___ICodeBuilder___add_call},
+  {(bigint) icode_builder___ICodeBuilder___add_escape},
+  {(bigint) icode_builder___ICodeBuilder___lit_null_reg},
+  {(bigint) icode_builder___ICodeBuilder___lit_true_reg},
+  {(bigint) icode_builder___ICodeBuilder___lit_false_reg},
+  {(bigint) icode_builder___ICodeBuilder___new_register},
+  {(bigint) icode_builder___ICodeBuilder___mmmodule},
+  {(bigint) icode_builder___ICodeBuilder___iroutine},
+  {(bigint) icode_builder___ICodeBuilder___seq},
+  {(bigint) icode_builder___ICodeBuilder___seq__eq},
+  {(bigint) icode_builder___ICodeBuilder___init},
+  {(bigint) icode_builder___ICodeBuilder___current_location},
+  {(bigint) icode_builder___ICodeBuilder___current_location__eq},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute OptionContext::_options */
-/* 2: Attribute OptionContext::_rest */
-/* 3: Attribute OptionContext::_optmap */
-val_t NEW_OptionContext(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_OptionContext;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ICodeBuilder::_mmmodule */
+/* 3: Attribute ICodeBuilder::_iroutine */
+/* 4: Attribute ICodeBuilder::_seq */
+/* 5: Attribute ICodeBuilder::_current_location */
+void INIT_ATTRIBUTES__ICodeBuilder(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ICodeBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_builder.nit:220 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_builder___ICodeBuilder____current_location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_OptionContext(val_t self, char *from) {
+val_t NEW_ICodeBuilder(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_ICodeBuilder;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ICodeBuilder(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ICodeBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_builder___ICodeBuilder____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_builder___ICodeBuilder____iroutine(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_iroutine", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_builder___ICodeBuilder____seq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_seq", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_OptionContext_opts___OptionContext___init() {
+val_t NEW_ICodeBuilder_icode_builder___ICodeBuilder___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_OptionContext();
-  opts___OptionContext___init(self, init_table);
-  CHECKNEW_OptionContext(self, "opts::OptionContext::init for OptionContext");
-  return self;
-}
-const classtable_elt_t VFT_ToolContext[87] = {
-  {(bigint) 203 /* 0: Identity */},
-  {(bigint) 3 /* 1: ToolContext < Object: superclass typecheck marker */},
-  {(bigint) 123 /* 2: ToolContext < MMContext: superclass typecheck marker */},
-  {(bigint) 203 /* 3: ToolContext < ToolContext: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 212;
+  fra.me.meth = LOCATE_NEW_ICodeBuilder_icode_builder___ICodeBuilder___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./icode//icode_builder.nit:212 */
+  fra.me.REG[2] = NEW_ICodeBuilder();
+  INIT_ATTRIBUTES__ICodeBuilder(fra.me.REG[2]);
+  icode_builder___ICodeBuilder___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_ICodeBuilder(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ICodeVisitor[53] = {
+  {(bigint) 199 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ICodeVisitor < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 3: ICodeVisitor < ICodeVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103185,14 +135530,10 @@ const classtable_elt_t VFT_ToolContext[87] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ToolContext < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ICodeVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -103200,7 +135541,6 @@ const classtable_elt_t VFT_ToolContext[87] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -103208,273 +135548,89 @@ const classtable_elt_t VFT_ToolContext[87] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ToolContext < MMContext: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMContext___init},
-  {(bigint) abstractmetamodel___MMContext___module_hierarchy},
-  {(bigint) abstractmetamodel___MMContext___class_hierarchy},
-  {(bigint) abstractmetamodel___MMContext___modules},
-  {(bigint) abstractmetamodel___MMContext___add_module},
-  {(bigint) abstractmetamodel___MMContext___add_global_class},
-  {(bigint) abstractmetamodel___MMContext___add_local_class},
-  {(bigint) compiling_base___ToolContext___global},
-  {(bigint) compiling_base___ToolContext___global__eq},
-  {(bigint) compiling_base___ToolContext___compdir},
-  {(bigint) compiling_base___ToolContext___compdir__eq},
-  {(bigint) compiling_base___ToolContext___clibdir},
-  {(bigint) compiling_base___ToolContext___clibdir__eq},
-  {(bigint) compiling_base___ToolContext___bindir},
-  {(bigint) compiling_base___ToolContext___bindir__eq},
-  {(bigint) compiling_base___ToolContext___output_file},
-  {(bigint) compiling_base___ToolContext___output_file__eq},
-  {(bigint) compiling_base___ToolContext___boost},
-  {(bigint) compiling_base___ToolContext___boost__eq},
-  {(bigint) compiling_base___ToolContext___no_cc},
-  {(bigint) compiling_base___ToolContext___no_cc__eq},
-  {(bigint) compiling_base___ToolContext___ext_prefix},
-  {(bigint) compiling_base___ToolContext___ext_prefix__eq},
-  {(bigint) 2 /* 67: ToolContext < ToolContext: superclass init_table position */},
-  {(bigint) mmloader___ToolContext___error_count},
-  {(bigint) mmloader___ToolContext___warning_count},
-  {(bigint) mmloader___ToolContext___error},
-  {(bigint) mmloader___ToolContext___warning},
-  {(bigint) mmloader___ToolContext___paths},
-  {(bigint) mmloader___ToolContext___option_context},
-  {(bigint) mmloader___ToolContext___opt_warn},
-  {(bigint) mmloader___ToolContext___opt_path},
-  {(bigint) mmloader___ToolContext___opt_log},
-  {(bigint) mmloader___ToolContext___opt_only_metamodel},
-  {(bigint) mmloader___ToolContext___opt_only_parse},
-  {(bigint) mmloader___ToolContext___opt_help},
-  {(bigint) mmloader___ToolContext___init},
-  {(bigint) mmloader___ToolContext___process_options},
-  {(bigint) mmloader___ToolContext___try_to_load},
-  {(bigint) mmloader___ToolContext___get_module_from_filename},
-  {(bigint) mmloader___ToolContext___get_module},
-  {(bigint) mmloader___ToolContext___directory_for},
-  {(bigint) mmloader___ToolContext___register_loader},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ICodeVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode_tools___ICodeVisitor___current_icode},
+  {(bigint) icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode_tools___ICodeVisitor___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute ToolContext::_module_hierarchy */
-/* 2: Attribute ToolContext::_class_hierarchy */
-/* 3: Attribute ToolContext::_global_classes */
-/* 4: Attribute ToolContext::_modules */
-/* 5: Attribute ToolContext::_global */
-/* 6: Attribute ToolContext::_compdir */
-/* 7: Attribute ToolContext::_clibdir */
-/* 8: Attribute ToolContext::_bindir */
-/* 9: Attribute ToolContext::_output_file */
-/* 10: Attribute ToolContext::_boost */
-/* 11: Attribute ToolContext::_no_cc */
-/* 12: Attribute ToolContext::_ext_prefix */
-/* 13: Attribute ToolContext::_error_count */
-/* 14: Attribute ToolContext::_warning_count */
-/* 15: Attribute ToolContext::_paths */
-/* 16: Attribute ToolContext::_loaders */
-/* 17: Attribute ToolContext::_option_context */
-/* 18: Attribute ToolContext::_opt_warn */
-/* 19: Attribute ToolContext::_opt_path */
-/* 20: Attribute ToolContext::_opt_log */
-/* 21: Attribute ToolContext::_opt_only_metamodel */
-/* 22: Attribute ToolContext::_opt_only_parse */
-/* 23: Attribute ToolContext::_opt_help */
-/* 24: Attribute ToolContext::_processing_modules */
-/* 25: Attribute ToolContext::_path_dirs */
-val_t NEW_ToolContext(void) {
-  static val_t once_value_35 = NIT_NULL; /* Once value for string variable[1]*/
-  static val_t once_value_36 = NIT_NULL; /* Once value for string variable[3]*/
-  static val_t once_value_37 = NIT_NULL; /* Once value for string variable[4]*/
-  static val_t once_value_38 = NIT_NULL; /* Once value for string variable[3]*/
-  static val_t once_value_39 = NIT_NULL; /* Once value for string variable[5]*/
-  static val_t once_value_40 = NIT_NULL; /* Once value for string variable[6]*/
-  static val_t once_value_41 = NIT_NULL; /* Once value for string variable[5]*/
-  static val_t once_value_42 = NIT_NULL; /* Once value for string variable[7]*/
-  static val_t once_value_43 = NIT_NULL; /* Once value for string variable[7]*/
-  static val_t once_value_44 = NIT_NULL; /* Once value for string variable[9]*/
-  static val_t once_value_45 = NIT_NULL; /* Once value for string variable[9]*/
-  static val_t once_value_46 = NIT_NULL; /* Once value for string variable[11]*/
-  static val_t once_value_47 = NIT_NULL; /* Once value for string variable[11]*/
-  static val_t once_value_48 = NIT_NULL; /* Once value for string variable[13]*/
-  static val_t once_value_49 = NIT_NULL; /* Once value for string variable[14]*/
-  static val_t once_value_50 = NIT_NULL; /* Once value for string variable[15]*/
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 26);
-  obj->vft = (classtable_elt_t*)VFT_ToolContext;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMContext____module_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMModule]*/;
-  ATTR_abstractmetamodel___MMContext____class_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMLocalClass]*/;
-  ATTR_abstractmetamodel___MMContext____global_classes(obj) = NEW_Array_array___Array___init() /*new Array[MMGlobalClass]*/;
-  ATTR_abstractmetamodel___MMContext____modules(obj) = NEW_Array_array___Array___init() /*new Array[MMModule]*/;
-  ATTR_mmloader___ToolContext____error_count(obj) =  TAG_Int(0);
-  ATTR_mmloader___ToolContext____warning_count(obj) =  TAG_Int(0);
-  ATTR_mmloader___ToolContext____loaders(obj) = NEW_Array_array___Array___init() /*new Array[ModuleLoader]*/;
-  ATTR_mmloader___ToolContext____option_context(obj) = NEW_OptionContext_opts___OptionContext___init() /*new OptionContext*/;
-  /* Register variable[1]: Once String constant */
-  if (once_value_35 != NIT_NULL) variable[1] = once_value_35;
-  else {
-    variable[1] = NEW_String_string___String___with_native(BOX_NativeString("Show warnings"), TAG_Int(13)) /*new String*/;
-    once_value_35 = variable[1];
-  }
-  /* Register variable[1]: Result */
-  variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(2)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[3]: Once String constant */
-  if (once_value_36 != NIT_NULL) variable[3] = once_value_36;
-  else {
-    variable[3] = NEW_String_string___String___with_native(BOX_NativeString("-W"), TAG_Int(2)) /*new String*/;
-    once_value_36 = variable[3];
-  }
-  /* Register variable[3]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
-  /* Register variable[4]: Once String constant */
-  if (once_value_37 != NIT_NULL) variable[4] = once_value_37;
-  else {
-    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("--warn"), TAG_Int(6)) /*new String*/;
-    once_value_37 = variable[4];
-  }
-  /* Register variable[4]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[4]) /*AbstractArray::add*/;
-  /* Register variable[2]: Result */
-  ATTR_mmloader___ToolContext____opt_warn(obj) = NEW_OptionCount_opts___OptionCount___init(variable[1], variable[2]) /*new OptionCount*/;
-  /* Register variable[3]: Once String constant */
-  if (once_value_38 != NIT_NULL) variable[3] = once_value_38;
-  else {
-    variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Set include path for loaders (may be used more than once)"), TAG_Int(57)) /*new String*/;
-    once_value_38 = variable[3];
-  }
-  /* Register variable[3]: Result */
-  variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(2)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[5]: Once String constant */
-  if (once_value_39 != NIT_NULL) variable[5] = once_value_39;
-  else {
-    variable[5] = NEW_String_string___String___with_native(BOX_NativeString("-I"), TAG_Int(2)) /*new String*/;
-    once_value_39 = variable[5];
-  }
-  /* Register variable[5]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
-  /* Register variable[6]: Once String constant */
-  if (once_value_40 != NIT_NULL) variable[6] = once_value_40;
-  else {
-    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("--path"), TAG_Int(6)) /*new String*/;
-    once_value_40 = variable[6];
-  }
-  /* Register variable[6]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[6]) /*AbstractArray::add*/;
-  /* Register variable[4]: Result */
-  ATTR_mmloader___ToolContext____opt_path(obj) = NEW_OptionArray_opts___OptionArray___init(variable[3], variable[4]) /*new OptionArray*/;
-  /* Register variable[5]: Once String constant */
-  if (once_value_41 != NIT_NULL) variable[5] = once_value_41;
-  else {
-    variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Generate various log files"), TAG_Int(26)) /*new String*/;
-    once_value_41 = variable[5];
-  }
-  /* Register variable[5]: Result */
-  variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[7]: Once String constant */
-  if (once_value_42 != NIT_NULL) variable[7] = once_value_42;
-  else {
-    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("--log"), TAG_Int(5)) /*new String*/;
-    once_value_42 = variable[7];
-  }
-  /* Register variable[7]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
-  /* Register variable[6]: Result */
-  ATTR_mmloader___ToolContext____opt_log(obj) = NEW_OptionBool_opts___OptionBool___init(variable[5], variable[6]) /*new OptionBool*/;
-  /* Register variable[7]: Once String constant */
-  if (once_value_43 != NIT_NULL) variable[7] = once_value_43;
-  else {
-    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Stop after meta-model processing"), TAG_Int(32)) /*new String*/;
-    once_value_43 = variable[7];
-  }
-  /* Register variable[7]: Result */
-  variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[9]: Once String constant */
-  if (once_value_44 != NIT_NULL) variable[9] = once_value_44;
-  else {
-    variable[9] = NEW_String_string___String___with_native(BOX_NativeString("--only-metamodel"), TAG_Int(16)) /*new String*/;
-    once_value_44 = variable[9];
-  }
-  /* Register variable[9]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
-  /* Register variable[8]: Result */
-  ATTR_mmloader___ToolContext____opt_only_metamodel(obj) = NEW_OptionBool_opts___OptionBool___init(variable[7], variable[8]) /*new OptionBool*/;
-  /* Register variable[9]: Once String constant */
-  if (once_value_45 != NIT_NULL) variable[9] = once_value_45;
-  else {
-    variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Only proceed to parse step of loaders"), TAG_Int(37)) /*new String*/;
-    once_value_45 = variable[9];
-  }
-  /* Register variable[9]: Result */
-  variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[11]: Once String constant */
-  if (once_value_46 != NIT_NULL) variable[11] = once_value_46;
-  else {
-    variable[11] = NEW_String_string___String___with_native(BOX_NativeString("--only-parse"), TAG_Int(12)) /*new String*/;
-    once_value_46 = variable[11];
-  }
-  /* Register variable[11]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
-  /* Register variable[10]: Result */
-  ATTR_mmloader___ToolContext____opt_only_parse(obj) = NEW_OptionBool_opts___OptionBool___init(variable[9], variable[10]) /*new OptionBool*/;
-  /* Register variable[11]: Once String constant */
-  if (once_value_47 != NIT_NULL) variable[11] = once_value_47;
-  else {
-    variable[11] = NEW_String_string___String___with_native(BOX_NativeString("Show Help (This screen)"), TAG_Int(23)) /*new String*/;
-    once_value_47 = variable[11];
-  }
-  /* Register variable[11]: Result */
-  variable[12] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[13]: Once String constant */
-  if (once_value_48 != NIT_NULL) variable[13] = once_value_48;
-  else {
-    variable[13] = NEW_String_string___String___with_native(BOX_NativeString("-h"), TAG_Int(2)) /*new String*/;
-    once_value_48 = variable[13];
-  }
-  /* Register variable[13]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
-  /* Register variable[14]: Once String constant */
-  if (once_value_49 != NIT_NULL) variable[14] = once_value_49;
-  else {
-    variable[14] = NEW_String_string___String___with_native(BOX_NativeString("-?"), TAG_Int(2)) /*new String*/;
-    once_value_49 = variable[14];
-  }
-  /* Register variable[14]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[14]) /*AbstractArray::add*/;
-  /* Register variable[15]: Once String constant */
-  if (once_value_50 != NIT_NULL) variable[15] = once_value_50;
-  else {
-    variable[15] = NEW_String_string___String___with_native(BOX_NativeString("--help"), TAG_Int(6)) /*new String*/;
-    once_value_50 = variable[15];
-  }
-  /* Register variable[15]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[15]) /*AbstractArray::add*/;
-  /* Register variable[12]: Result */
-  ATTR_mmloader___ToolContext____opt_help(obj) = NEW_OptionBool_opts___OptionBool___init(variable[11], variable[12]) /*new OptionBool*/;
-  ATTR_mmloader___ToolContext____processing_modules(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[Symbol]*/;
-  ATTR_mmloader___ToolContext____path_dirs(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[String, MMDirectory]*/;
-  ATTR_compiling_base___ToolContext____global(obj) =  TAG_Bool(false);
-  ATTR_compiling_base___ToolContext____boost(obj) =  TAG_Bool(false);
-  ATTR_compiling_base___ToolContext____no_cc(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ToolContext(val_t self, char *from) {
-}
-val_t NEW_ToolContext_mmloader___ToolContext___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ToolContext();
-  mmloader___ToolContext___init(self, init_table);
-  CHECKNEW_ToolContext(self, "mmloader::ToolContext::init for ToolContext");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ICodeVisitor::_current_icode */
+void INIT_ATTRIBUTES__ICodeVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ICodeVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_tools.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ModuleLoader[52] = {
-  {(bigint) 83 /* 0: Identity */},
-  {(bigint) 3 /* 1: ModuleLoader < Object: superclass typecheck marker */},
-  {(bigint) 83 /* 2: ModuleLoader < ModuleLoader: superclass typecheck marker */},
+val_t NEW_ICodeVisitor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ICodeVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ICodeVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ICodeVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ICodeVisitor_icode_tools___ICodeVisitor___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ICodeVisitor_icode_tools___ICodeVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_ICodeVisitor();
+  INIT_ATTRIBUTES__ICodeVisitor(fra.me.REG[0]);
+  icode_tools___ICodeVisitor___init(fra.me.REG[0], init_table);
+  CHECKNEW_ICodeVisitor(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ICodeDupContext[50] = {
+  {(bigint) 203 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ICodeDupContext < Object: superclass typecheck marker */},
+  {(bigint) 203 /* 3: ICodeDupContext < ICodeDupContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103488,14 +135644,9 @@ const classtable_elt_t VFT_ModuleLoader[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ModuleLoader < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ICodeDupContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -103503,7 +135654,6 @@ const classtable_elt_t VFT_ModuleLoader[52] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -103511,45 +135661,122 @@ const classtable_elt_t VFT_ModuleLoader[52] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ModuleLoader < ModuleLoader: superclass init_table position */},
-  {(bigint) mmloader___ModuleLoader___file_type},
-  {(bigint) mmloader___ModuleLoader___try_to_load_dir},
-  {(bigint) mmloader___ModuleLoader___can_handle},
-  {(bigint) mmloader___ModuleLoader___load_and_process_module},
-  {(bigint) mmloader___ModuleLoader___load_module},
-  {(bigint) mmloader___ModuleLoader___parse_file},
-  {(bigint) mmloader___ModuleLoader___process_metamodel},
-  {(bigint) mmloader___ModuleLoader___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ICodeDupContext < ICodeDupContext: superclass init_table position */},
+  {(bigint) icode_tools___ICodeDupContext___dup_ireg},
+  {(bigint) icode_tools___ICodeDupContext___dup_iregs},
+  {(bigint) icode_tools___ICodeDupContext___dup_mark},
+  {(bigint) icode_tools___ICodeDupContext___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ModuleLoader(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ModuleLoader;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ICodeDupContext::_registers */
+/* 3: Attribute ICodeDupContext::_marks */
+/* 4: Attribute ICodeDupContext::_closures */
+/* 5: Attribute ICodeDupContext::_icb */
+void INIT_ATTRIBUTES__ICodeDupContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ICodeDupContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_tools.nit:177 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_icode_tools___ICodeDupContext____registers(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_tools.nit:194 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_icode_tools___ICodeDupContext____marks(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_tools.nit:197 */
+  fra.me.REG[1] = NEW_ArrayMap_array___ArrayMap___init();
+  ATTR_icode_tools___ICodeDupContext____closures(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ModuleLoader(val_t self, char *from) {
+val_t NEW_ICodeDupContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_ICodeDupContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ICodeDupContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ICodeDupContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____registers(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_registers", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____marks(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_marks", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____closures(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_closures", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_tools___ICodeDupContext____icb(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ModuleLoader_mmloader___ModuleLoader___init() {
+val_t NEW_ICodeDupContext_icode_tools___ICodeDupContext___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_ModuleLoader();
-  mmloader___ModuleLoader___init(self, init_table);
-  CHECKNEW_ModuleLoader(self, "mmloader::ModuleLoader::init for ModuleLoader");
-  return self;
-}
-const classtable_elt_t VFT_MMSrcModule[91] = {
-  {(bigint) 3263 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMSrcModule < Object: superclass typecheck marker */},
-  {(bigint) 99 /* 2: MMSrcModule < MMModule: superclass typecheck marker */},
-  {(bigint) 3263 /* 3: MMSrcModule < MMSrcModule: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 202;
+  fra.me.meth = LOCATE_NEW_ICodeDupContext_icode_tools___ICodeDupContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_tools.nit:202 */
+  fra.me.REG[1] = NEW_ICodeDupContext();
+  INIT_ATTRIBUTES__ICodeDupContext(fra.me.REG[1]);
+  icode_tools___ICodeDupContext___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ICodeDupContext(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_RootFlowContext[62] = {
+  {(bigint) 323 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: RootFlowContext < Object: superclass typecheck marker */},
+  {(bigint) 231 /* 3: RootFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 323 /* 4: RootFlowContext < RootFlowContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103562,14 +135789,9 @@ const classtable_elt_t VFT_MMSrcModule[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMModule___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMSrcModule < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: RootFlowContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -103577,7 +135799,6 @@ const classtable_elt_t VFT_MMSrcModule[91] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -103585,115 +135806,143 @@ const classtable_elt_t VFT_MMSrcModule[91] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) abstracttool___MMModule___dump_module_info},
-  {(bigint) mmloader___MMModule___import_supers_modules},
-  {(bigint) inheritance___MMModule___type_any},
-  {(bigint) inheritance___MMModule___import_global_classes},
-  {(bigint) inheritance___MMModule___import_local_classes},
-  {(bigint) static_type___MMModule___type_none},
-  {(bigint) 1 /* 49: MMSrcModule < MMModule: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMModule___context},
-  {(bigint) abstractmetamodel___MMModule___name},
-  {(bigint) abstractmetamodel___MMModule___full_name},
-  {(bigint) abstractmetamodel___MMModule___directory},
-  {(bigint) abstractmetamodel___MMModule___filename},
-  {(bigint) abstractmetamodel___MMModule___mhe},
-  {(bigint) abstractmetamodel___MMModule___global_classes},
-  {(bigint) abstractmetamodel___MMModule___local_classes},
-  {(bigint) abstractmetamodel___MMModule___class_specialization_hierarchy},
-  {(bigint) abstractmetamodel___MMModule___explicit_imported_modules},
-  {(bigint) abstractmetamodel___MMModule___init},
-  {(bigint) abstractmetamodel___MMModule___add_super_module},
-  {(bigint) abstractmetamodel___MMModule___visibility_for},
-  {(bigint) abstractmetamodel___MMModule_____bra},
-  {(bigint) abstractmetamodel___MMModule___class_by_name},
-  {(bigint) abstractmetamodel___MMModule___has_global_class_named},
-  {(bigint) abstractmetamodel___MMModule___global_class_named},
-  {(bigint) abstractmetamodel___MMModule___set_supers_class},
-  {(bigint) abstractmetamodel___MMModule___register_global_class},
-  {(bigint) compiling___MMSrcModule___compile_prog_to_c},
-  {(bigint) compiling___MMSrcModule___compile_main},
-  {(bigint) compiling___MMSrcModule___compile_separate_module},
-  {(bigint) compiling_global___MMSrcModule___local_analysis},
-  {(bigint) compiling_global___MMSrcModule___global_analysis},
-  {(bigint) compiling_global___MMSrcModule___append_to_table},
-  {(bigint) compiling_global___MMSrcModule___build_tables_in},
-  {(bigint) compiling_global___MMSrcModule___colorize},
-  {(bigint) compiling_global___MMSrcModule___free_color},
-  {(bigint) compiling_global___MMSrcModule___compile_tables_to_c},
-  {(bigint) compiling_global___MMSrcModule___declare_class_tables_to_c},
-  {(bigint) compiling_global___MMSrcModule___compile_main_part},
-  {(bigint) compiling_global___MMSrcModule___compile_mod_to_c},
-  {(bigint) compiling_global___MMSrcModule___compile_local_table_to_c},
-  {(bigint) syntax___MMSrcModule___process_supermodules},
-  {(bigint) syntax___MMSrcModule___process_syntax},
-  {(bigint) mmbuilder___MMSrcModule___do_mmbuilder},
-  {(bigint) 2 /* 86: MMSrcModule < MMSrcModule: superclass init_table position */},
-  {(bigint) syntax_base___MMSrcModule___node},
-  {(bigint) syntax_base___MMSrcModule___src_local_classes},
-  {(bigint) syntax_base___MMSrcModule___init},
-  {(bigint) typing___MMSrcModule___do_typing},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: RootFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) flow___FlowContext___check_is_set},
+  {(bigint) flow___FlowContext___stype},
+  {(bigint) flow___FlowContext___sub_setvariable},
+  {(bigint) flow___FlowContext___sub_unreash},
+  {(bigint) flow___FlowContext___sub_with},
+  {(bigint) flow___FlowContext___merge},
+  {(bigint) flow___FlowContext___merge_reash},
+  {(bigint) flow___FlowContext___node},
+  {(bigint) flow___FlowContext___init},
+  {(bigint) flow___FlowContext___unreash},
+  {(bigint) flow___FlowContext___already_unreash},
+  {(bigint) flow___FlowContext___already_unreash__eq},
+  {(bigint) flow___FlowContext___set_variables},
+  {(bigint) flow___FlowContext___is_set},
+  {(bigint) 2 /* 60: RootFlowContext < RootFlowContext: superclass init_table position */},
+  {(bigint) flow___RootFlowContext___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMSrcModule::_type_none */
-/* 2: Attribute MMSrcModule::_context */
-/* 3: Attribute MMSrcModule::_name */
-/* 4: Attribute MMSrcModule::_full_name */
-/* 5: Attribute MMSrcModule::_directory */
-/* 6: Attribute MMSrcModule::_filename */
-/* 7: Attribute MMSrcModule::_mhe */
-/* 8: Attribute MMSrcModule::_global_classes */
-/* 9: Attribute MMSrcModule::_local_classes */
-/* 10: Attribute MMSrcModule::_class_specialization_hierarchy */
-/* 11: Attribute MMSrcModule::_intrude_modules */
-/* 12: Attribute MMSrcModule::_public_modules */
-/* 13: Attribute MMSrcModule::_private_modules */
-/* 14: Attribute MMSrcModule::_explicit_imported_modules */
-/* 15: Attribute MMSrcModule::_local_class_by_global */
-/* 16: Attribute MMSrcModule::_global_class_by_name */
-/* 17: Attribute MMSrcModule::_local_table */
-/* 18: Attribute MMSrcModule::_node */
-/* 19: Attribute MMSrcModule::_src_local_classes */
-val_t NEW_MMSrcModule(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 20);
-  obj->vft = (classtable_elt_t*)VFT_MMSrcModule;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMModule____global_classes(obj) = NEW_Array_array___Array___init() /*new Array[MMGlobalClass]*/;
-  ATTR_abstractmetamodel___MMModule____local_classes(obj) = NEW_Array_array___Array___init() /*new Array[MMLocalClass]*/;
-  ATTR_abstractmetamodel___MMModule____class_specialization_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMLocalClass]*/;
-  ATTR_abstractmetamodel___MMModule____intrude_modules(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[MMModule]*/;
-  ATTR_abstractmetamodel___MMModule____public_modules(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[MMModule]*/;
-  ATTR_abstractmetamodel___MMModule____private_modules(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[MMModule]*/;
-  ATTR_abstractmetamodel___MMModule____explicit_imported_modules(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[MMModule]*/;
-  ATTR_abstractmetamodel___MMModule____local_class_by_global(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMGlobalClass, MMLocalClass]*/;
-  ATTR_abstractmetamodel___MMModule____global_class_by_name(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[Symbol, MMGlobalClass]*/;
-  ATTR_static_type___MMModule____type_none(obj) = NEW_MMTypeNone_static_type___MMTypeNone___init(variable[0]) /*new MMTypeNone*/;
-  ATTR_compiling_global___MMSrcModule____local_table(obj) = NEW_Array_array___Array___init() /*new Array[ModuleTableElt]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMSrcModule(val_t self, char *from) {
-}
-val_t NEW_MMSrcModule_syntax_base___MMSrcModule___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMSrcModule();
-  syntax_base___MMSrcModule___init(self, p0, p1, p2, p3, p4, init_table);
-  CHECKNEW_MMSrcModule(self, "syntax_base::MMSrcModule::init for MMSrcModule");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute RootFlowContext::_visitor */
+/* 3: Attribute RootFlowContext::_node */
+/* 4: Attribute RootFlowContext::_unreash */
+/* 5: Attribute RootFlowContext::_already_unreash */
+/* 6: Attribute RootFlowContext::_set_variables */
+void INIT_ATTRIBUTES__RootFlowContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__RootFlowContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//flow.nit:121 */
+  REGB0 = TAG_Bool(false);
+  ATTR_flow___FlowContext____unreash(fra.me.REG[0]) = REGB0;
+  /* ./syntax//flow.nit:125 */
+  REGB0 = TAG_Bool(false);
+  ATTR_flow___FlowContext____already_unreash(fra.me.REG[0]) = REGB0;
+  /* ./syntax//flow.nit:128 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_flow___FlowContext____set_variables(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMSrcLocalClass[119] = {
-  {(bigint) 3927 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMSrcLocalClass < Object: superclass typecheck marker */},
-  {(bigint) 107 /* 2: MMSrcLocalClass < MMLocalClass: superclass typecheck marker */},
-  {(bigint) 3295 /* 3: MMSrcLocalClass < MMConcreteClass: superclass typecheck marker */},
-  {(bigint) 3927 /* 4: MMSrcLocalClass < MMSrcLocalClass: superclass typecheck marker */},
+val_t NEW_RootFlowContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_RootFlowContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_RootFlowContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_RootFlowContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____visitor(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____node(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____unreash(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_unreash", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____already_unreash(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_already_unreash", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____set_variables(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_RootFlowContext_flow___RootFlowContext___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 140;
+  fra.me.meth = LOCATE_NEW_RootFlowContext_flow___RootFlowContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//flow.nit:140 */
+  fra.me.REG[2] = NEW_RootFlowContext();
+  INIT_ATTRIBUTES__RootFlowContext(fra.me.REG[2]);
+  flow___RootFlowContext___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_RootFlowContext(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_SubFlowContext[63] = {
+  {(bigint) 307 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: SubFlowContext < Object: superclass typecheck marker */},
+  {(bigint) 231 /* 3: SubFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 307 /* 4: SubFlowContext < SubFlowContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103705,14 +135954,10 @@ const classtable_elt_t VFT_MMSrcLocalClass[119] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalClass___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMSrcLocalClass < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: SubFlowContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -103720,7 +135965,6 @@ const classtable_elt_t VFT_MMSrcLocalClass[119] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -103728,144 +135972,151 @@ const classtable_elt_t VFT_MMSrcLocalClass[119] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) abstracttool___MMLocalClass___dump_properties},
-  {(bigint) mmbuilder___MMSrcLocalClass___accept_class_visitor},
-  {(bigint) mmbuilder___MMSrcLocalClass___accept_properties_visitor},
-  {(bigint) genericity___MMLocalClass___get_formal},
-  {(bigint) genericity___MMLocalClass___register_formal},
-  {(bigint) genericity___MMLocalClass___get_instantiate_type},
-  {(bigint) genericity___MMLocalClass___formals_types},
-  {(bigint) static_type___MMLocalClass___get_type},
-  {(bigint) genericity___MMLocalClass___is_generic},
-  {(bigint) inheritance___MMLocalClass___compute_super_classes},
-  {(bigint) inheritance___MMLocalClass___compute_ancestors},
-  {(bigint) inheritance___MMLocalClass___inherit_global_properties},
-  {(bigint) inheritance___MMLocalClass___make_visible_an_inherited_global_property},
-  {(bigint) inheritance___MMLocalClass___add_direct_parent},
-  {(bigint) inheritance___MMLocalClass___computed_super_classes},
-  {(bigint) inheritance___MMLocalClass___computed_ancestors},
-  {(bigint) inheritance___MMLocalClass___ancestor_for},
-  {(bigint) inheritance___MMLocalClass___add_default_any_class},
-  {(bigint) inheritance___MMLocalClass___add_super_classes},
-  {(bigint) inheritance___MMLocalClass___add_explicit_classes},
-  {(bigint) inheritance___MMLocalClass___compute_super_parents},
-  {(bigint) inheritance___MMLocalClass___build_ancestors},
-  {(bigint) inheritance___MMLocalClass___group_ancestors},
-  {(bigint) inheritance___MMLocalClass___merge_ancestors},
-  {(bigint) inheritance___MMLocalClass___inherit_local_property},
-  {(bigint) genericity___MMLocalClass___get_type},
-  {(bigint) static_type___MMLocalClass___add_ancestor},
-  {(bigint) static_type___MMLocalClass___ancestors},
-  {(bigint) static_type___MMLocalClass___ancestor},
-  {(bigint) 1 /* 72: MMSrcLocalClass < MMLocalClass: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalClass___name},
-  {(bigint) abstractmetamodel___MMLocalClass___arity},
-  {(bigint) abstractmetamodel___MMLocalClass___module},
-  {(bigint) abstractmetamodel___MMLocalClass___global},
-  {(bigint) abstractmetamodel___MMLocalClass___crhe},
-  {(bigint) abstractmetamodel___MMLocalClass___cshe},
-  {(bigint) abstractmetamodel___MMLocalClass___che},
-  {(bigint) abstractmetamodel___MMLocalClass___local_property_by_global},
-  {(bigint) abstractmetamodel___MMLocalClass___global_properties},
-  {(bigint) abstractmetamodel___MMLocalClass___properties_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___init},
-  {(bigint) abstractmetamodel___MMLocalClass___for_module},
-  {(bigint) abstractmetamodel___MMLocalClass___new_global},
-  {(bigint) abstractmetamodel___MMLocalClass___set_global},
-  {(bigint) abstractmetamodel___MMLocalClass___has_global_property_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___get_property_by_name},
-  {(bigint) abstractmetamodel___MMLocalClass___attribute},
-  {(bigint) abstractmetamodel___MMLocalClass___method},
-  {(bigint) abstractmetamodel___MMLocalClass___select_method},
-  {(bigint) abstractmetamodel___MMLocalClass___select_attribute},
-  {(bigint) abstractmetamodel___MMLocalClass___super_methods_named},
-  {(bigint) abstractmetamodel___MMLocalClass___register_local_property},
-  {(bigint) abstractmetamodel___MMLocalClass___register_global_property},
-  {(bigint) abstractmetamodel___MMLocalClass___has_global_property},
-  {(bigint) inheritance___MMLocalClass_____bra},
-  {(bigint) abstractmetamodel___MMLocalClass___context},
-  {(bigint) virtualtype___MMLocalClass___virtual_type},
-  {(bigint) virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) compiling_global___MMLocalClass___compare},
-  {(bigint) compiling_global___MMLocalClass___declare_tables_to_c},
-  {(bigint) compiling_global___MMLocalClass___compile_tables_to_c},
-  {(bigint) compiling_base___MMLocalClass___primitive_info},
-  {(bigint) compiling_base___MMLocalClass___primitive_ctypes},
-  {(bigint) 2 /* 106: MMSrcLocalClass < MMConcreteClass: superclass init_table position */},
-  {(bigint) compiling_global___MMSrcLocalClass___class_color_pos},
-  {(bigint) compiling_global___MMSrcLocalClass___class_layout},
-  {(bigint) compiling_global___MMSrcLocalClass___instance_layout},
-  {(bigint) compiling_global___MMSrcLocalClass___build_layout_in},
-  {(bigint) mmbuilder___MMSrcLocalClass___process_default_constructors},
-  {(bigint) mmbuilder___MMSrcLocalClass___add_src_local_property},
-  {(bigint) 3 /* 113: MMSrcLocalClass < MMSrcLocalClass: superclass init_table position */},
-  {(bigint) syntax_base___MMSrcLocalClass___nodes},
-  {(bigint) syntax_base___MMSrcLocalClass___formal_dict},
-  {(bigint) syntax_base___MMSrcLocalClass___formal_dict__eq},
-  {(bigint) syntax_base___MMSrcLocalClass___src_local_properties},
-  {(bigint) syntax_base___MMSrcLocalClass___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: SubFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) flow___FlowContext___check_is_set},
+  {(bigint) flow___SubFlowContext___stype},
+  {(bigint) flow___FlowContext___sub_setvariable},
+  {(bigint) flow___FlowContext___sub_unreash},
+  {(bigint) flow___FlowContext___sub_with},
+  {(bigint) flow___FlowContext___merge},
+  {(bigint) flow___FlowContext___merge_reash},
+  {(bigint) flow___FlowContext___node},
+  {(bigint) flow___FlowContext___init},
+  {(bigint) flow___FlowContext___unreash},
+  {(bigint) flow___FlowContext___already_unreash},
+  {(bigint) flow___FlowContext___already_unreash__eq},
+  {(bigint) flow___FlowContext___set_variables},
+  {(bigint) flow___SubFlowContext___is_set},
+  {(bigint) 2 /* 60: SubFlowContext < SubFlowContext: superclass init_table position */},
+  {(bigint) flow___SubFlowContext___prev},
+  {(bigint) flow___SubFlowContext___with_prev},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMSrcLocalClass::_types */
-/* 2: Attribute MMSrcLocalClass::_formals_types */
-/* 3: Attribute MMSrcLocalClass::_direct_parents */
-/* 4: Attribute MMSrcLocalClass::_computing_super */
-/* 5: Attribute MMSrcLocalClass::_base_type_cache */
-/* 6: Attribute MMSrcLocalClass::_ancestors */
-/* 7: Attribute MMSrcLocalClass::_name */
-/* 8: Attribute MMSrcLocalClass::_arity */
-/* 9: Attribute MMSrcLocalClass::_module */
-/* 10: Attribute MMSrcLocalClass::_global */
-/* 11: Attribute MMSrcLocalClass::_crhe */
-/* 12: Attribute MMSrcLocalClass::_cshe */
-/* 13: Attribute MMSrcLocalClass::_che */
-/* 14: Attribute MMSrcLocalClass::_local_property_by_global */
-/* 15: Attribute MMSrcLocalClass::_global_properties */
-/* 16: Attribute MMSrcLocalClass::_properties_by_name */
-/* 17: Attribute MMSrcLocalClass::_primitive_info_cache */
-/* 18: Attribute MMSrcLocalClass::_primitive_info_b */
-/* 19: Attribute MMSrcLocalClass::_class_color_pos */
-/* 20: Attribute MMSrcLocalClass::_class_layout */
-/* 21: Attribute MMSrcLocalClass::_instance_layout */
-/* 22: Attribute MMSrcLocalClass::_nodes */
-/* 23: Attribute MMSrcLocalClass::_formal_dict */
-/* 24: Attribute MMSrcLocalClass::_src_local_properties */
-val_t NEW_MMSrcLocalClass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 25);
-  obj->vft = (classtable_elt_t*)VFT_MMSrcLocalClass;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_inheritance___MMLocalClass____direct_parents(obj) = NEW_Array_array___Array___init() /*new Array[MMAncestor]*/;
-  ATTR_inheritance___MMLocalClass____computing_super(obj) =  TAG_Bool(false);
-  ATTR_genericity___MMLocalClass____types(obj) = NEW_Array_array___Array___init() /*new Array[MMTypeGeneric]*/;
-  ATTR_genericity___MMLocalClass____formals_types(obj) = NEW_Array_array___Array___init() /*new Array[MMTypeFormalParameter]*/;
-  ATTR_compiling_base___MMLocalClass____primitive_info_b(obj) =  TAG_Bool(false);
-  ATTR_compiling_global___MMSrcLocalClass____class_layout(obj) = NEW_Array_array___Array___init() /*new Array[TableElt]*/;
-  ATTR_compiling_global___MMSrcLocalClass____instance_layout(obj) = NEW_Array_array___Array___init() /*new Array[TableElt]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMSrcLocalClass(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute SubFlowContext::_visitor */
+/* 3: Attribute SubFlowContext::_node */
+/* 4: Attribute SubFlowContext::_unreash */
+/* 5: Attribute SubFlowContext::_already_unreash */
+/* 6: Attribute SubFlowContext::_set_variables */
+/* 7: Attribute SubFlowContext::_prev */
+void INIT_ATTRIBUTES__SubFlowContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__SubFlowContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//flow.nit:121 */
+  REGB0 = TAG_Bool(false);
+  ATTR_flow___FlowContext____unreash(fra.me.REG[0]) = REGB0;
+  /* ./syntax//flow.nit:125 */
+  REGB0 = TAG_Bool(false);
+  ATTR_flow___FlowContext____already_unreash(fra.me.REG[0]) = REGB0;
+  /* ./syntax//flow.nit:128 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_flow___FlowContext____set_variables(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMSrcLocalClass_syntax_base___MMSrcLocalClass___init(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_MMSrcLocalClass();
-  syntax_base___MMSrcLocalClass___init(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_MMSrcLocalClass(self, "syntax_base::MMSrcLocalClass::init for MMSrcLocalClass");
-  return self;
-}
-const classtable_elt_t VFT_MMSrcAttribute[71] = {
-  {(bigint) 3931 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMSrcAttribute < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMSrcAttribute < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 3299 /* 3: MMSrcAttribute < MMAttribute: superclass typecheck marker */},
-  {(bigint) 3931 /* 4: MMSrcAttribute < MMSrcAttribute: superclass typecheck marker */},
+val_t NEW_SubFlowContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_SubFlowContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_SubFlowContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_SubFlowContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_flow___SubFlowContext____prev(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_prev", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____visitor(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____node(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____unreash(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_unreash", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____already_unreash(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_already_unreash", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____set_variables(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_SubFlowContext_flow___SubFlowContext___with_prev(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 161;
+  fra.me.meth = LOCATE_NEW_SubFlowContext_flow___SubFlowContext___with_prev;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//flow.nit:161 */
+  fra.me.REG[2] = NEW_SubFlowContext();
+  INIT_ATTRIBUTES__SubFlowContext(fra.me.REG[2]);
+  flow___SubFlowContext___with_prev(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_SubFlowContext(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_CastFlowContext[65] = {
+  {(bigint) 2775 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: CastFlowContext < Object: superclass typecheck marker */},
+  {(bigint) 231 /* 3: CastFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 307 /* 4: CastFlowContext < SubFlowContext: superclass typecheck marker */},
+  {(bigint) 2775 /* 5: CastFlowContext < CastFlowContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103877,14 +136128,9 @@ const classtable_elt_t VFT_MMSrcAttribute[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMSrcAttribute < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: CastFlowContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -103892,7 +136138,6 @@ const classtable_elt_t VFT_MMSrcAttribute[71] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -103900,76 +136145,163 @@ const classtable_elt_t VFT_MMSrcAttribute[71] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMLocalProperty___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax_base___MMSrcAttribute___node},
-  {(bigint) syntax_base___MMLocalProperty___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMSrcAttribute < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling_methods___MMAttribute___compile_isset},
-  {(bigint) compiling_methods___MMAttribute___compile_read_access},
-  {(bigint) compiling_methods___MMAttribute___compile_write_access},
-  {(bigint) 2 /* 68: MMSrcAttribute < MMAttribute: superclass init_table position */},
-  {(bigint) 3 /* 69: MMSrcAttribute < MMSrcAttribute: superclass init_table position */},
-  {(bigint) syntax_base___MMSrcAttribute___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: CastFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) flow___FlowContext___check_is_set},
+  {(bigint) flow___CastFlowContext___stype},
+  {(bigint) flow___FlowContext___sub_setvariable},
+  {(bigint) flow___FlowContext___sub_unreash},
+  {(bigint) flow___FlowContext___sub_with},
+  {(bigint) flow___FlowContext___merge},
+  {(bigint) flow___FlowContext___merge_reash},
+  {(bigint) flow___FlowContext___node},
+  {(bigint) flow___FlowContext___init},
+  {(bigint) flow___FlowContext___unreash},
+  {(bigint) flow___FlowContext___already_unreash},
+  {(bigint) flow___FlowContext___already_unreash__eq},
+  {(bigint) flow___FlowContext___set_variables},
+  {(bigint) flow___SubFlowContext___is_set},
+  {(bigint) 2 /* 60: CastFlowContext < SubFlowContext: superclass init_table position */},
+  {(bigint) flow___SubFlowContext___prev},
+  {(bigint) flow___SubFlowContext___with_prev},
+  {(bigint) 3 /* 63: CastFlowContext < CastFlowContext: superclass init_table position */},
+  {(bigint) flow___CastFlowContext___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMSrcAttribute::_cname_cache */
-/* 2: Attribute MMSrcAttribute::_signature */
-/* 3: Attribute MMSrcAttribute::_signatures_cache */
-/* 4: Attribute MMSrcAttribute::_name */
-/* 5: Attribute MMSrcAttribute::_local_class */
-/* 6: Attribute MMSrcAttribute::_global */
-/* 7: Attribute MMSrcAttribute::_prhe */
-/* 8: Attribute MMSrcAttribute::_need_super */
-/* 9: Attribute MMSrcAttribute::_node */
-val_t NEW_MMSrcAttribute(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute CastFlowContext::_visitor */
+/* 3: Attribute CastFlowContext::_node */
+/* 4: Attribute CastFlowContext::_unreash */
+/* 5: Attribute CastFlowContext::_already_unreash */
+/* 6: Attribute CastFlowContext::_set_variables */
+/* 7: Attribute CastFlowContext::_prev */
+/* 8: Attribute CastFlowContext::_variable */
+/* 9: Attribute CastFlowContext::_stype */
+void INIT_ATTRIBUTES__CastFlowContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__CastFlowContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//flow.nit:121 */
+  REGB0 = TAG_Bool(false);
+  ATTR_flow___FlowContext____unreash(fra.me.REG[0]) = REGB0;
+  /* ./syntax//flow.nit:125 */
+  REGB0 = TAG_Bool(false);
+  ATTR_flow___FlowContext____already_unreash(fra.me.REG[0]) = REGB0;
+  /* ./syntax//flow.nit:128 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_flow___FlowContext____set_variables(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_CastFlowContext(void)
+{
   obj_t obj;
   obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_MMSrcAttribute;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMSrcAttribute(val_t self, char *from) {
+  obj->vft = (classtable_elt_t*)VFT_CastFlowContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_CastFlowContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_CastFlowContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_flow___CastFlowContext____variable(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_variable", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___SubFlowContext____prev(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_prev", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____visitor(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____node(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____unreash(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_unreash", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____already_unreash(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_already_unreash", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____set_variables(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMSrcAttribute_syntax_base___MMSrcAttribute___init(val_t p0, val_t p1, val_t p2) {
+val_t NEW_CastFlowContext_flow___CastFlowContext___init(val_t p0, val_t p1, val_t p2, val_t p3){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_MMSrcAttribute();
-  syntax_base___MMSrcAttribute___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMSrcAttribute(self, "syntax_base::MMSrcAttribute::init for MMSrcAttribute");
-  return self;
-}
-const classtable_elt_t VFT_MMSrcMethod[76] = {
-  {(bigint) 3923 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMSrcMethod < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMSrcMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 3283 /* 3: MMSrcMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 3923 /* 4: MMSrcMethod < MMSrcMethod: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 186;
+  fra.me.meth = LOCATE_NEW_CastFlowContext_flow___CastFlowContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  fra.me.REG[3] = p3;
+  /* ./syntax//flow.nit:186 */
+  fra.me.REG[4] = NEW_CastFlowContext();
+  INIT_ATTRIBUTES__CastFlowContext(fra.me.REG[4]);
+  flow___CastFlowContext___init(fra.me.REG[4], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
+  CHECKNEW_CastFlowContext(fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+const classtable_elt_t VFT_MergeFlowContext[63] = {
+  {(bigint) 1911 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: MergeFlowContext < Object: superclass typecheck marker */},
+  {(bigint) 231 /* 3: MergeFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 1911 /* 4: MergeFlowContext < MergeFlowContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103981,14 +136313,10 @@ const classtable_elt_t VFT_MMSrcMethod[76] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMSrcMethod < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: MergeFlowContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -103996,7 +136324,6 @@ const classtable_elt_t VFT_MMSrcMethod[76] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -104004,81 +136331,166 @@ const classtable_elt_t VFT_MMSrcMethod[76] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMSrcMethod___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax_base___MMLocalProperty___node},
-  {(bigint) syntax_base___MMLocalProperty___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMSrcMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling_methods___MMMethod___compile_expr_call},
-  {(bigint) compiling_methods___MMMethod___compile_stmt_call},
-  {(bigint) compiling_methods___MMMethod___intern_compile_call},
-  {(bigint) compiling_methods___MMMethod___compile_call_and_closures},
-  {(bigint) compiling_methods___MMMethod___compile_constructor_call},
-  {(bigint) compiling_methods___MMMethod___compile_super_call},
-  {(bigint) compiling_methods___MMMethod___closure_cname},
-  {(bigint) 2 /* 72: MMSrcMethod < MMMethod: superclass init_table position */},
-  {(bigint) compiling_methods___MMSrcMethod___decl_csignature},
-  {(bigint) compiling_methods___MMSrcMethod___do_compile_inside},
-  {(bigint) 3 /* 75: MMSrcMethod < MMSrcMethod: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute MMSrcMethod::_cname_cache */
-/* 2: Attribute MMSrcMethod::_signature */
-/* 3: Attribute MMSrcMethod::_signatures_cache */
-/* 4: Attribute MMSrcMethod::_name */
-/* 5: Attribute MMSrcMethod::_local_class */
-/* 6: Attribute MMSrcMethod::_global */
-/* 7: Attribute MMSrcMethod::_prhe */
-/* 8: Attribute MMSrcMethod::_need_super */
-val_t NEW_MMSrcMethod(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_MMSrcMethod;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMSrcMethod(val_t self, char *from) {
-}
-val_t NEW_MMSrcMethod_abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_MMSrcMethod();
-  abstractmetamodel___MMLocalProperty___init(self, p0, p1, init_table);
-  CHECKNEW_MMSrcMethod(self, "abstractmetamodel::MMLocalProperty::init for MMSrcMethod");
-  return self;
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: MergeFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) flow___FlowContext___check_is_set},
+  {(bigint) flow___MergeFlowContext___stype},
+  {(bigint) flow___FlowContext___sub_setvariable},
+  {(bigint) flow___FlowContext___sub_unreash},
+  {(bigint) flow___FlowContext___sub_with},
+  {(bigint) flow___FlowContext___merge},
+  {(bigint) flow___FlowContext___merge_reash},
+  {(bigint) flow___FlowContext___node},
+  {(bigint) flow___FlowContext___init},
+  {(bigint) flow___FlowContext___unreash},
+  {(bigint) flow___FlowContext___already_unreash},
+  {(bigint) flow___FlowContext___already_unreash__eq},
+  {(bigint) flow___FlowContext___set_variables},
+  {(bigint) flow___MergeFlowContext___is_set},
+  {(bigint) 2 /* 60: MergeFlowContext < MergeFlowContext: superclass init_table position */},
+  {(bigint) flow___MergeFlowContext___init},
+  {(bigint) flow___MergeFlowContext___merge_stype},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MergeFlowContext::_visitor */
+/* 3: Attribute MergeFlowContext::_node */
+/* 4: Attribute MergeFlowContext::_unreash */
+/* 5: Attribute MergeFlowContext::_already_unreash */
+/* 6: Attribute MergeFlowContext::_set_variables */
+/* 7: Attribute MergeFlowContext::_base */
+/* 8: Attribute MergeFlowContext::_alts */
+/* 9: Attribute MergeFlowContext::_stypes */
+void INIT_ATTRIBUTES__MergeFlowContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__MergeFlowContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//flow.nit:202 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_flow___MergeFlowContext____stypes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//flow.nit:121 */
+  REGB0 = TAG_Bool(false);
+  ATTR_flow___FlowContext____unreash(fra.me.REG[0]) = REGB0;
+  /* ./syntax//flow.nit:125 */
+  REGB0 = TAG_Bool(false);
+  ATTR_flow___FlowContext____already_unreash(fra.me.REG[0]) = REGB0;
+  /* ./syntax//flow.nit:128 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_flow___FlowContext____set_variables(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMAttrImplementationMethod[78] = {
-  {(bigint) 4047 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMAttrImplementationMethod < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMAttrImplementationMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 3283 /* 3: MMAttrImplementationMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 3923 /* 4: MMAttrImplementationMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 4047 /* 5: MMAttrImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
+val_t NEW_MergeFlowContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_MergeFlowContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_MergeFlowContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_MergeFlowContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_flow___MergeFlowContext____base(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_base", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___MergeFlowContext____alts(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_alts", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___MergeFlowContext____stypes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stypes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____visitor(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____node(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____unreash(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_unreash", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____already_unreash(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_already_unreash", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_flow___FlowContext____set_variables(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_set_variables", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_MergeFlowContext_flow___MergeFlowContext___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 204;
+  fra.me.meth = LOCATE_NEW_MergeFlowContext_flow___MergeFlowContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//flow.nit:204 */
+  fra.me.REG[3] = NEW_MergeFlowContext();
+  INIT_ATTRIBUTES__MergeFlowContext(fra.me.REG[3]);
+  flow___MergeFlowContext___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_MergeFlowContext(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_ScopeContext[55] = {
+  {(bigint) 51 /* 0: Identity */},
+  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ScopeContext < Object: superclass typecheck marker */},
+  {(bigint) 51 /* 3: ScopeContext < ScopeContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104089,14 +136501,12 @@ const classtable_elt_t VFT_MMAttrImplementationMethod[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMAttrImplementationMethod < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ScopeContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -104104,7 +136514,6 @@ const classtable_elt_t VFT_MMAttrImplementationMethod[78] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -104112,85 +136521,126 @@ const classtable_elt_t VFT_MMAttrImplementationMethod[78] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMSrcMethod___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax_base___MMAttrImplementationMethod___node},
-  {(bigint) syntax_base___MMLocalProperty___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMAttrImplementationMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling_methods___MMMethod___compile_expr_call},
-  {(bigint) compiling_methods___MMMethod___compile_stmt_call},
-  {(bigint) compiling_methods___MMMethod___intern_compile_call},
-  {(bigint) compiling_methods___MMMethod___compile_call_and_closures},
-  {(bigint) compiling_methods___MMMethod___compile_constructor_call},
-  {(bigint) compiling_methods___MMMethod___compile_super_call},
-  {(bigint) compiling_methods___MMMethod___closure_cname},
-  {(bigint) 2 /* 72: MMAttrImplementationMethod < MMMethod: superclass init_table position */},
-  {(bigint) compiling_methods___MMSrcMethod___decl_csignature},
-  {(bigint) compiling_methods___MMSrcMethod___do_compile_inside},
-  {(bigint) 3 /* 75: MMAttrImplementationMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 76: MMAttrImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
-  {(bigint) syntax_base___MMAttrImplementationMethod___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ScopeContext < ScopeContext: superclass init_table position */},
+  {(bigint) scope___ScopeContext_____bra},
+  {(bigint) scope___ScopeContext___add_variable},
+  {(bigint) scope___ScopeContext___push},
+  {(bigint) scope___ScopeContext___push_escapable},
+  {(bigint) scope___ScopeContext___head},
+  {(bigint) scope___ScopeContext___get_by_label},
+  {(bigint) scope___ScopeContext___pop},
+  {(bigint) scope___ScopeContext___visitor},
+  {(bigint) scope___ScopeContext___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMAttrImplementationMethod::_cname_cache */
-/* 2: Attribute MMAttrImplementationMethod::_signature */
-/* 3: Attribute MMAttrImplementationMethod::_signatures_cache */
-/* 4: Attribute MMAttrImplementationMethod::_name */
-/* 5: Attribute MMAttrImplementationMethod::_local_class */
-/* 6: Attribute MMAttrImplementationMethod::_global */
-/* 7: Attribute MMAttrImplementationMethod::_prhe */
-/* 8: Attribute MMAttrImplementationMethod::_need_super */
-/* 9: Attribute MMAttrImplementationMethod::_node */
-val_t NEW_MMAttrImplementationMethod(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_MMAttrImplementationMethod;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMAttrImplementationMethod(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ScopeContext::_stack */
+/* 3: Attribute ScopeContext::_variables */
+/* 4: Attribute ScopeContext::_labels */
+/* 5: Attribute ScopeContext::_visitor */
+void INIT_ATTRIBUTES__ScopeContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ScopeContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//scope.nit:33 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_scope___ScopeContext____stack(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//scope.nit:38 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_scope___ScopeContext____variables(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//scope.nit:43 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_scope___ScopeContext____labels(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMAttrImplementationMethod_syntax_base___MMAttrImplementationMethod___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_MMAttrImplementationMethod();
-  syntax_base___MMAttrImplementationMethod___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMAttrImplementationMethod(self, "syntax_base::MMAttrImplementationMethod::init for MMAttrImplementationMethod");
-  return self;
+val_t NEW_ScopeContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 6);
+  obj->vft = (classtable_elt_t*)VFT_ScopeContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ScopeContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ScopeContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_scope___ScopeContext____stack(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_stack", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_scope___ScopeContext____variables(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_variables", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_scope___ScopeContext____labels(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_labels", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_scope___ScopeContext____visitor(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMReadImplementationMethod[80] = {
-  {(bigint) 4395 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMReadImplementationMethod < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMReadImplementationMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 3283 /* 3: MMReadImplementationMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 3923 /* 4: MMReadImplementationMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 4047 /* 5: MMReadImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
-  {(bigint) 4395 /* 6: MMReadImplementationMethod < MMReadImplementationMethod: superclass typecheck marker */},
+val_t NEW_ScopeContext_scope___ScopeContext___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 129;
+  fra.me.meth = LOCATE_NEW_ScopeContext_scope___ScopeContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//scope.nit:129 */
+  fra.me.REG[1] = NEW_ScopeContext();
+  INIT_ATTRIBUTES__ScopeContext(fra.me.REG[1]);
+  scope___ScopeContext___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ScopeContext(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ScopeBlock[50] = {
+  {(bigint) 55 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ScopeBlock < Object: superclass typecheck marker */},
+  {(bigint) 55 /* 3: ScopeBlock < ScopeBlock: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104200,14 +136650,13 @@ const classtable_elt_t VFT_MMReadImplementationMethod[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMReadImplementationMethod < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ScopeBlock < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -104215,7 +136664,6 @@ const classtable_elt_t VFT_MMReadImplementationMethod[80] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -104223,87 +136671,99 @@ const classtable_elt_t VFT_MMReadImplementationMethod[80] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMSrcMethod___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax_base___MMAttrImplementationMethod___node},
-  {(bigint) syntax_base___MMLocalProperty___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMReadImplementationMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling_methods___MMMethod___compile_expr_call},
-  {(bigint) compiling_methods___MMMethod___compile_stmt_call},
-  {(bigint) compiling_methods___MMMethod___intern_compile_call},
-  {(bigint) compiling_methods___MMMethod___compile_call_and_closures},
-  {(bigint) compiling_methods___MMMethod___compile_constructor_call},
-  {(bigint) compiling_methods___MMMethod___compile_super_call},
-  {(bigint) compiling_methods___MMMethod___closure_cname},
-  {(bigint) 2 /* 72: MMReadImplementationMethod < MMMethod: superclass init_table position */},
-  {(bigint) compiling_methods___MMSrcMethod___decl_csignature},
-  {(bigint) compiling_methods___MMReadImplementationMethod___do_compile_inside},
-  {(bigint) 3 /* 75: MMReadImplementationMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 76: MMReadImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
-  {(bigint) syntax_base___MMAttrImplementationMethod___init},
-  {(bigint) 5 /* 78: MMReadImplementationMethod < MMReadImplementationMethod: superclass init_table position */},
-  {(bigint) syntax_base___MMReadImplementationMethod___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ScopeBlock < ScopeBlock: superclass init_table position */},
+  {(bigint) scope___ScopeBlock___node},
+  {(bigint) scope___ScopeBlock___add_variable},
+  {(bigint) scope___ScopeBlock___get_variable},
+  {(bigint) scope___ScopeBlock___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMReadImplementationMethod::_cname_cache */
-/* 2: Attribute MMReadImplementationMethod::_signature */
-/* 3: Attribute MMReadImplementationMethod::_signatures_cache */
-/* 4: Attribute MMReadImplementationMethod::_name */
-/* 5: Attribute MMReadImplementationMethod::_local_class */
-/* 6: Attribute MMReadImplementationMethod::_global */
-/* 7: Attribute MMReadImplementationMethod::_prhe */
-/* 8: Attribute MMReadImplementationMethod::_need_super */
-/* 9: Attribute MMReadImplementationMethod::_node */
-val_t NEW_MMReadImplementationMethod(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_MMReadImplementationMethod;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMReadImplementationMethod(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ScopeBlock::_node */
+/* 3: Attribute ScopeBlock::_dico */
+void INIT_ATTRIBUTES__ScopeBlock(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ScopeBlock;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//scope.nit:143 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_scope___ScopeBlock____dico(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMReadImplementationMethod_syntax_base___MMReadImplementationMethod___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_MMReadImplementationMethod();
-  syntax_base___MMReadImplementationMethod___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMReadImplementationMethod(self, "syntax_base::MMReadImplementationMethod::init for MMReadImplementationMethod");
-  return self;
+val_t NEW_ScopeBlock(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_ScopeBlock;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ScopeBlock(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ScopeBlock;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_scope___ScopeBlock____node(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMWriteImplementationMethod[80] = {
-  {(bigint) 4391 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMWriteImplementationMethod < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMWriteImplementationMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 3283 /* 3: MMWriteImplementationMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 3923 /* 4: MMWriteImplementationMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 4047 /* 5: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
-  {(bigint) 4391 /* 6: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass typecheck marker */},
+val_t NEW_ScopeBlock_scope___ScopeBlock___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 165;
+  fra.me.meth = LOCATE_NEW_ScopeBlock_scope___ScopeBlock___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//scope.nit:165 */
+  fra.me.REG[1] = NEW_ScopeBlock();
+  INIT_ATTRIBUTES__ScopeBlock(fra.me.REG[1]);
+  scope___ScopeBlock___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ScopeBlock(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_EscapableBlock[65] = {
+  {(bigint) 2063 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: EscapableBlock < Object: superclass typecheck marker */},
+  {(bigint) 55 /* 3: EscapableBlock < ScopeBlock: superclass typecheck marker */},
+  {(bigint) 2063 /* 4: EscapableBlock < EscapableBlock: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104313,14 +136773,12 @@ const classtable_elt_t VFT_MMWriteImplementationMethod[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMWriteImplementationMethod < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: EscapableBlock < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -104328,7 +136786,6 @@ const classtable_elt_t VFT_MMWriteImplementationMethod[80] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -104336,86 +136793,129 @@ const classtable_elt_t VFT_MMWriteImplementationMethod[80] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMSrcMethod___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax_base___MMAttrImplementationMethod___node},
-  {(bigint) syntax_base___MMLocalProperty___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMWriteImplementationMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling_methods___MMMethod___compile_expr_call},
-  {(bigint) compiling_methods___MMMethod___compile_stmt_call},
-  {(bigint) compiling_methods___MMMethod___intern_compile_call},
-  {(bigint) compiling_methods___MMMethod___compile_call_and_closures},
-  {(bigint) compiling_methods___MMMethod___compile_constructor_call},
-  {(bigint) compiling_methods___MMMethod___compile_super_call},
-  {(bigint) compiling_methods___MMMethod___closure_cname},
-  {(bigint) 2 /* 72: MMWriteImplementationMethod < MMMethod: superclass init_table position */},
-  {(bigint) compiling_methods___MMSrcMethod___decl_csignature},
-  {(bigint) compiling_methods___MMWriteImplementationMethod___do_compile_inside},
-  {(bigint) 3 /* 75: MMWriteImplementationMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 76: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
-  {(bigint) syntax_base___MMAttrImplementationMethod___init},
-  {(bigint) 5 /* 78: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass init_table position */},
-  {(bigint) syntax_base___MMWriteImplementationMethod___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: EscapableBlock < ScopeBlock: superclass init_table position */},
+  {(bigint) scope___ScopeBlock___node},
+  {(bigint) scope___ScopeBlock___add_variable},
+  {(bigint) scope___ScopeBlock___get_variable},
+  {(bigint) scope___ScopeBlock___init},
+  {(bigint) icode_generation___EscapableBlock___break_seq},
+  {(bigint) icode_generation___EscapableBlock___break_seq__eq},
+  {(bigint) icode_generation___EscapableBlock___continue_seq},
+  {(bigint) icode_generation___EscapableBlock___continue_seq__eq},
+  {(bigint) icode_generation___EscapableBlock___break_value},
+  {(bigint) icode_generation___EscapableBlock___break_value__eq},
+  {(bigint) icode_generation___EscapableBlock___continue_value},
+  {(bigint) icode_generation___EscapableBlock___continue_value__eq},
+  {(bigint) 2 /* 58: EscapableBlock < EscapableBlock: superclass init_table position */},
+  {(bigint) scope___EscapableBlock___lab},
+  {(bigint) scope___EscapableBlock___is_break_block},
+  {(bigint) scope___EscapableBlock___break_list},
+  {(bigint) scope___EscapableBlock___continue_stype},
+  {(bigint) scope___EscapableBlock___break_flow_contexts},
+  {(bigint) scope___EscapableBlock___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMWriteImplementationMethod::_cname_cache */
-/* 2: Attribute MMWriteImplementationMethod::_signature */
-/* 3: Attribute MMWriteImplementationMethod::_signatures_cache */
-/* 4: Attribute MMWriteImplementationMethod::_name */
-/* 5: Attribute MMWriteImplementationMethod::_local_class */
-/* 6: Attribute MMWriteImplementationMethod::_global */
-/* 7: Attribute MMWriteImplementationMethod::_prhe */
-/* 8: Attribute MMWriteImplementationMethod::_need_super */
-/* 9: Attribute MMWriteImplementationMethod::_node */
-val_t NEW_MMWriteImplementationMethod(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute EscapableBlock::_node */
+/* 3: Attribute EscapableBlock::_dico */
+/* 4: Attribute EscapableBlock::_break_seq */
+/* 5: Attribute EscapableBlock::_continue_seq */
+/* 6: Attribute EscapableBlock::_break_value */
+/* 7: Attribute EscapableBlock::_continue_value */
+/* 8: Attribute EscapableBlock::_lab */
+/* 9: Attribute EscapableBlock::_break_flow_contexts */
+void INIT_ATTRIBUTES__EscapableBlock(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__EscapableBlock;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//scope.nit:194 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_scope___EscapableBlock____break_flow_contexts(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//scope.nit:143 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_scope___ScopeBlock____dico(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_EscapableBlock(void)
+{
   obj_t obj;
   obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_MMWriteImplementationMethod;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMWriteImplementationMethod(val_t self, char *from) {
-}
-val_t NEW_MMWriteImplementationMethod_syntax_base___MMWriteImplementationMethod___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_MMWriteImplementationMethod();
-  syntax_base___MMWriteImplementationMethod___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMWriteImplementationMethod(self, "syntax_base::MMWriteImplementationMethod::init for MMWriteImplementationMethod");
-  return self;
-}
-const classtable_elt_t VFT_MMMethSrcMethod[78] = {
-  {(bigint) 4043 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMMethSrcMethod < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMMethSrcMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 3283 /* 3: MMMethSrcMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 3923 /* 4: MMMethSrcMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 4043 /* 5: MMMethSrcMethod < MMMethSrcMethod: superclass typecheck marker */},
+  obj->vft = (classtable_elt_t*)VFT_EscapableBlock;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_EscapableBlock(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_EscapableBlock;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_scope___EscapableBlock____break_flow_contexts(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_break_flow_contexts", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_scope___ScopeBlock____node(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_EscapableBlock_scope___EscapableBlock___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 196;
+  fra.me.meth = LOCATE_NEW_EscapableBlock_scope___EscapableBlock___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//scope.nit:196 */
+  fra.me.REG[1] = NEW_EscapableBlock();
+  INIT_ATTRIBUTES__EscapableBlock(fra.me.REG[1]);
+  scope___EscapableBlock___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_EscapableBlock(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_BreakOnlyEscapableBlock[67] = {
+  {(bigint) 2783 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: BreakOnlyEscapableBlock < Object: superclass typecheck marker */},
+  {(bigint) 55 /* 3: BreakOnlyEscapableBlock < ScopeBlock: superclass typecheck marker */},
+  {(bigint) 2063 /* 4: BreakOnlyEscapableBlock < EscapableBlock: superclass typecheck marker */},
+  {(bigint) 2783 /* 5: BreakOnlyEscapableBlock < BreakOnlyEscapableBlock: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104426,14 +136926,10 @@ const classtable_elt_t VFT_MMMethSrcMethod[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMMethSrcMethod < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: BreakOnlyEscapableBlock < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -104441,7 +136937,6 @@ const classtable_elt_t VFT_MMMethSrcMethod[78] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -104449,83 +136944,131 @@ const classtable_elt_t VFT_MMMethSrcMethod[78] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMSrcMethod___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax_base___MMMethSrcMethod___node},
-  {(bigint) syntax_base___MMMethSrcMethod___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMMethSrcMethod < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling_methods___MMMethod___compile_expr_call},
-  {(bigint) compiling_methods___MMMethod___compile_stmt_call},
-  {(bigint) compiling_methods___MMMethod___intern_compile_call},
-  {(bigint) compiling_methods___MMMethod___compile_call_and_closures},
-  {(bigint) compiling_methods___MMMethod___compile_constructor_call},
-  {(bigint) compiling_methods___MMMethod___compile_super_call},
-  {(bigint) compiling_methods___MMMethod___closure_cname},
-  {(bigint) 2 /* 72: MMMethSrcMethod < MMMethod: superclass init_table position */},
-  {(bigint) compiling_methods___MMSrcMethod___decl_csignature},
-  {(bigint) compiling_methods___MMMethSrcMethod___do_compile_inside},
-  {(bigint) 3 /* 75: MMMethSrcMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 76: MMMethSrcMethod < MMMethSrcMethod: superclass init_table position */},
-  {(bigint) syntax_base___MMMethSrcMethod___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: BreakOnlyEscapableBlock < ScopeBlock: superclass init_table position */},
+  {(bigint) scope___ScopeBlock___node},
+  {(bigint) scope___ScopeBlock___add_variable},
+  {(bigint) scope___ScopeBlock___get_variable},
+  {(bigint) scope___ScopeBlock___init},
+  {(bigint) icode_generation___EscapableBlock___break_seq},
+  {(bigint) icode_generation___EscapableBlock___break_seq__eq},
+  {(bigint) icode_generation___EscapableBlock___continue_seq},
+  {(bigint) icode_generation___EscapableBlock___continue_seq__eq},
+  {(bigint) icode_generation___EscapableBlock___break_value},
+  {(bigint) icode_generation___EscapableBlock___break_value__eq},
+  {(bigint) icode_generation___EscapableBlock___continue_value},
+  {(bigint) icode_generation___EscapableBlock___continue_value__eq},
+  {(bigint) 2 /* 58: BreakOnlyEscapableBlock < EscapableBlock: superclass init_table position */},
+  {(bigint) scope___EscapableBlock___lab},
+  {(bigint) scope___BreakOnlyEscapableBlock___is_break_block},
+  {(bigint) scope___EscapableBlock___break_list},
+  {(bigint) scope___EscapableBlock___continue_stype},
+  {(bigint) scope___EscapableBlock___break_flow_contexts},
+  {(bigint) scope___EscapableBlock___init},
+  {(bigint) 3 /* 65: BreakOnlyEscapableBlock < BreakOnlyEscapableBlock: superclass init_table position */},
+  {(bigint) scope___BreakOnlyEscapableBlock___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMMethSrcMethod::_cname_cache */
-/* 2: Attribute MMMethSrcMethod::_signature */
-/* 3: Attribute MMMethSrcMethod::_signatures_cache */
-/* 4: Attribute MMMethSrcMethod::_name */
-/* 5: Attribute MMMethSrcMethod::_local_class */
-/* 6: Attribute MMMethSrcMethod::_global */
-/* 7: Attribute MMMethSrcMethod::_prhe */
-/* 8: Attribute MMMethSrcMethod::_need_super */
-/* 9: Attribute MMMethSrcMethod::_node */
-val_t NEW_MMMethSrcMethod(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute BreakOnlyEscapableBlock::_node */
+/* 3: Attribute BreakOnlyEscapableBlock::_dico */
+/* 4: Attribute BreakOnlyEscapableBlock::_break_seq */
+/* 5: Attribute BreakOnlyEscapableBlock::_continue_seq */
+/* 6: Attribute BreakOnlyEscapableBlock::_break_value */
+/* 7: Attribute BreakOnlyEscapableBlock::_continue_value */
+/* 8: Attribute BreakOnlyEscapableBlock::_lab */
+/* 9: Attribute BreakOnlyEscapableBlock::_break_flow_contexts */
+void INIT_ATTRIBUTES__BreakOnlyEscapableBlock(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__BreakOnlyEscapableBlock;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//scope.nit:194 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_scope___EscapableBlock____break_flow_contexts(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//scope.nit:143 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_scope___ScopeBlock____dico(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_BreakOnlyEscapableBlock(void)
+{
   obj_t obj;
   obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_MMMethSrcMethod;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMMethSrcMethod(val_t self, char *from) {
-}
-val_t NEW_MMMethSrcMethod_syntax_base___MMMethSrcMethod___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_MMMethSrcMethod();
-  syntax_base___MMMethSrcMethod___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMMethSrcMethod(self, "syntax_base::MMMethSrcMethod::init for MMMethSrcMethod");
-  return self;
+  obj->vft = (classtable_elt_t*)VFT_BreakOnlyEscapableBlock;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_BreakOnlyEscapableBlock(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_BreakOnlyEscapableBlock;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_scope___EscapableBlock____break_flow_contexts(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_break_flow_contexts", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_scope___ScopeBlock____node(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_MMSrcTypeProperty[70] = {
-  {(bigint) 3919 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMSrcTypeProperty < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMSrcTypeProperty < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 3247 /* 3: MMSrcTypeProperty < MMTypeProperty: superclass typecheck marker */},
-  {(bigint) 3919 /* 4: MMSrcTypeProperty < MMSrcTypeProperty: superclass typecheck marker */},
+val_t NEW_BreakOnlyEscapableBlock_scope___BreakOnlyEscapableBlock___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 207;
+  fra.me.meth = LOCATE_NEW_BreakOnlyEscapableBlock_scope___BreakOnlyEscapableBlock___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//scope.nit:207 */
+  fra.me.REG[1] = NEW_BreakOnlyEscapableBlock();
+  INIT_ATTRIBUTES__BreakOnlyEscapableBlock(fra.me.REG[1]);
+  scope___BreakOnlyEscapableBlock___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_BreakOnlyEscapableBlock(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_EscapableClosure[68] = {
+  {(bigint) 2747 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: EscapableClosure < Object: superclass typecheck marker */},
+  {(bigint) 55 /* 3: EscapableClosure < ScopeBlock: superclass typecheck marker */},
+  {(bigint) 2063 /* 4: EscapableClosure < EscapableBlock: superclass typecheck marker */},
+  {(bigint) 2747 /* 5: EscapableClosure < EscapableClosure: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104537,14 +137080,9 @@ const classtable_elt_t VFT_MMSrcTypeProperty[70] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMSrcTypeProperty < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: EscapableClosure < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -104552,7 +137090,6 @@ const classtable_elt_t VFT_MMSrcTypeProperty[70] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -104560,80 +137097,145 @@ const classtable_elt_t VFT_MMSrcTypeProperty[70] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMLocalProperty___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMLocalProperty___accept_property_visitor},
-  {(bigint) syntax_base___MMSrcTypeProperty___node},
-  {(bigint) syntax_base___MMLocalProperty___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMSrcTypeProperty < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
-  {(bigint) 2 /* 65: MMSrcTypeProperty < MMTypeProperty: superclass init_table position */},
-  {(bigint) virtualtype___MMTypeProperty___stype_for},
-  {(bigint) virtualtype___MMTypeProperty___real_stype_for},
-  {(bigint) 3 /* 68: MMSrcTypeProperty < MMSrcTypeProperty: superclass init_table position */},
-  {(bigint) syntax_base___MMSrcTypeProperty___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: EscapableClosure < ScopeBlock: superclass init_table position */},
+  {(bigint) scope___ScopeBlock___node},
+  {(bigint) scope___ScopeBlock___add_variable},
+  {(bigint) scope___ScopeBlock___get_variable},
+  {(bigint) scope___ScopeBlock___init},
+  {(bigint) icode_generation___EscapableBlock___break_seq},
+  {(bigint) icode_generation___EscapableBlock___break_seq__eq},
+  {(bigint) icode_generation___EscapableBlock___continue_seq},
+  {(bigint) icode_generation___EscapableBlock___continue_seq__eq},
+  {(bigint) icode_generation___EscapableBlock___break_value},
+  {(bigint) icode_generation___EscapableBlock___break_value__eq},
+  {(bigint) icode_generation___EscapableBlock___continue_value},
+  {(bigint) icode_generation___EscapableBlock___continue_value__eq},
+  {(bigint) 2 /* 58: EscapableClosure < EscapableBlock: superclass init_table position */},
+  {(bigint) scope___EscapableBlock___lab},
+  {(bigint) scope___EscapableClosure___is_break_block},
+  {(bigint) scope___EscapableClosure___break_list},
+  {(bigint) scope___EscapableClosure___continue_stype},
+  {(bigint) scope___EscapableBlock___break_flow_contexts},
+  {(bigint) scope___EscapableBlock___init},
+  {(bigint) 3 /* 65: EscapableClosure < EscapableClosure: superclass init_table position */},
+  {(bigint) scope___EscapableClosure___closure},
+  {(bigint) scope___EscapableClosure___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMSrcTypeProperty::_cname_cache */
-/* 2: Attribute MMSrcTypeProperty::_signature */
-/* 3: Attribute MMSrcTypeProperty::_signatures_cache */
-/* 4: Attribute MMSrcTypeProperty::_name */
-/* 5: Attribute MMSrcTypeProperty::_local_class */
-/* 6: Attribute MMSrcTypeProperty::_global */
-/* 7: Attribute MMSrcTypeProperty::_prhe */
-/* 8: Attribute MMSrcTypeProperty::_need_super */
-/* 9: Attribute MMSrcTypeProperty::_stypes_cache */
-/* 10: Attribute MMSrcTypeProperty::_node */
-val_t NEW_MMSrcTypeProperty(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_MMSrcTypeProperty;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  ATTR_virtualtype___MMTypeProperty____stypes_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMVirtualType]*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute EscapableClosure::_node */
+/* 3: Attribute EscapableClosure::_dico */
+/* 4: Attribute EscapableClosure::_break_seq */
+/* 5: Attribute EscapableClosure::_continue_seq */
+/* 6: Attribute EscapableClosure::_break_value */
+/* 7: Attribute EscapableClosure::_continue_value */
+/* 8: Attribute EscapableClosure::_lab */
+/* 9: Attribute EscapableClosure::_break_flow_contexts */
+/* 10: Attribute EscapableClosure::_closure */
+/* 11: Attribute EscapableClosure::_break_list */
+void INIT_ATTRIBUTES__EscapableClosure(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__EscapableClosure;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//scope.nit:194 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_scope___EscapableBlock____break_flow_contexts(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//scope.nit:143 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_scope___ScopeBlock____dico(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MMSrcTypeProperty(val_t self, char *from) {
+val_t NEW_EscapableClosure(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_EscapableClosure;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_EscapableClosure(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_EscapableClosure;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_scope___EscapableClosure____closure(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_scope___EscapableBlock____break_flow_contexts(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_break_flow_contexts", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_scope___ScopeBlock____node(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_node", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_MMSrcTypeProperty_syntax_base___MMSrcTypeProperty___init(val_t p0, val_t p1, val_t p2) {
+val_t NEW_EscapableClosure_scope___EscapableClosure___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_MMSrcTypeProperty();
-  syntax_base___MMSrcTypeProperty___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMSrcTypeProperty(self, "syntax_base::MMSrcTypeProperty::init for MMSrcTypeProperty");
-  return self;
-}
-const classtable_elt_t VFT_MMImplicitInit[83] = {
-  {(bigint) 4399 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMImplicitInit < Object: superclass typecheck marker */},
-  {(bigint) 103 /* 2: MMImplicitInit < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 3283 /* 3: MMImplicitInit < MMMethod: superclass typecheck marker */},
-  {(bigint) 3923 /* 4: MMImplicitInit < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 4043 /* 5: MMImplicitInit < MMMethSrcMethod: superclass typecheck marker */},
-  {(bigint) 4399 /* 6: MMImplicitInit < MMImplicitInit: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 222;
+  fra.me.meth = LOCATE_NEW_EscapableClosure_scope___EscapableClosure___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//scope.nit:222 */
+  fra.me.REG[3] = NEW_EscapableClosure();
+  INIT_ATTRIBUTES__EscapableClosure(fra.me.REG[3]);
+  scope___EscapableClosure___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_EscapableClosure(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_AEscapeExpr[83] = {
+  {(bigint) 3167 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AEscapeExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AEscapeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AEscapeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2831 /* 5: AEscapeExpr < ALabelable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3167 /* 7: AEscapeExpr < AEscapeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104642,14 +137244,10 @@ const classtable_elt_t VFT_MMImplicitInit[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) abstractmetamodel___MMLocalProperty___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMImplicitInit < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AEscapeExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -104657,7 +137255,6 @@ const classtable_elt_t VFT_MMImplicitInit[83] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -104665,92 +137262,132 @@ const classtable_elt_t VFT_MMImplicitInit[83] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMSrcMethod___compile_property_to_c},
-  {(bigint) compiling_base___MMLocalProperty___cname},
-  {(bigint) compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) mmbuilder___MMImplicitInit___accept_property_visitor},
-  {(bigint) syntax_base___MMMethSrcMethod___node},
-  {(bigint) syntax_base___MMImplicitInit___is_init},
-  {(bigint) inheritance___MMLocalProperty___inherit_global},
-  {(bigint) static_type___MMLocalProperty___signature},
-  {(bigint) static_type___MMLocalProperty___signature__eq},
-  {(bigint) static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 53: MMImplicitInit < MMLocalProperty: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMLocalProperty___name},
-  {(bigint) abstractmetamodel___MMLocalProperty___local_class},
-  {(bigint) abstractmetamodel___MMLocalProperty___global},
-  {(bigint) abstractmetamodel___MMLocalProperty___prhe},
-  {(bigint) abstractmetamodel___MMLocalProperty___module},
-  {(bigint) abstractmetamodel___MMLocalProperty___full_name},
-  {(bigint) abstractmetamodel___MMLocalProperty___set_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___new_global},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super},
-  {(bigint) abstractmetamodel___MMLocalProperty___need_super__eq},
-  {(bigint) abstractmetamodel___MMLocalProperty___init},
-  {(bigint) compiling_methods___MMMethod___compile_expr_call},
-  {(bigint) compiling_methods___MMMethod___compile_stmt_call},
-  {(bigint) compiling_methods___MMMethod___intern_compile_call},
-  {(bigint) compiling_methods___MMMethod___compile_call_and_closures},
-  {(bigint) compiling_methods___MMMethod___compile_constructor_call},
-  {(bigint) compiling_methods___MMMethod___compile_super_call},
-  {(bigint) compiling_methods___MMMethod___closure_cname},
-  {(bigint) 2 /* 72: MMImplicitInit < MMMethod: superclass init_table position */},
-  {(bigint) compiling_methods___MMSrcMethod___decl_csignature},
-  {(bigint) compiling_methods___MMImplicitInit___do_compile_inside},
-  {(bigint) 3 /* 75: MMImplicitInit < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 76: MMImplicitInit < MMMethSrcMethod: superclass init_table position */},
-  {(bigint) syntax_base___MMMethSrcMethod___init},
-  {(bigint) mmbuilder___MMImplicitInit___super_init},
-  {(bigint) 5 /* 79: MMImplicitInit < MMImplicitInit: superclass init_table position */},
-  {(bigint) syntax_base___MMImplicitInit___unassigned_attributes},
-  {(bigint) syntax_base___MMImplicitInit___super_inits},
-  {(bigint) syntax_base___MMImplicitInit___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___ANode___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___ANode___accept_property_builder},
+  {(bigint) mmbuilder___ANode___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AEscapeExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___ANode___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___ANode___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AEscapeExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 3 /* 67: AEscapeExpr < ALabelable: superclass init_table position */},
+  {(bigint) parser_nodes___ALabelable___n_label},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 79: AEscapeExpr < AEscapeExpr: superclass init_table position */},
+  {(bigint) scope___AEscapeExpr___escapable},
+  {(bigint) scope___AEscapeExpr___kwname},
+  {(bigint) scope___AEscapeExpr___compute_escapable_block},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MMImplicitInit::_cname_cache */
-/* 2: Attribute MMImplicitInit::_signature */
-/* 3: Attribute MMImplicitInit::_signatures_cache */
-/* 4: Attribute MMImplicitInit::_name */
-/* 5: Attribute MMImplicitInit::_local_class */
-/* 6: Attribute MMImplicitInit::_global */
-/* 7: Attribute MMImplicitInit::_prhe */
-/* 8: Attribute MMImplicitInit::_need_super */
-/* 9: Attribute MMImplicitInit::_node */
-/* 10: Attribute MMImplicitInit::_super_init */
-/* 11: Attribute MMImplicitInit::_unassigned_attributes */
-/* 12: Attribute MMImplicitInit::_super_inits */
-val_t NEW_MMImplicitInit(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute AEscapeExpr::_parent */
+/* 3: Attribute AEscapeExpr::_location */
+/* 4: Attribute AEscapeExpr::_first_location */
+/* 5: Attribute AEscapeExpr::_last_location */
+/* 6: Attribute AEscapeExpr::_n_label */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* Instance Hole :( */
+/* 11: Attribute AEscapeExpr::_escapable */
+void INIT_ATTRIBUTES__AEscapeExpr(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AEscapeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:603 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AEscapeExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_MMImplicitInit;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMLocalProperty____need_super(obj) =  TAG_Bool(false);
-  ATTR_static_type___MMLocalProperty____signatures_cache(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMType, MMSignature]*/;
-  ATTR_mmbuilder___MMImplicitInit____super_init(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMImplicitInit(val_t self, char *from) {
-}
-val_t NEW_MMImplicitInit_syntax_base___MMImplicitInit___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_MMImplicitInit();
-  syntax_base___MMImplicitInit___init(self, p0, p1, p2, init_table);
-  CHECKNEW_MMImplicitInit(self, "syntax_base::MMImplicitInit::init for MMImplicitInit");
-  return self;
-}
-const classtable_elt_t VFT_Variable[51] = {
-  {(bigint) 15 /* 0: Identity */},
-  {(bigint) 3 /* 1: Variable < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 2: Variable < Variable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_AEscapeExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AEscapeExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AEscapeExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AEscapeExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AEscapeExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AEscapeExpr();
+  INIT_ATTRIBUTES__AEscapeExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AEscapeExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TypingVisitor[105] = {
+  {(bigint) 2147 /* 0: Identity */},
+  {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TypingVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: TypingVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 2139 /* 4: TypingVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2147 /* 5: TypingVisitor < TypingVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104762,14 +137399,9 @@ const classtable_elt_t VFT_Variable[51] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) syntax_base___Variable___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: Variable < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: TypingVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -104777,7 +137409,6 @@ const classtable_elt_t VFT_Variable[51] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -104785,50 +137416,211 @@ const classtable_elt_t VFT_Variable[51] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) control_flow___Variable___must_be_set},
-  {(bigint) 1 /* 44: Variable < Variable: superclass init_table position */},
-  {(bigint) syntax_base___Variable___name},
-  {(bigint) syntax_base___Variable___decl},
-  {(bigint) syntax_base___Variable___stype},
-  {(bigint) syntax_base___Variable___stype__eq},
-  {(bigint) syntax_base___Variable___kind},
-  {(bigint) syntax_base___Variable___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: TypingVisitor < Visitor: superclass init_table position */},
+  {(bigint) typing___TypingVisitor___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
+  {(bigint) parser_prod___Visitor___init},
+  {(bigint) 2 /* 50: TypingVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_nativestring},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax_base___AbsSyntaxVisitor___mmmodule},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
+  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
+  {(bigint) syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___fatal_error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
+  {(bigint) syntax_base___AbsSyntaxVisitor___init},
+  {(bigint) 3 /* 80: TypingVisitor < TypingVisitor: superclass init_table position */},
+  {(bigint) typing___TypingVisitor___scope_ctx},
+  {(bigint) typing___TypingVisitor___flow_ctx},
+  {(bigint) typing___TypingVisitor___flow_ctx__eq},
+  {(bigint) typing___TypingVisitor___mark_is_set},
+  {(bigint) typing___TypingVisitor___mark_unreash},
+  {(bigint) typing___TypingVisitor___enter_visit_block},
+  {(bigint) typing___TypingVisitor___base_flow_ctx},
+  {(bigint) typing___TypingVisitor___base_flow_ctx__eq},
+  {(bigint) typing___TypingVisitor___self_var},
+  {(bigint) typing___TypingVisitor___self_var__eq},
+  {(bigint) typing___TypingVisitor___top_block},
+  {(bigint) typing___TypingVisitor___top_block__eq},
+  {(bigint) typing___TypingVisitor___explicit_super_init_calls},
+  {(bigint) typing___TypingVisitor___explicit_super_init_calls__eq},
+  {(bigint) typing___TypingVisitor___explicit_other_init_call},
+  {(bigint) typing___TypingVisitor___explicit_other_init_call__eq},
+  {(bigint) typing___TypingVisitor___use_if_true_flow_ctx},
+  {(bigint) typing___TypingVisitor___use_if_false_flow_ctx},
+  {(bigint) typing___TypingVisitor___is_default_closure_definition},
+  {(bigint) typing___TypingVisitor___is_default_closure_definition__eq},
+  {(bigint) typing___TypingVisitor___once_count},
+  {(bigint) typing___TypingVisitor___once_count__eq},
+  {(bigint) typing___TypingVisitor___init},
+  {(bigint) typing___TypingVisitor___get_default_constructor_for},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute Variable::_name */
-/* 2: Attribute Variable::_decl */
-/* 3: Attribute Variable::_stype */
-val_t NEW_Variable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute TypingVisitor::_current_node */
+/* 3: Attribute TypingVisitor::_mmmodule */
+/* 4: Attribute TypingVisitor::_local_class */
+/* 5: Attribute TypingVisitor::_local_property */
+/* 6: Attribute TypingVisitor::_tc */
+/* 7: Attribute TypingVisitor::_scope_ctx */
+/* 8: Attribute TypingVisitor::_flow_ctx */
+/* 9: Attribute TypingVisitor::_base_flow_ctx */
+/* 10: Attribute TypingVisitor::_self_var */
+/* 11: Attribute TypingVisitor::_top_block */
+/* 12: Attribute TypingVisitor::_explicit_super_init_calls */
+/* 13: Attribute TypingVisitor::_explicit_other_init_call */
+/* 14: Attribute TypingVisitor::_is_default_closure_definition */
+/* 15: Attribute TypingVisitor::_once_count */
+void INIT_ATTRIBUTES__TypingVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TypingVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:46 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./syntax//typing.nit:47 */
+  fra.me.REG[1] = NEW_ScopeContext_scope___ScopeContext___init(fra.me.REG[1]);
+  ATTR_typing___TypingVisitor____scope_ctx(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//typing.nit:90 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:107 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0]) = REGB0;
+  /* ./syntax//typing.nit:110 */
+  REGB0 = TAG_Int(0);
+  ATTR_typing___TypingVisitor____once_count(fra.me.REG[0]) = REGB0;
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TypingVisitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_Variable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_Variable(val_t self, char *from) {
-}
-val_t NEW_Variable_syntax_base___Variable___init(val_t p0, val_t p1) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_Variable();
-  syntax_base___Variable___init(self, p0, p1, init_table);
-  CHECKNEW_Variable(self, "syntax_base::Variable::init for Variable");
-  return self;
+  obj = alloc(sizeof(val_t) * 16);
+  obj->vft = (classtable_elt_t*)VFT_TypingVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TypingVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TypingVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___TypingVisitor____scope_ctx(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_scope_ctx", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___TypingVisitor____explicit_other_init_call(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_explicit_other_init_call", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___TypingVisitor____is_default_closure_definition(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_default_closure_definition", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_typing___TypingVisitor____once_count(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_once_count", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_VarVariable[53] = {
-  {(bigint) 199 /* 0: Identity */},
-  {(bigint) 3 /* 1: VarVariable < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 2: VarVariable < Variable: superclass typecheck marker */},
-  {(bigint) 199 /* 3: VarVariable < VarVariable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_TypingVisitor_typing___TypingVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 112;
+  fra.me.meth = LOCATE_NEW_TypingVisitor_typing___TypingVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//typing.nit:112 */
+  fra.me.REG[2] = NEW_TypingVisitor();
+  INIT_ATTRIBUTES__TypingVisitor(fra.me.REG[2]);
+  typing___TypingVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_TypingVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_AAbsControl[83] = {
+  {(bigint) 3247 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AAbsControl < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: AAbsControl < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: AAbsControl < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2847 /* 6: AAbsControl < AExpr: superclass typecheck marker */},
+  {(bigint) 3247 /* 7: AAbsControl < AAbsControl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104838,14 +137630,9 @@ const classtable_elt_t VFT_VarVariable[53] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) syntax_base___Variable___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: VarVariable < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: AAbsControl < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -104853,7 +137640,6 @@ const classtable_elt_t VFT_VarVariable[53] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -104861,51 +137647,141 @@ const classtable_elt_t VFT_VarVariable[53] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) control_flow___VarVariable___must_be_set},
-  {(bigint) 1 /* 44: VarVariable < Variable: superclass init_table position */},
-  {(bigint) syntax_base___Variable___name},
-  {(bigint) syntax_base___Variable___decl},
-  {(bigint) syntax_base___Variable___stype},
-  {(bigint) syntax_base___Variable___stype__eq},
-  {(bigint) syntax_base___VarVariable___kind},
-  {(bigint) syntax_base___Variable___init},
-  {(bigint) 2 /* 51: VarVariable < VarVariable: superclass init_table position */},
-  {(bigint) syntax_base___VarVariable___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute VarVariable::_name */
-/* 2: Attribute VarVariable::_decl */
-/* 3: Attribute VarVariable::_stype */
-val_t NEW_VarVariable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: AAbsControl < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: AAbsControl < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: AAbsControl < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+  {(bigint) 4 /* 79: AAbsControl < AAbsControl: superclass init_table position */},
+  {(bigint) typing___AAbsControl___escapable},
+  {(bigint) typing___AAbsControl___process_control},
+  {(bigint) typing___AAbsControl___process_control_inside},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AAbsControl::_parent */
+/* 3: Attribute AAbsControl::_location */
+/* 4: Attribute AAbsControl::_first_location */
+/* 5: Attribute AAbsControl::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute AAbsControl::_is_typed */
+/* 8: Attribute AAbsControl::_stype */
+/* 9: Attribute AAbsControl::_if_true_flow_ctx */
+/* 10: Attribute AAbsControl::_if_false_flow_ctx */
+/* 11: Attribute AAbsControl::_escapable */
+void INIT_ATTRIBUTES__AAbsControl(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AAbsControl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AAbsControl(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_VarVariable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_VarVariable(val_t self, char *from) {
-}
-val_t NEW_VarVariable_syntax_base___VarVariable___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_VarVariable();
-  syntax_base___VarVariable___init(self, p0, p1, init_table);
-  CHECKNEW_VarVariable(self, "syntax_base::VarVariable::init for VarVariable");
-  return self;
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_AAbsControl;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AAbsControl(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AAbsControl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ParamVariable[53] = {
-  {(bigint) 3203 /* 0: Identity */},
-  {(bigint) 3 /* 1: ParamVariable < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 2: ParamVariable < Variable: superclass typecheck marker */},
-  {(bigint) 3203 /* 3: ParamVariable < ParamVariable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_AAbsControl_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_AAbsControl_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_AAbsControl();
+  INIT_ATTRIBUTES__AAbsControl(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AAbsControl(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ATypeCheckExpr[79] = {
+  {(bigint) 2999 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ATypeCheckExpr < Object: superclass typecheck marker */},
+  {(bigint) 275 /* 3: ATypeCheckExpr < ANode: superclass typecheck marker */},
+  {(bigint) 1859 /* 4: ATypeCheckExpr < Prod: superclass typecheck marker */},
+  {(bigint) 2999 /* 5: ATypeCheckExpr < ATypeCheckExpr: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: ATypeCheckExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104916,14 +137792,9 @@ const classtable_elt_t VFT_ParamVariable[53] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) syntax_base___Variable___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ParamVariable < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ATypeCheckExpr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -104931,7 +137802,6 @@ const classtable_elt_t VFT_ParamVariable[53] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -104939,49 +137809,133 @@ const classtable_elt_t VFT_ParamVariable[53] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) control_flow___Variable___must_be_set},
-  {(bigint) 1 /* 44: ParamVariable < Variable: superclass init_table position */},
-  {(bigint) syntax_base___Variable___name},
-  {(bigint) syntax_base___Variable___decl},
-  {(bigint) syntax_base___Variable___stype},
-  {(bigint) syntax_base___Variable___stype__eq},
-  {(bigint) syntax_base___ParamVariable___kind},
-  {(bigint) syntax_base___Variable___init},
-  {(bigint) 2 /* 51: ParamVariable < ParamVariable: superclass init_table position */},
-  {(bigint) syntax_base___ParamVariable___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ParamVariable::_name */
-/* 2: Attribute ParamVariable::_decl */
-/* 3: Attribute ParamVariable::_stype */
-val_t NEW_ParamVariable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) mmbuilder___AExpr___accept_class_builder},
+  {(bigint) mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) mmbuilder___ANode___accept_class_verifier},
+  {(bigint) mmbuilder___AExpr___accept_property_builder},
+  {(bigint) mmbuilder___AExpr___accept_property_verifier},
+  {(bigint) syntax_base___ANode___accept_abs_syntax_visitor},
+  {(bigint) parser_prod___ANode___parent},
+  {(bigint) parser_prod___ANode___parent__eq},
+  {(bigint) parser_prod___ANode___remove_child},
+  {(bigint) parser_prod___ANode___replace_child},
+  {(bigint) parser_prod___Prod___replace_with},
+  {(bigint) parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 58: ATypeCheckExpr < ANode: superclass init_table position */},
+  {(bigint) parser_nodes___ANode___location},
+  {(bigint) parser_nodes___ANode___init},
+  {(bigint) icode_generation___AExpr___accept_icode_generation},
+  {(bigint) typing___ANode___accept_typing},
+  {(bigint) typing___AExpr___after_typing},
+  {(bigint) parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 65: ATypeCheckExpr < Prod: superclass init_table position */},
+  {(bigint) parser_nodes___Prod___location__eq},
+  {(bigint) 4 /* 67: ATypeCheckExpr < ATypeCheckExpr: superclass init_table position */},
+  {(bigint) typing___ATypeCheckExpr___check_expr_cast},
+  {(bigint) typing___AExpr___is_typed},
+  {(bigint) typing___AExpr___is_statement},
+  {(bigint) typing___AExpr___stype},
+  {(bigint) 3 /* 72: ATypeCheckExpr < AExpr: superclass init_table position */},
+  {(bigint) icode_generation___AExpr___generate_icode},
+  {(bigint) typing___AExpr___is_implicit_self},
+  {(bigint) typing___AExpr___is_self},
+  {(bigint) typing___AExpr___its_variable},
+  {(bigint) typing___AExpr___if_true_flow_ctx},
+  {(bigint) typing___AExpr___if_false_flow_ctx},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ATypeCheckExpr::_parent */
+/* 3: Attribute ATypeCheckExpr::_location */
+/* 4: Attribute ATypeCheckExpr::_first_location */
+/* 5: Attribute ATypeCheckExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ATypeCheckExpr::_is_typed */
+/* 8: Attribute ATypeCheckExpr::_stype */
+/* 9: Attribute ATypeCheckExpr::_if_true_flow_ctx */
+/* 10: Attribute ATypeCheckExpr::_if_false_flow_ctx */
+void INIT_ATTRIBUTES__ATypeCheckExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ATypeCheckExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:344 */
+  REGB0 = TAG_Bool(false);
+  ATTR_typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ATypeCheckExpr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_ParamVariable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ParamVariable(val_t self, char *from) {
-}
-val_t NEW_ParamVariable_syntax_base___ParamVariable___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ParamVariable();
-  syntax_base___ParamVariable___init(self, p0, p1, init_table);
-  CHECKNEW_ParamVariable(self, "syntax_base::ParamVariable::init for ParamVariable");
-  return self;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_ATypeCheckExpr;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ATypeCheckExpr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ATypeCheckExpr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_AutoVariable[53] = {
-  {(bigint) 3383 /* 0: Identity */},
-  {(bigint) 3 /* 1: AutoVariable < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 2: AutoVariable < Variable: superclass typecheck marker */},
-  {(bigint) 3383 /* 3: AutoVariable < AutoVariable: superclass typecheck marker */},
+val_t NEW_ATypeCheckExpr_parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ATypeCheckExpr_parser_nodes___ANode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_ATypeCheckExpr();
+  INIT_ATTRIBUTES__ATypeCheckExpr(fra.me.REG[1]);
+  parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ATypeCheckExpr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_PrimitiveInfo[50] = {
+  {(bigint) 95 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: PrimitiveInfo < Object: superclass typecheck marker */},
+  {(bigint) 95 /* 3: PrimitiveInfo < PrimitiveInfo: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104994,14 +137948,10 @@ const classtable_elt_t VFT_AutoVariable[53] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) syntax_base___Variable___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AutoVariable < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: PrimitiveInfo < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -105009,7 +137959,6 @@ const classtable_elt_t VFT_AutoVariable[53] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -105017,49 +137966,108 @@ const classtable_elt_t VFT_AutoVariable[53] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) control_flow___Variable___must_be_set},
-  {(bigint) 1 /* 44: AutoVariable < Variable: superclass init_table position */},
-  {(bigint) syntax_base___Variable___name},
-  {(bigint) syntax_base___Variable___decl},
-  {(bigint) syntax_base___Variable___stype},
-  {(bigint) syntax_base___Variable___stype__eq},
-  {(bigint) syntax_base___AutoVariable___kind},
-  {(bigint) syntax_base___Variable___init},
-  {(bigint) 2 /* 51: AutoVariable < AutoVariable: superclass init_table position */},
-  {(bigint) syntax_base___AutoVariable___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: PrimitiveInfo < PrimitiveInfo: superclass init_table position */},
+  {(bigint) primitive_info___PrimitiveInfo___name},
+  {(bigint) primitive_info___PrimitiveInfo___tagged},
+  {(bigint) primitive_info___PrimitiveInfo___cname},
+  {(bigint) primitive_info___PrimitiveInfo___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AutoVariable::_name */
-/* 2: Attribute AutoVariable::_decl */
-/* 3: Attribute AutoVariable::_stype */
-val_t NEW_AutoVariable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_AutoVariable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AutoVariable(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute PrimitiveInfo::_name */
+/* 3: Attribute PrimitiveInfo::_tagged */
+/* 4: Attribute PrimitiveInfo::_cname */
+void INIT_ATTRIBUTES__PrimitiveInfo(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__PrimitiveInfo;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_AutoVariable_syntax_base___AutoVariable___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_AutoVariable();
-  syntax_base___AutoVariable___init(self, p0, p1, init_table);
-  CHECKNEW_AutoVariable(self, "syntax_base::AutoVariable::init for AutoVariable");
-  return self;
+val_t NEW_PrimitiveInfo(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_PrimitiveInfo;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_PrimitiveInfo(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_PrimitiveInfo;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____tagged(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tagged", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____cname(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cname", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ClosureVariable[56] = {
-  {(bigint) 3367 /* 0: Identity */},
-  {(bigint) 3 /* 1: ClosureVariable < Object: superclass typecheck marker */},
-  {(bigint) 15 /* 2: ClosureVariable < Variable: superclass typecheck marker */},
-  {(bigint) 3367 /* 3: ClosureVariable < ClosureVariable: superclass typecheck marker */},
+val_t NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 87;
+  fra.me.meth = LOCATE_NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  /* ./primitive_info.nit:87 */
+  fra.me.REG[2] = NEW_PrimitiveInfo();
+  INIT_ATTRIBUTES__PrimitiveInfo(fra.me.REG[2]);
+  primitive_info___PrimitiveInfo___init(fra.me.REG[2], fra.me.REG[0], REGB0, fra.me.REG[1], init_table);
+  CHECKNEW_PrimitiveInfo(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_A2IContext[85] = {
+  {(bigint) 2143 /* 0: Identity */},
+  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: A2IContext < Object: superclass typecheck marker */},
+  {(bigint) 211 /* 3: A2IContext < ICodeBuilder: superclass typecheck marker */},
+  {(bigint) 2143 /* 4: A2IContext < A2IContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105072,14 +138080,9 @@ const classtable_elt_t VFT_ClosureVariable[56] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) syntax_base___Variable___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ClosureVariable < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: A2IContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -105087,7 +138090,6 @@ const classtable_elt_t VFT_ClosureVariable[56] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -105095,55 +138097,182 @@ const classtable_elt_t VFT_ClosureVariable[56] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) control_flow___Variable___must_be_set},
-  {(bigint) 1 /* 44: ClosureVariable < Variable: superclass init_table position */},
-  {(bigint) syntax_base___Variable___name},
-  {(bigint) syntax_base___Variable___decl},
-  {(bigint) syntax_base___Variable___stype},
-  {(bigint) syntax_base___Variable___stype__eq},
-  {(bigint) syntax_base___ClosureVariable___kind},
-  {(bigint) syntax_base___Variable___init},
-  {(bigint) compiling_methods___ClosureVariable___ctypename},
-  {(bigint) compiling_methods___ClosureVariable___ctypename__eq},
-  {(bigint) 2 /* 53: ClosureVariable < ClosureVariable: superclass init_table position */},
-  {(bigint) syntax_base___ClosureVariable___closure},
-  {(bigint) syntax_base___ClosureVariable___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) icode_tools___ICodeBuilder___inline_routine},
+  {(bigint) 1 /* 46: A2IContext < ICodeBuilder: superclass init_table position */},
+  {(bigint) icode_generation___A2IContext___stmt},
+  {(bigint) icode_builder___ICodeBuilder___expr},
+  {(bigint) icode_builder___ICodeBuilder___add_assignment},
+  {(bigint) icode_builder___ICodeBuilder___add_null_reciever_check},
+  {(bigint) icode_builder___ICodeBuilder___add_type_cast},
+  {(bigint) icode_builder___ICodeBuilder___add_attr_check},
+  {(bigint) icode_builder___ICodeBuilder___add_attr_read},
+  {(bigint) icode_builder___ICodeBuilder___add_abort},
+  {(bigint) icode_builder___ICodeBuilder___add_return_value},
+  {(bigint) icode_builder___ICodeBuilder___add_call},
+  {(bigint) icode_builder___ICodeBuilder___add_escape},
+  {(bigint) icode_builder___ICodeBuilder___lit_null_reg},
+  {(bigint) icode_builder___ICodeBuilder___lit_true_reg},
+  {(bigint) icode_builder___ICodeBuilder___lit_false_reg},
+  {(bigint) icode_builder___ICodeBuilder___new_register},
+  {(bigint) icode_builder___ICodeBuilder___mmmodule},
+  {(bigint) icode_builder___ICodeBuilder___iroutine},
+  {(bigint) icode_builder___ICodeBuilder___seq},
+  {(bigint) icode_builder___ICodeBuilder___seq__eq},
+  {(bigint) icode_builder___ICodeBuilder___init},
+  {(bigint) icode_builder___ICodeBuilder___current_location},
+  {(bigint) icode_builder___ICodeBuilder___current_location__eq},
+  {(bigint) 2 /* 69: A2IContext < A2IContext: superclass init_table position */},
+  {(bigint) icode_builder___ICodeBuilder___stmt},
+  {(bigint) icode_generation___A2IContext___add_new_array},
+  {(bigint) icode_generation___A2IContext___add_call_array_add},
+  {(bigint) icode_generation___A2IContext___variable},
+  {(bigint) icode_generation___A2IContext___closurevariables},
+  {(bigint) icode_generation___A2IContext___visitor},
+  {(bigint) icode_generation___A2IContext___return_seq},
+  {(bigint) icode_generation___A2IContext___return_seq__eq},
+  {(bigint) icode_generation___A2IContext___return_value},
+  {(bigint) icode_generation___A2IContext___return_value__eq},
+  {(bigint) icode_generation___A2IContext___method},
+  {(bigint) icode_generation___A2IContext___init},
+  {(bigint) icode_generation___A2IContext___invoke_super_init_calls_after},
+  {(bigint) icode_generation___A2IContext___generate_stmt},
+  {(bigint) icode_generation___A2IContext___generate_expr},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute ClosureVariable::_name */
-/* 2: Attribute ClosureVariable::_decl */
-/* 3: Attribute ClosureVariable::_stype */
-/* 4: Attribute ClosureVariable::_ctypename */
-/* 5: Attribute ClosureVariable::_closure */
-val_t NEW_ClosureVariable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute A2IContext::_mmmodule */
+/* 3: Attribute A2IContext::_iroutine */
+/* 4: Attribute A2IContext::_seq */
+/* 5: Attribute A2IContext::_current_location */
+/* 6: Attribute A2IContext::_variables */
+/* 7: Attribute A2IContext::_closurevariables */
+/* 8: Attribute A2IContext::_visitor */
+/* 9: Attribute A2IContext::_return_seq */
+/* 10: Attribute A2IContext::_return_value */
+/* 11: Attribute A2IContext::_method */
+/* 12: Attribute A2IContext::_current_node */
+void INIT_ATTRIBUTES__A2IContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__A2IContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//icode_generation.nit:68 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_icode_generation___A2IContext____variables(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//icode_generation.nit:71 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_icode_generation___A2IContext____closurevariables(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./syntax//icode_generation.nit:137 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_builder.nit:220 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_builder___ICodeBuilder____current_location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_A2IContext(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_ClosureVariable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ClosureVariable(val_t self, char *from) {
-}
-val_t NEW_ClosureVariable_syntax_base___ClosureVariable___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ClosureVariable();
-  syntax_base___ClosureVariable___init(self, p0, p1, p2, init_table);
-  CHECKNEW_ClosureVariable(self, "syntax_base::ClosureVariable::init for ClosureVariable");
-  return self;
-}
-const classtable_elt_t VFT_AbsSyntaxVisitor[73] = {
-  {(bigint) 3395 /* 0: Identity */},
-  {(bigint) 3 /* 1: AbsSyntaxVisitor < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 2: AbsSyntaxVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 3395 /* 3: AbsSyntaxVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  obj = alloc(sizeof(val_t) * 13);
+  obj->vft = (classtable_elt_t*)VFT_A2IContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_A2IContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_A2IContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_generation___A2IContext____variables(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_variables", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_generation___A2IContext____closurevariables(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_closurevariables", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_generation___A2IContext____visitor(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_builder___ICodeBuilder____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_builder___ICodeBuilder____iroutine(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_iroutine", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_builder___ICodeBuilder____seq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_seq", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_A2IContext_icode_generation___A2IContext___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 85;
+  fra.me.meth = LOCATE_NEW_A2IContext_icode_generation___A2IContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//icode_generation.nit:85 */
+  fra.me.REG[3] = NEW_A2IContext();
+  INIT_ATTRIBUTES__A2IContext(fra.me.REG[3]);
+  icode_generation___A2IContext___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_A2IContext(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
+}
+const classtable_elt_t VFT_A2IVisitor[84] = {
+  {(bigint) 2879 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: A2IVisitor < Object: superclass typecheck marker */},
+  {(bigint) 15 /* 3: A2IVisitor < Visitor: superclass typecheck marker */},
+  {(bigint) 2139 /* 4: A2IVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2879 /* 5: A2IVisitor < A2IVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105155,14 +138284,9 @@ const classtable_elt_t VFT_AbsSyntaxVisitor[73] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AbsSyntaxVisitor < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: A2IVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -105170,7 +138294,6 @@ const classtable_elt_t VFT_AbsSyntaxVisitor[73] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -105178,14 +138301,25 @@ const classtable_elt_t VFT_AbsSyntaxVisitor[73] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: AbsSyntaxVisitor < Visitor: superclass init_table position */},
-  {(bigint) parser_prod___Visitor___visit},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: A2IVisitor < Visitor: superclass init_table position */},
+  {(bigint) icode_generation___A2IVisitor___visit},
+  {(bigint) parser_prod___Visitor___enter_visit},
+  {(bigint) parser_prod___Visitor___current_node},
   {(bigint) parser_prod___Visitor___init},
-  {(bigint) 2 /* 46: AbsSyntaxVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 2 /* 50: A2IVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_type_by_name},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name},
   {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
   {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
   {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
@@ -105193,55 +138327,118 @@ const classtable_elt_t VFT_AbsSyntaxVisitor[73] = {
   {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
   {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
   {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
+  {(bigint) syntax_base___AbsSyntaxVisitor___type_nativestring},
   {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
   {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
   {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
   {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module__eq},
+  {(bigint) syntax_base___AbsSyntaxVisitor___get_method},
+  {(bigint) syntax_base___AbsSyntaxVisitor___mmmodule},
   {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
   {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
   {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
   {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
   {(bigint) syntax_base___AbsSyntaxVisitor___tc},
   {(bigint) syntax_base___AbsSyntaxVisitor___error},
+  {(bigint) syntax_base___AbsSyntaxVisitor___fatal_error},
   {(bigint) syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax_base___AbsSyntaxVisitor___locate},
   {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
   {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
   {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax_base___AbsSyntaxVisitor___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AbsSyntaxVisitor::_module */
-/* 2: Attribute AbsSyntaxVisitor::_local_class */
-/* 3: Attribute AbsSyntaxVisitor::_local_property */
-/* 4: Attribute AbsSyntaxVisitor::_tc */
-val_t NEW_AbsSyntaxVisitor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 3 /* 80: A2IVisitor < A2IVisitor: superclass init_table position */},
+  {(bigint) icode_generation___A2IVisitor___icode_ctx__eq},
+  {(bigint) icode_generation___A2IVisitor___icode_ctx},
+  {(bigint) icode_generation___A2IVisitor___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute A2IVisitor::_current_node */
+/* 3: Attribute A2IVisitor::_mmmodule */
+/* 4: Attribute A2IVisitor::_local_class */
+/* 5: Attribute A2IVisitor::_local_property */
+/* 6: Attribute A2IVisitor::_tc */
+/* 7: Attribute A2IVisitor::_icode_ctx */
+void INIT_ATTRIBUTES__A2IVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__A2IVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./parser//parser_prod.nit:66 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_parser_prod___Visitor____current_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_A2IVisitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_AbsSyntaxVisitor;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AbsSyntaxVisitor(val_t self, char *from) {
-}
-val_t NEW_AbsSyntaxVisitor_syntax_base___AbsSyntaxVisitor___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_AbsSyntaxVisitor();
-  syntax_base___AbsSyntaxVisitor___init(self, p0, p1, init_table);
-  CHECKNEW_AbsSyntaxVisitor(self, "syntax_base::AbsSyntaxVisitor::init for AbsSyntaxVisitor");
-  return self;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_A2IVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_A2IVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_A2IVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_CSHSorter[52] = {
-  {(bigint) 3375 /* 0: Identity */},
-  {(bigint) 3 /* 1: CSHSorter < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 2: CSHSorter < AbstractSorter: superclass typecheck marker */},
-  {(bigint) 3375 /* 3: CSHSorter < CSHSorter: superclass typecheck marker */},
+val_t NEW_A2IVisitor_icode_generation___A2IVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 286;
+  fra.me.meth = LOCATE_NEW_A2IVisitor_icode_generation___A2IVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//icode_generation.nit:286 */
+  fra.me.REG[2] = NEW_A2IVisitor();
+  INIT_ATTRIBUTES__A2IVisitor(fra.me.REG[2]);
+  icode_generation___A2IVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_A2IVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_SrcModuleLoader[56] = {
+  {(bigint) 311 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: SrcModuleLoader < Object: superclass typecheck marker */},
+  {(bigint) 123 /* 3: SrcModuleLoader < ModuleLoader: superclass typecheck marker */},
+  {(bigint) 311 /* 4: SrcModuleLoader < SrcModuleLoader: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105254,14 +138451,9 @@ const classtable_elt_t VFT_CSHSorter[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: CSHSorter < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: SrcModuleLoader < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -105269,7 +138461,6 @@ const classtable_elt_t VFT_CSHSorter[52] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -105277,46 +138468,88 @@ const classtable_elt_t VFT_CSHSorter[52] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: CSHSorter < AbstractSorter: superclass init_table position */},
-  {(bigint) mmbuilder___CSHSorter___compare},
-  {(bigint) sorter___AbstractSorter___sort},
-  {(bigint) sorter___AbstractSorter___sub_sort},
-  {(bigint) sorter___AbstractSorter___quick_sort},
-  {(bigint) sorter___AbstractSorter___bubble_sort},
-  {(bigint) sorter___AbstractSorter___init},
-  {(bigint) 2 /* 50: CSHSorter < CSHSorter: superclass init_table position */},
-  {(bigint) mmbuilder___CSHSorter___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: SrcModuleLoader < ModuleLoader: superclass init_table position */},
+  {(bigint) syntax___SrcModuleLoader___file_type},
+  {(bigint) mmloader___ModuleLoader___try_to_load_dir},
+  {(bigint) mmloader___ModuleLoader___can_handle},
+  {(bigint) mmloader___ModuleLoader___load_and_process_module},
+  {(bigint) mmloader___ModuleLoader___load_module},
+  {(bigint) syntax___SrcModuleLoader___parse_file},
+  {(bigint) syntax___SrcModuleLoader___process_metamodel},
+  {(bigint) mmloader___ModuleLoader___init},
+  {(bigint) 2 /* 54: SrcModuleLoader < SrcModuleLoader: superclass init_table position */},
+  {(bigint) syntax___SrcModuleLoader___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_CSHSorter(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_CSHSorter;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+void INIT_ATTRIBUTES__SrcModuleLoader(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__SrcModuleLoader;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_CSHSorter(val_t self, char *from) {
-}
-val_t NEW_CSHSorter_mmbuilder___CSHSorter___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_CSHSorter();
-  mmbuilder___CSHSorter___init(self, init_table);
-  CHECKNEW_CSHSorter(self, "mmbuilder::CSHSorter::init for CSHSorter");
-  return self;
-}
-const classtable_elt_t VFT_MMSrcAncestor[56] = {
-  {(bigint) 3267 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMSrcAncestor < Object: superclass typecheck marker */},
-  {(bigint) 131 /* 2: MMSrcAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 3267 /* 3: MMSrcAncestor < MMSrcAncestor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_SrcModuleLoader(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_SrcModuleLoader;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_SrcModuleLoader(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_SrcModuleLoader;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_SrcModuleLoader_syntax___SrcModuleLoader___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 67;
+  fra.me.meth = LOCATE_NEW_SrcModuleLoader_syntax___SrcModuleLoader___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./syntax//syntax.nit:67 */
+  fra.me.REG[0] = NEW_SrcModuleLoader();
+  INIT_ATTRIBUTES__SrcModuleLoader(fra.me.REG[0]);
+  syntax___SrcModuleLoader___init(fra.me.REG[0], init_table);
+  CHECKNEW_SrcModuleLoader(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_AbstractCompiler[125] = {
+  {(bigint) 2787 /* 0: Identity */},
+  {(bigint) 46 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AbstractCompiler < Object: superclass typecheck marker */},
+  {(bigint) 163 /* 3: AbstractCompiler < MMContext: superclass typecheck marker */},
+  {(bigint) 291 /* 4: AbstractCompiler < ToolContext: superclass typecheck marker */},
+  {(bigint) 2787 /* 5: AbstractCompiler < AbstractCompiler: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105328,14 +138561,9 @@ const classtable_elt_t VFT_MMSrcAncestor[56] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) static_type___MMAncestor___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMSrcAncestor < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: AbstractCompiler < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -105343,7 +138571,6 @@ const classtable_elt_t VFT_MMSrcAncestor[56] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -105351,163 +138578,802 @@ const classtable_elt_t VFT_MMSrcAncestor[56] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) inheritance___MMAncestor___add_in},
-  {(bigint) 1 /* 44: MMSrcAncestor < MMAncestor: superclass init_table position */},
-  {(bigint) static_type___MMAncestor___stype},
-  {(bigint) static_type___MMAncestor___stype__eq},
-  {(bigint) static_type___MMAncestor___inheriter},
-  {(bigint) static_type___MMAncestor___inheriter__eq},
-  {(bigint) static_type___MMAncestor___is_reffinement},
-  {(bigint) static_type___MMAncestor___is_specialisation},
-  {(bigint) mmbuilder___MMSrcAncestor___local_class},
-  {(bigint) static_type___MMAncestor___init},
-  {(bigint) 2 /* 53: MMSrcAncestor < MMSrcAncestor: superclass init_table position */},
-  {(bigint) mmbuilder___MMSrcAncestor___node},
-  {(bigint) mmbuilder___MMSrcAncestor___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute MMSrcAncestor::_stype */
-/* 2: Attribute MMSrcAncestor::_inheriter */
-/* 3: Attribute MMSrcAncestor::_node */
-/* 4: Attribute MMSrcAncestor::_local_class */
-val_t NEW_MMSrcAncestor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_MMSrcAncestor;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMAncestor____stype(obj) =  NIT_NULL /*null*/;
-  ATTR_static_type___MMAncestor____inheriter(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMSrcAncestor(val_t self, char *from) {
-}
-val_t NEW_MMSrcAncestor_mmbuilder___MMSrcAncestor___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MMSrcAncestor();
-  mmbuilder___MMSrcAncestor___init(self, p0, p1, init_table);
-  CHECKNEW_MMSrcAncestor(self, "mmbuilder::MMSrcAncestor::init for MMSrcAncestor");
-  return self;
-}
-const classtable_elt_t VFT_ClassBuilderVisitor[79] = {
-  {(bigint) 3983 /* 0: Identity */},
-  {(bigint) 3 /* 1: ClassBuilderVisitor < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 2: ClassBuilderVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 3395 /* 3: ClassBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 3983 /* 4: ClassBuilderVisitor < ClassBuilderVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
   {(bigint) string___Object___to_s},
   {(bigint) string___Object___inspect},
   {(bigint) string___Object___inspect_head},
   {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ClassBuilderVisitor < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ClassBuilderVisitor < Visitor: superclass init_table position */},
-  {(bigint) mmbuilder___ClassBuilderVisitor___visit},
-  {(bigint) parser_prod___Visitor___init},
-  {(bigint) 2 /* 46: ClassBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax_base___AbsSyntaxVisitor___locate},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 73: ClassBuilderVisitor < ClassBuilderVisitor: superclass init_table position */},
-  {(bigint) mmbuilder___ClassBuilderVisitor___local_class_arity},
-  {(bigint) mmbuilder___ClassBuilderVisitor___local_class_arity__eq},
-  {(bigint) mmbuilder___ClassBuilderVisitor___formals},
-  {(bigint) mmbuilder___ClassBuilderVisitor___formals__eq},
-  {(bigint) mmbuilder___ClassBuilderVisitor___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: AbstractCompiler < MMContext: superclass init_table position */},
+  {(bigint) abstractmetamodel___MMContext___init},
+  {(bigint) abstractmetamodel___MMContext___module_hierarchy},
+  {(bigint) abstractmetamodel___MMContext___class_hierarchy},
+  {(bigint) abstractmetamodel___MMContext___modules},
+  {(bigint) abstractmetamodel___MMContext___add_module},
+  {(bigint) abstractmetamodel___MMContext___add_global_class},
+  {(bigint) abstractmetamodel___MMContext___add_local_class},
+  {(bigint) analysis___ToolContext___global_callgraph},
+  {(bigint) analysis___ToolContext___global_callgraph__eq},
+  {(bigint) analysis___ToolContext___no_dead_method_removal},
+  {(bigint) analysis___ToolContext___no_dead_method_removal__eq},
+  {(bigint) analysis___ToolContext___no_inline_get_set},
+  {(bigint) analysis___ToolContext___no_inline_get_set__eq},
+  {(bigint) analysis___ToolContext___no_callgraph_from_init},
+  {(bigint) analysis___ToolContext___no_callgraph_from_init__eq},
+  {(bigint) analysis___ToolContext___no_out_of_init_get_test_removal},
+  {(bigint) analysis___ToolContext___no_out_of_init_get_test_removal__eq},
+  {(bigint) syntax___ToolContext___keep_ast},
+  {(bigint) syntax___ToolContext___keep_ast__eq},
+  {(bigint) 2 /* 65: AbstractCompiler < ToolContext: superclass init_table position */},
+  {(bigint) mmloader___ToolContext___error_count},
+  {(bigint) mmloader___ToolContext___warning_count},
+  {(bigint) mmloader___ToolContext___log_directory},
+  {(bigint) mmloader___ToolContext___check_errors},
+  {(bigint) mmloader___ToolContext___error},
+  {(bigint) mmloader___ToolContext___fatal_error},
+  {(bigint) mmloader___ToolContext___warning},
+  {(bigint) mmloader___ToolContext___info},
+  {(bigint) mmloader___ToolContext___paths},
+  {(bigint) mmloader___ToolContext___option_context},
+  {(bigint) mmloader___ToolContext___opt_warn},
+  {(bigint) mmloader___ToolContext___opt_path},
+  {(bigint) mmloader___ToolContext___opt_log},
+  {(bigint) mmloader___ToolContext___opt_log_dir},
+  {(bigint) mmloader___ToolContext___opt_only_metamodel},
+  {(bigint) mmloader___ToolContext___opt_only_parse},
+  {(bigint) mmloader___ToolContext___opt_help},
+  {(bigint) mmloader___ToolContext___opt_version},
+  {(bigint) mmloader___ToolContext___opt_verbose},
+  {(bigint) mmloader___ToolContext___verbose_level},
+  {(bigint) mmloader___ToolContext___init},
+  {(bigint) mmloader___ToolContext___process_options},
+  {(bigint) mmloader___ToolContext___try_to_load},
+  {(bigint) mmloader___ToolContext___get_module_from_filename},
+  {(bigint) mmloader___ToolContext___get_module},
+  {(bigint) mmloader___ToolContext___directory_for},
+  {(bigint) mmloader___ToolContext___register_loader},
+  {(bigint) program___ToolContext___global},
+  {(bigint) program___ToolContext___global__eq},
+  {(bigint) program___ToolContext___use_SFT_optimization__eq},
+  {(bigint) program___ToolContext___use_SFT_optimization},
+  {(bigint) compiling_base___ToolContext___compdir},
+  {(bigint) compiling_base___ToolContext___compdir__eq},
+  {(bigint) compiling_base___ToolContext___clibdir},
+  {(bigint) compiling_base___ToolContext___clibdir__eq},
+  {(bigint) compiling_base___ToolContext___bindir},
+  {(bigint) compiling_base___ToolContext___bindir__eq},
+  {(bigint) compiling_base___ToolContext___output_file},
+  {(bigint) compiling_base___ToolContext___output_file__eq},
+  {(bigint) compiling_base___ToolContext___boost},
+  {(bigint) compiling_base___ToolContext___boost__eq},
+  {(bigint) compiling_base___ToolContext___no_cc},
+  {(bigint) compiling_base___ToolContext___no_cc__eq},
+  {(bigint) compiling_base___ToolContext___cc_link},
+  {(bigint) compiling_base___ToolContext___cc_link__eq},
+  {(bigint) compiling_base___ToolContext___cc_libs},
+  {(bigint) compiling_base___ToolContext___cc_libs__eq},
+  {(bigint) compiling_base___ToolContext___cc_lib_paths},
+  {(bigint) compiling_base___ToolContext___cc_lib_paths__eq},
+  {(bigint) compiling_base___ToolContext___cc_include_paths},
+  {(bigint) compiling_base___ToolContext___cc_include_paths__eq},
+  {(bigint) compiling_base___ToolContext___ext_prefix},
+  {(bigint) compiling_base___ToolContext___ext_prefix__eq},
+  {(bigint) 3 /* 119: AbstractCompiler < AbstractCompiler: superclass init_table position */},
+  {(bigint) abstracttool___AbstractCompiler___init},
+  {(bigint) abstracttool___AbstractCompiler___tool_name},
+  {(bigint) abstracttool___AbstractCompiler___exec_cmd_line},
+  {(bigint) abstracttool___AbstractCompiler___perform_work},
+  {(bigint) abstracttool___AbstractCompiler___dump_context_info},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute ClassBuilderVisitor::_module */
-/* 2: Attribute ClassBuilderVisitor::_local_class */
-/* 3: Attribute ClassBuilderVisitor::_local_property */
-/* 4: Attribute ClassBuilderVisitor::_tc */
-/* 5: Attribute ClassBuilderVisitor::_local_class_arity */
-/* 6: Attribute ClassBuilderVisitor::_formals */
-val_t NEW_ClassBuilderVisitor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_ClassBuilderVisitor;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ClassBuilderVisitor(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute AbstractCompiler::_module_hierarchy */
+/* 3: Attribute AbstractCompiler::_class_hierarchy */
+/* 4: Attribute AbstractCompiler::_global_classes */
+/* 5: Attribute AbstractCompiler::_modules */
+/* 6: Attribute AbstractCompiler::_global_callgraph */
+/* 7: Attribute AbstractCompiler::_no_dead_method_removal */
+/* 8: Attribute AbstractCompiler::_no_inline_get_set */
+/* 9: Attribute AbstractCompiler::_no_callgraph_from_init */
+/* 10: Attribute AbstractCompiler::_no_out_of_init_get_test_removal */
+/* 11: Attribute AbstractCompiler::_keep_ast */
+/* 12: Attribute AbstractCompiler::_error_count */
+/* 13: Attribute AbstractCompiler::_warning_count */
+/* 14: Attribute AbstractCompiler::_log_directory */
+/* 15: Attribute AbstractCompiler::_messages */
+/* 16: Attribute AbstractCompiler::_message_sorter */
+/* 17: Attribute AbstractCompiler::_paths */
+/* 18: Attribute AbstractCompiler::_loaders */
+/* 19: Attribute AbstractCompiler::_option_context */
+/* 20: Attribute AbstractCompiler::_opt_warn */
+/* 21: Attribute AbstractCompiler::_opt_path */
+/* 22: Attribute AbstractCompiler::_opt_log */
+/* 23: Attribute AbstractCompiler::_opt_log_dir */
+/* 24: Attribute AbstractCompiler::_opt_only_metamodel */
+/* 25: Attribute AbstractCompiler::_opt_only_parse */
+/* 26: Attribute AbstractCompiler::_opt_help */
+/* 27: Attribute AbstractCompiler::_opt_version */
+/* 28: Attribute AbstractCompiler::_opt_verbose */
+/* 29: Attribute AbstractCompiler::_verbose_level */
+/* 30: Attribute AbstractCompiler::_processing_modules */
+/* 31: Attribute AbstractCompiler::_path_dirs */
+/* 32: Attribute AbstractCompiler::_global */
+/* 33: Attribute AbstractCompiler::_use_SFT_optimization */
+/* 34: Attribute AbstractCompiler::_compdir */
+/* 35: Attribute AbstractCompiler::_clibdir */
+/* 36: Attribute AbstractCompiler::_bindir */
+/* 37: Attribute AbstractCompiler::_output_file */
+/* 38: Attribute AbstractCompiler::_boost */
+/* 39: Attribute AbstractCompiler::_no_cc */
+/* 40: Attribute AbstractCompiler::_cc_link */
+/* 41: Attribute AbstractCompiler::_cc_libs */
+/* 42: Attribute AbstractCompiler::_cc_lib_paths */
+/* 43: Attribute AbstractCompiler::_cc_include_paths */
+/* 44: Attribute AbstractCompiler::_ext_prefix */
+/* 45: Attribute AbstractCompiler::_tool_name */
+void INIT_ATTRIBUTES__AbstractCompiler(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+  static val_t once_value_2; /* Once value */
+  static val_t once_value_3; /* Once value */
+  static val_t once_value_4; /* Once value */
+  static val_t once_value_5; /* Once value */
+  static val_t once_value_6; /* Once value */
+  static val_t once_value_7; /* Once value */
+  static val_t once_value_8; /* Once value */
+  static val_t once_value_9; /* Once value */
+  static val_t once_value_10; /* Once value */
+  static val_t once_value_11; /* Once value */
+  static val_t once_value_12; /* Once value */
+  static val_t once_value_13; /* Once value */
+  static val_t once_value_14; /* Once value */
+  static val_t once_value_15; /* Once value */
+  static val_t once_value_16; /* Once value */
+  static val_t once_value_17; /* Once value */
+  static val_t once_value_18; /* Once value */
+  static val_t once_value_19; /* Once value */
+  static val_t once_value_20; /* Once value */
+  static val_t once_value_21; /* Once value */
+  static val_t once_value_22; /* Once value */
+  static val_t once_value_23; /* Once value */
+  static val_t once_value_24; /* Once value */
+  static val_t once_value_25; /* Once value */
+  static val_t once_value_26; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AbstractCompiler;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//syntax.nit:97 */
+  REGB0 = TAG_Bool(false);
+  ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:54 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:57 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:60 */
+  if (!once_value_1) {
+    fra.me.REG[1] = BOX_NativeString("logs");
+    REGB0 = TAG_Int(4);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_1 = fra.me.REG[1];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
+  ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:63 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_mmloader___ToolContext____messages(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:64 */
+  fra.me.REG[1] = NEW_ComparableSorter_sorter___ComparableSorter___init();
+  ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:116 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_mmloader___ToolContext____paths(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:119 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:122 */
+  fra.me.REG[1] = NEW_OptionContext_opts___OptionContext___init();
+  ATTR_mmloader___ToolContext____option_context(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:125 */
+  if (!once_value_2) {
+    fra.me.REG[1] = BOX_NativeString("Show warnings");
+    REGB0 = TAG_Int(13);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_2 = fra.me.REG[1];
+    register_static_object(&once_value_2);
+  } else fra.me.REG[1] = once_value_2;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_3) {
+    fra.me.REG[3] = BOX_NativeString("-W");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_3 = fra.me.REG[3];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[3] = once_value_3;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_4) {
+    fra.me.REG[3] = BOX_NativeString("--warn");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_4 = fra.me.REG[3];
+    register_static_object(&once_value_4);
+  } else fra.me.REG[3] = once_value_4;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:128 */
+  if (!once_value_5) {
+    fra.me.REG[2] = BOX_NativeString("Set include path for loaders (may be used more than once)");
+    REGB0 = TAG_Int(57);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_5 = fra.me.REG[2];
+    register_static_object(&once_value_5);
+  } else fra.me.REG[2] = once_value_5;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_6) {
+    fra.me.REG[3] = BOX_NativeString("-I");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_6 = fra.me.REG[3];
+    register_static_object(&once_value_6);
+  } else fra.me.REG[3] = once_value_6;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  if (!once_value_7) {
+    fra.me.REG[3] = BOX_NativeString("--path");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_7 = fra.me.REG[3];
+    register_static_object(&once_value_7);
+  } else fra.me.REG[3] = once_value_7;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionArray_opts___OptionArray___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:131 */
+  if (!once_value_8) {
+    fra.me.REG[1] = BOX_NativeString("Generate various log files");
+    REGB0 = TAG_Int(26);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_8 = fra.me.REG[1];
+    register_static_object(&once_value_8);
+  } else fra.me.REG[1] = once_value_8;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_9) {
+    fra.me.REG[3] = BOX_NativeString("--log");
+    REGB0 = TAG_Int(5);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_9 = fra.me.REG[3];
+    register_static_object(&once_value_9);
+  } else fra.me.REG[3] = once_value_9;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:134 */
+  if (!once_value_10) {
+    fra.me.REG[2] = BOX_NativeString("Directory where to generate log files");
+    REGB0 = TAG_Int(37);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_10 = fra.me.REG[2];
+    register_static_object(&once_value_10);
+  } else fra.me.REG[2] = once_value_10;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_11) {
+    fra.me.REG[3] = BOX_NativeString("--log-dir");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_11 = fra.me.REG[3];
+    register_static_object(&once_value_11);
+  } else fra.me.REG[3] = once_value_11;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionString_opts___OptionString___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_log_dir(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:137 */
+  if (!once_value_12) {
+    fra.me.REG[1] = BOX_NativeString("Stop after meta-model processing");
+    REGB0 = TAG_Int(32);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_12 = fra.me.REG[1];
+    register_static_object(&once_value_12);
+  } else fra.me.REG[1] = once_value_12;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_13) {
+    fra.me.REG[3] = BOX_NativeString("--only-metamodel");
+    REGB0 = TAG_Int(16);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_13 = fra.me.REG[3];
+    register_static_object(&once_value_13);
+  } else fra.me.REG[3] = once_value_13;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:140 */
+  if (!once_value_14) {
+    fra.me.REG[2] = BOX_NativeString("Only proceed to parse step of loaders");
+    REGB0 = TAG_Int(37);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_14 = fra.me.REG[2];
+    register_static_object(&once_value_14);
+  } else fra.me.REG[2] = once_value_14;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_15) {
+    fra.me.REG[3] = BOX_NativeString("--only-parse");
+    REGB0 = TAG_Int(12);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_15 = fra.me.REG[3];
+    register_static_object(&once_value_15);
+  } else fra.me.REG[3] = once_value_15;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:143 */
+  if (!once_value_16) {
+    fra.me.REG[1] = BOX_NativeString("Show Help (This screen)");
+    REGB0 = TAG_Int(23);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_16 = fra.me.REG[1];
+    register_static_object(&once_value_16);
+  } else fra.me.REG[1] = once_value_16;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(2);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_17) {
+    fra.me.REG[3] = BOX_NativeString("-h");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_17 = fra.me.REG[3];
+    register_static_object(&once_value_17);
+  } else fra.me.REG[3] = once_value_17;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_18) {
+    fra.me.REG[3] = BOX_NativeString("-?");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_18 = fra.me.REG[3];
+    register_static_object(&once_value_18);
+  } else fra.me.REG[3] = once_value_18;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_19) {
+    fra.me.REG[3] = BOX_NativeString("--help");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_19 = fra.me.REG[3];
+    register_static_object(&once_value_19);
+  } else fra.me.REG[3] = once_value_19;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_help(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:146 */
+  if (!once_value_20) {
+    fra.me.REG[2] = BOX_NativeString("Show version and exit");
+    REGB0 = TAG_Int(21);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_20 = fra.me.REG[2];
+    register_static_object(&once_value_20);
+  } else fra.me.REG[2] = once_value_20;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Int(0);
+  fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_21) {
+    fra.me.REG[3] = BOX_NativeString("--version");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_21 = fra.me.REG[3];
+    register_static_object(&once_value_21);
+  } else fra.me.REG[3] = once_value_21;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
+  ATTR_mmloader___ToolContext____opt_version(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./mmloader.nit:149 */
+  if (!once_value_22) {
+    fra.me.REG[1] = BOX_NativeString("Verbose");
+    REGB0 = TAG_Int(7);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_22 = fra.me.REG[1];
+    register_static_object(&once_value_22);
+  } else fra.me.REG[1] = once_value_22;
+  fra.me.REG[1] = fra.me.REG[1];
+  REGB0 = TAG_Int(1);
+  fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
+  if (!once_value_23) {
+    fra.me.REG[3] = BOX_NativeString("-v");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_23 = fra.me.REG[3];
+    register_static_object(&once_value_23);
+  } else fra.me.REG[3] = once_value_23;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  if (!once_value_24) {
+    fra.me.REG[3] = BOX_NativeString("--verbose");
+    REGB0 = TAG_Int(9);
+    fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_24 = fra.me.REG[3];
+    register_static_object(&once_value_24);
+  } else fra.me.REG[3] = once_value_24;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[2] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[1], fra.me.REG[2]);
+  ATTR_mmloader___ToolContext____opt_verbose(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:152 */
+  REGB0 = TAG_Int(0);
+  ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0]) = REGB0;
+  /* ./mmloader.nit:235 */
+  fra.me.REG[2] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./mmloader.nit:302 */
+  fra.me.REG[2] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./metamodel//abstractmetamodel.nit:30 */
+  fra.me.REG[2] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./metamodel//abstractmetamodel.nit:34 */
+  fra.me.REG[2] = NEW_PartialOrder_partial_order___PartialOrder___init();
+  ATTR_abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./metamodel//abstractmetamodel.nit:37 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_abstractmetamodel___MMContext____global_classes(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./metamodel//abstractmetamodel.nit:40 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_abstractmetamodel___MMContext____modules(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./analysis//analysis.nit:48 */
+  if (!once_value_25) {
+    fra.me.REG[2] = BOX_NativeString("rta");
+    REGB0 = TAG_Int(3);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_25 = fra.me.REG[2];
+    register_static_object(&once_value_25);
+  } else fra.me.REG[2] = once_value_25;
+  fra.me.REG[2] = fra.me.REG[2];
+  ATTR_analysis___ToolContext____global_callgraph(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./analysis//analysis.nit:49 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_dead_method_removal(fra.me.REG[0]) = REGB0;
+  /* ./analysis//analysis.nit:50 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_inline_get_set(fra.me.REG[0]) = REGB0;
+  /* ./analysis//analysis.nit:51 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_callgraph_from_init(fra.me.REG[0]) = REGB0;
+  /* ./analysis//analysis.nit:52 */
+  REGB0 = TAG_Bool(false);
+  ATTR_analysis___ToolContext____no_out_of_init_get_test_removal(fra.me.REG[0]) = REGB0;
+  /* ./program.nit:26 */
+  REGB0 = TAG_Bool(false);
+  ATTR_program___ToolContext____global(fra.me.REG[0]) = REGB0;
+  /* ./program.nit:27 */
+  REGB0 = TAG_Bool(true);
+  ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:27 */
+  fra.me.REG[2] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____compdir(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:28 */
+  fra.me.REG[2] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____clibdir(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:29 */
+  fra.me.REG[2] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____bindir(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:30 */
+  fra.me.REG[2] = NIT_NULL;
+  ATTR_compiling_base___ToolContext____output_file(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:31 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_base___ToolContext____boost(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:32 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_base___ToolContext____no_cc(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:33 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_base___ToolContext____cc_link(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:34 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_compiling_base___ToolContext____cc_libs(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:35 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_compiling_base___ToolContext____cc_lib_paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:36 */
+  fra.me.REG[2] = NEW_Array_array___Array___init();
+  ATTR_compiling_base___ToolContext____cc_include_paths(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_base.nit:37 */
+  if (!once_value_26) {
+    fra.me.REG[2] = BOX_NativeString("");
+    REGB0 = TAG_Int(0);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_26 = fra.me.REG[2];
+    register_static_object(&once_value_26);
+  } else fra.me.REG[2] = once_value_26;
+  fra.me.REG[2] = fra.me.REG[2];
+  ATTR_compiling_base___ToolContext____ext_prefix(fra.me.REG[0]) = fra.me.REG[2];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AbstractCompiler(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 46);
+  obj->vft = (classtable_elt_t*)VFT_AbstractCompiler;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AbstractCompiler(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AbstractCompiler;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_abstracttool___AbstractCompiler____tool_name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tool_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_keep_ast", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____error_count(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_error_count", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_warning_count", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_log_directory", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____messages(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_messages", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_message_sorter", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____paths(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_paths", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____loaders(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____option_context(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_option_context", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_warn", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_path", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_log", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_log_dir(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_log_dir", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_only_metamodel", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_only_parse", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_help(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_help", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_version(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_version", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_verbose(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_opt_verbose", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_verbose_level", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____module_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_module_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____class_hierarchy(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_class_hierarchy", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____global_classes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_abstractmetamodel___MMContext____modules(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_modules", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____global_callgraph(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_callgraph", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_dead_method_removal(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_dead_method_removal", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_inline_get_set(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_inline_get_set", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_callgraph_from_init(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_callgraph_from_init", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_out_of_init_get_test_removal(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_out_of_init_get_test_removal", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___ToolContext____global(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___ToolContext____use_SFT_optimization(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_use_SFT_optimization", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____boost(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_boost", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____no_cc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_cc", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_link(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_link", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_libs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_libs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_lib_paths(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_lib_paths", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____cc_include_paths(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc_include_paths", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___ToolContext____ext_prefix(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_ext_prefix", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ClassBuilderVisitor_mmbuilder___ClassBuilderVisitor___init(val_t p0, val_t p1) {
+val_t NEW_AbstractCompiler_abstracttool___AbstractCompiler___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_ClassBuilderVisitor();
-  mmbuilder___ClassBuilderVisitor___init(self, p0, p1, init_table);
-  CHECKNEW_ClassBuilderVisitor(self, "mmbuilder::ClassBuilderVisitor::init for ClassBuilderVisitor");
-  return self;
-}
-const classtable_elt_t VFT_ClassSpecializationBuilderVisitor[75] = {
-  {(bigint) 3979 /* 0: Identity */},
-  {(bigint) 3 /* 1: ClassSpecializationBuilderVisitor < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 2: ClassSpecializationBuilderVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 3395 /* 3: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 3979 /* 4: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 29;
+  fra.me.meth = LOCATE_NEW_AbstractCompiler_abstracttool___AbstractCompiler___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./abstracttool.nit:29 */
+  fra.me.REG[1] = NEW_AbstractCompiler();
+  INIT_ATTRIBUTES__AbstractCompiler(fra.me.REG[1]);
+  abstracttool___AbstractCompiler___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AbstractCompiler(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_Program[102] = {
+  {(bigint) 87 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Program < Object: superclass typecheck marker */},
+  {(bigint) 87 /* 3: Program < Program: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105519,14 +139385,11 @@ const classtable_elt_t VFT_ClassSpecializationBuilderVisitor[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ClassSpecializationBuilderVisitor < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Program < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -105534,7 +139397,6 @@ const classtable_elt_t VFT_ClassSpecializationBuilderVisitor[75] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -105542,73 +139404,250 @@ const classtable_elt_t VFT_ClassSpecializationBuilderVisitor[75] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ClassSpecializationBuilderVisitor < Visitor: superclass init_table position */},
-  {(bigint) mmbuilder___ClassSpecializationBuilderVisitor___visit},
-  {(bigint) parser_prod___Visitor___init},
-  {(bigint) 2 /* 46: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax_base___AbsSyntaxVisitor___locate},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 73: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass init_table position */},
-  {(bigint) mmbuilder___ClassSpecializationBuilderVisitor___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ClassSpecializationBuilderVisitor::_module */
-/* 2: Attribute ClassSpecializationBuilderVisitor::_local_class */
-/* 3: Attribute ClassSpecializationBuilderVisitor::_local_property */
-/* 4: Attribute ClassSpecializationBuilderVisitor::_tc */
-val_t NEW_ClassSpecializationBuilderVisitor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling___Program___output_format},
+  {(bigint) compiling___Program___output_format__eq},
+  {(bigint) compiling___Program___compile_prog},
+  {(bigint) compiling___Program___compile_prog_to_c},
+  {(bigint) compiling___Program___compile_main},
+  {(bigint) icode_generator___Program___generate_icode_files},
+  {(bigint) analysis___Program___do_global_analysis},
+  {(bigint) analysis___Program___do_global_pre_analysis_optimizations},
+  {(bigint) analysis___Program___do_global_post_analysis_optimizations},
+  {(bigint) analysis___Program___dump_global_optimizations_information},
+  {(bigint) analysis___Program___dump_global_analysis_information},
+  {(bigint) instantiated_type_analysis___Program___ita},
+  {(bigint) instantiated_type_analysis___Program___ita__eq},
+  {(bigint) instantiated_type_analysis___Program___dump_instantiated_types},
+  {(bigint) instantiated_type_analysis___Program___dump_not_instantiated_types},
+  {(bigint) 1 /* 60: Program < Program: superclass init_table position */},
+  {(bigint) program___Program___tc},
+  {(bigint) program___Program___main_module},
+  {(bigint) program___Program___main_method},
+  {(bigint) program___Program___main_class},
+  {(bigint) program___Program___finish_processing_classes},
+  {(bigint) program___Program___compute_main_method},
+  {(bigint) program___Program___generate_allocation_iroutines},
+  {(bigint) program___Program___with_each_iroutines},
+  {(bigint) program___Program___with_each_methods},
+  {(bigint) instantiated_type_analysis___Program___with_each_live_local_classes},
+  {(bigint) program___Program___init},
+  {(bigint) reachable_as_init___Program___rai},
+  {(bigint) reachable_as_init___Program___rai__eq},
+  {(bigint) reachable_as_init___Program___dump_reachable_as_init_methods},
+  {(bigint) dead_method_removal___Program___nb_removed_iroutines},
+  {(bigint) dead_method_removal___Program___nb_not_removed_iroutines},
+  {(bigint) dead_method_removal___Program___optimize_dead_methods},
+  {(bigint) dead_method_removal___Program___dump_dead_method_optimization},
+  {(bigint) reachable_method_analysis___Program___rma},
+  {(bigint) reachable_method_analysis___Program___rma__eq},
+  {(bigint) reachable_method_analysis___Program___dump_reachable_methods},
+  {(bigint) reachable_method_analysis___Program___dump_unreachable_methods},
+  {(bigint) inline_get_and_set___Program___dump_inline_get_set},
+  {(bigint) inline_get_and_set___Program___inline_get_set},
+  {(bigint) remove_out_of_init_get_test___Program___nb_optimized_isset},
+  {(bigint) remove_out_of_init_get_test___Program___optimize_out_of_init_getters},
+  {(bigint) remove_out_of_init_get_test___Program___dump_out_of_init_information},
+  {(bigint) reachable_from_init_method_analysis___Program___rfima},
+  {(bigint) reachable_from_init_method_analysis___Program___rfima__eq},
+  {(bigint) reachable_from_init_method_analysis___Program___dump_reachable_methods_from_init},
+  {(bigint) reachable_from_init_method_analysis___Program___dump_unreachable_methods_from_init},
+  {(bigint) compiling_global___Program___compile_tables_to_c},
+  {(bigint) compiling_global___Program___compile_main_part},
+  {(bigint) table_computation___Program___table_information},
+  {(bigint) table_computation___Program___compiled_classes},
+  {(bigint) table_computation___Program___do_table_computation},
+  {(bigint) table_computation___Program___do_global_table_analysis},
+  {(bigint) table_computation___Program___colorize},
+  {(bigint) table_computation___Program___free_color},
+  {(bigint) table_computation___Program___append_to_table},
+  {(bigint) table_computation___Program___build_tables_in},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Program::_output_format */
+/* 3: Attribute Program::_ita */
+/* 4: Attribute Program::_tc */
+/* 5: Attribute Program::_main_module */
+/* 6: Attribute Program::_main_method */
+/* 7: Attribute Program::_main_class */
+/* 8: Attribute Program::_rai */
+/* 9: Attribute Program::_nb_removed_iroutines */
+/* 10: Attribute Program::_nb_not_removed_iroutines */
+/* 11: Attribute Program::_rma */
+/* 12: Attribute Program::_number_getter_setter_inlined */
+/* 13: Attribute Program::_nb_optimized_isset */
+/* 14: Attribute Program::_rfima */
+/* 15: Attribute Program::_table_information */
+/* 16: Attribute Program::_compiled_classes */
+void INIT_ATTRIBUTES__Program(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Program;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling.nit:28 */
+  if (!once_value_1) {
+    fra.me.REG[1] = BOX_NativeString("none");
+    REGB0 = TAG_Int(4);
+    fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_1 = fra.me.REG[1];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
+  ATTR_compiling___Program____output_format(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//instantiated_type_analysis.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_instantiated_type_analysis___Program____ita(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:44 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___Program____main_method(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./program.nit:48 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_program___Program____main_class(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//reachable_as_init.nit:24 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_reachable_as_init___Program____rai(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//dead_method_removal.nit:23 */
+  REGB0 = TAG_Int(0);
+  ATTR_dead_method_removal___Program____nb_removed_iroutines(fra.me.REG[0]) = REGB0;
+  /* ./analysis//dead_method_removal.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_dead_method_removal___Program____nb_not_removed_iroutines(fra.me.REG[0]) = REGB0;
+  /* ./analysis//reachable_method_analysis.nit:24 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_reachable_method_analysis___Program____rma(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//inline_get_and_set.nit:26 */
+  REGB0 = TAG_Int(0);
+  ATTR_inline_get_and_set___Program____number_getter_setter_inlined(fra.me.REG[0]) = REGB0;
+  /* ./analysis//remove_out_of_init_get_test.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_remove_out_of_init_get_test___Program____nb_optimized_isset(fra.me.REG[0]) = REGB0;
+  /* ./analysis//reachable_from_init_method_analysis.nit:25 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_reachable_from_init_method_analysis___Program____rfima(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//table_computation.nit:138 */
+  fra.me.REG[1] = NEW_TableInformation_table_computation___ColorContext___init();
+  ATTR_table_computation___Program____table_information(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//table_computation.nit:141 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_table_computation___Program____compiled_classes(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Program(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_ClassSpecializationBuilderVisitor;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ClassSpecializationBuilderVisitor(val_t self, char *from) {
-}
-val_t NEW_ClassSpecializationBuilderVisitor_mmbuilder___ClassSpecializationBuilderVisitor___init(val_t p0, val_t p1) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_ClassSpecializationBuilderVisitor();
-  mmbuilder___ClassSpecializationBuilderVisitor___init(self, p0, p1, init_table);
-  CHECKNEW_ClassSpecializationBuilderVisitor(self, "mmbuilder::ClassSpecializationBuilderVisitor::init for ClassSpecializationBuilderVisitor");
-  return self;
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_Program;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Program(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Program;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_compiling___Program____output_format(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_output_format", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___Program____tc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_program___Program____main_module(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_main_module", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_dead_method_removal___Program____nb_removed_iroutines(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_nb_removed_iroutines", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_dead_method_removal___Program____nb_not_removed_iroutines(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_nb_not_removed_iroutines", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inline_get_and_set___Program____number_getter_setter_inlined(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_number_getter_setter_inlined", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_remove_out_of_init_get_test___Program____nb_optimized_isset(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_nb_optimized_isset", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___Program____table_information(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_table_information", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___Program____compiled_classes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_compiled_classes", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ClassAncestorBuilder[75] = {
-  {(bigint) 3987 /* 0: Identity */},
-  {(bigint) 3 /* 1: ClassAncestorBuilder < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 2: ClassAncestorBuilder < Visitor: superclass typecheck marker */},
-  {(bigint) 3395 /* 3: ClassAncestorBuilder < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 3987 /* 4: ClassAncestorBuilder < ClassAncestorBuilder: superclass typecheck marker */},
+val_t NEW_Program_program___Program___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 219;
+  fra.me.meth = LOCATE_NEW_Program_program___Program___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./program.nit:219 */
+  fra.me.REG[2] = NEW_Program();
+  INIT_ATTRIBUTES__Program(fra.me.REG[2]);
+  program___Program___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_Program(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_Writer[55] = {
+  {(bigint) 11 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: Writer < Object: superclass typecheck marker */},
+  {(bigint) 11 /* 3: Writer < Writer: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105620,14 +139659,11 @@ const classtable_elt_t VFT_ClassAncestorBuilder[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ClassAncestorBuilder < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: Writer < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -105635,7 +139671,6 @@ const classtable_elt_t VFT_ClassAncestorBuilder[75] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -105643,73 +139678,123 @@ const classtable_elt_t VFT_ClassAncestorBuilder[75] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ClassAncestorBuilder < Visitor: superclass init_table position */},
-  {(bigint) mmbuilder___ClassAncestorBuilder___visit},
-  {(bigint) parser_prod___Visitor___init},
-  {(bigint) 2 /* 46: ClassAncestorBuilder < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax_base___AbsSyntaxVisitor___locate},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 73: ClassAncestorBuilder < ClassAncestorBuilder: superclass init_table position */},
-  {(bigint) mmbuilder___ClassAncestorBuilder___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: Writer < Writer: superclass init_table position */},
+  {(bigint) compiling_writer___Writer___add},
+  {(bigint) compiling_writer___Writer___add_all},
+  {(bigint) compiling_writer___Writer___append},
+  {(bigint) compiling_writer___Writer___internal_append},
+  {(bigint) compiling_writer___Writer___sub},
+  {(bigint) compiling_writer___Writer___write_to_stream},
+  {(bigint) compiling_writer___Writer___is_frozen},
+  {(bigint) compiling_writer___Writer___freeze},
+  {(bigint) compiling_writer___Writer___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute ClassAncestorBuilder::_module */
-/* 2: Attribute ClassAncestorBuilder::_local_class */
-/* 3: Attribute ClassAncestorBuilder::_local_property */
-/* 4: Attribute ClassAncestorBuilder::_tc */
-val_t NEW_ClassAncestorBuilder(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_ClassAncestorBuilder;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ClassAncestorBuilder(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute Writer::_first_sub_writer */
+/* 3: Attribute Writer::_last_sub_writer */
+/* 4: Attribute Writer::_last_string */
+/* 5: Attribute Writer::_is_writing */
+/* 6: Attribute Writer::_is_frozen */
+void INIT_ATTRIBUTES__Writer(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__Writer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_writer.nit:50 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_writer___Writer____first_sub_writer(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_writer.nit:51 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_writer___Writer____last_sub_writer(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_writer.nit:53 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_writer___Writer____last_string(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_writer.nit:82 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_writer___Writer____is_writing(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_writer.nit:98 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_writer___Writer____is_frozen(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ClassAncestorBuilder_mmbuilder___ClassAncestorBuilder___init(val_t p0, val_t p1) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_ClassAncestorBuilder();
-  mmbuilder___ClassAncestorBuilder___init(self, p0, p1, init_table);
-  CHECKNEW_ClassAncestorBuilder(self, "mmbuilder::ClassAncestorBuilder::init for ClassAncestorBuilder");
-  return self;
+val_t NEW_Writer(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_Writer;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_Writer(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_Writer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_compiling_writer___Writer____is_writing(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_writing", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_writer___Writer____is_frozen(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_is_frozen", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ClassVerifierVisitor[75] = {
-  {(bigint) 3975 /* 0: Identity */},
-  {(bigint) 3 /* 1: ClassVerifierVisitor < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 2: ClassVerifierVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 3395 /* 3: ClassVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 3975 /* 4: ClassVerifierVisitor < ClassVerifierVisitor: superclass typecheck marker */},
+val_t NEW_Writer_compiling_writer___Writer___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 107;
+  fra.me.meth = LOCATE_NEW_Writer_compiling_writer___Writer___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./compiling//compiling_writer.nit:107 */
+  fra.me.REG[0] = NEW_Writer();
+  INIT_ATTRIBUTES__Writer(fra.me.REG[0]);
+  compiling_writer___Writer___init(fra.me.REG[0], init_table);
+  CHECKNEW_Writer(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_WriterCoreNode[50] = {
+  {(bigint) 283 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: WriterCoreNode < Object: superclass typecheck marker */},
+  {(bigint) 7 /* 3: WriterCoreNode < WriterNode: superclass typecheck marker */},
+  {(bigint) 283 /* 4: WriterCoreNode < WriterCoreNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105721,14 +139806,10 @@ const classtable_elt_t VFT_ClassVerifierVisitor[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ClassVerifierVisitor < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: WriterCoreNode < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -105736,7 +139817,6 @@ const classtable_elt_t VFT_ClassVerifierVisitor[75] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -105744,73 +139824,99 @@ const classtable_elt_t VFT_ClassVerifierVisitor[75] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ClassVerifierVisitor < Visitor: superclass init_table position */},
-  {(bigint) mmbuilder___ClassVerifierVisitor___visit},
-  {(bigint) parser_prod___Visitor___init},
-  {(bigint) 2 /* 46: ClassVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax_base___AbsSyntaxVisitor___locate},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 73: ClassVerifierVisitor < ClassVerifierVisitor: superclass init_table position */},
-  {(bigint) mmbuilder___ClassVerifierVisitor___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: WriterCoreNode < WriterNode: superclass init_table position */},
+  {(bigint) compiling_writer___WriterCoreNode___internal_write_to_stream},
+  {(bigint) compiling_writer___WriterNode___init},
+  {(bigint) 2 /* 48: WriterCoreNode < WriterCoreNode: superclass init_table position */},
+  {(bigint) compiling_writer___WriterCoreNode___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute ClassVerifierVisitor::_module */
-/* 2: Attribute ClassVerifierVisitor::_local_class */
-/* 3: Attribute ClassVerifierVisitor::_local_property */
-/* 4: Attribute ClassVerifierVisitor::_tc */
-val_t NEW_ClassVerifierVisitor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_ClassVerifierVisitor;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute WriterCoreNode::_next_writer */
+/* 3: Attribute WriterCoreNode::_writer */
+void INIT_ATTRIBUTES__WriterCoreNode(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__WriterCoreNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_writer.nit:112 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_writer___WriterNode____next_writer(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_ClassVerifierVisitor(val_t self, char *from) {
-}
-val_t NEW_ClassVerifierVisitor_mmbuilder___ClassVerifierVisitor___init(val_t p0, val_t p1) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_ClassVerifierVisitor();
-  mmbuilder___ClassVerifierVisitor___init(self, p0, p1, init_table);
-  CHECKNEW_ClassVerifierVisitor(self, "mmbuilder::ClassVerifierVisitor::init for ClassVerifierVisitor");
-  return self;
-}
-const classtable_elt_t VFT_PropertyBuilderVisitor[75] = {
-  {(bigint) 3787 /* 0: Identity */},
-  {(bigint) 3 /* 1: PropertyBuilderVisitor < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 2: PropertyBuilderVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 3395 /* 3: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 3787 /* 4: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass typecheck marker */},
+val_t NEW_WriterCoreNode(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_WriterCoreNode;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_WriterCoreNode(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_WriterCoreNode;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_compiling_writer___WriterCoreNode____writer(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_writer", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_WriterCoreNode_compiling_writer___WriterCoreNode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 126;
+  fra.me.meth = LOCATE_NEW_WriterCoreNode_compiling_writer___WriterCoreNode___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_writer.nit:126 */
+  fra.me.REG[1] = NEW_WriterCoreNode();
+  INIT_ATTRIBUTES__WriterCoreNode(fra.me.REG[1]);
+  compiling_writer___WriterCoreNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_WriterCoreNode(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_WriterStrings[50] = {
+  {(bigint) 279 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: WriterStrings < Object: superclass typecheck marker */},
+  {(bigint) 7 /* 3: WriterStrings < WriterNode: superclass typecheck marker */},
+  {(bigint) 279 /* 4: WriterStrings < WriterStrings: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105822,14 +139928,10 @@ const classtable_elt_t VFT_PropertyBuilderVisitor[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PropertyBuilderVisitor < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: WriterStrings < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -105837,7 +139939,6 @@ const classtable_elt_t VFT_PropertyBuilderVisitor[75] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -105845,73 +139946,102 @@ const classtable_elt_t VFT_PropertyBuilderVisitor[75] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: PropertyBuilderVisitor < Visitor: superclass init_table position */},
-  {(bigint) mmbuilder___PropertyBuilderVisitor___visit},
-  {(bigint) parser_prod___Visitor___init},
-  {(bigint) 2 /* 46: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax_base___AbsSyntaxVisitor___locate},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 73: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass init_table position */},
-  {(bigint) mmbuilder___PropertyBuilderVisitor___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 45: WriterStrings < WriterNode: superclass init_table position */},
+  {(bigint) compiling_writer___WriterStrings___internal_write_to_stream},
+  {(bigint) compiling_writer___WriterNode___init},
+  {(bigint) 2 /* 48: WriterStrings < WriterStrings: superclass init_table position */},
+  {(bigint) compiling_writer___WriterStrings___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute PropertyBuilderVisitor::_module */
-/* 2: Attribute PropertyBuilderVisitor::_local_class */
-/* 3: Attribute PropertyBuilderVisitor::_local_property */
-/* 4: Attribute PropertyBuilderVisitor::_tc */
-val_t NEW_PropertyBuilderVisitor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute WriterStrings::_next_writer */
+/* 3: Attribute WriterStrings::_string */
+/* 4: Attribute WriterStrings::_next */
+void INIT_ATTRIBUTES__WriterStrings(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__WriterStrings;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_writer.nit:135 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_writer___WriterStrings____next(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_writer.nit:112 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_writer___WriterNode____next_writer(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_WriterStrings(void)
+{
   obj_t obj;
   obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_PropertyBuilderVisitor;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PropertyBuilderVisitor(val_t self, char *from) {
-}
-val_t NEW_PropertyBuilderVisitor_mmbuilder___PropertyBuilderVisitor___init(val_t p0, val_t p1) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PropertyBuilderVisitor();
-  mmbuilder___PropertyBuilderVisitor___init(self, p0, p1, init_table);
-  CHECKNEW_PropertyBuilderVisitor(self, "mmbuilder::PropertyBuilderVisitor::init for PropertyBuilderVisitor");
-  return self;
-}
-const classtable_elt_t VFT_PropertyVerifierVisitor[77] = {
-  {(bigint) 3783 /* 0: Identity */},
-  {(bigint) 3 /* 1: PropertyVerifierVisitor < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 2: PropertyVerifierVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 3395 /* 3: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 3783 /* 4: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass typecheck marker */},
+  obj->vft = (classtable_elt_t*)VFT_WriterStrings;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_WriterStrings(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_WriterStrings;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_compiling_writer___WriterStrings____string(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_string", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_WriterStrings_compiling_writer___WriterStrings___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 138;
+  fra.me.meth = LOCATE_NEW_WriterStrings_compiling_writer___WriterStrings___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_writer.nit:138 */
+  fra.me.REG[1] = NEW_WriterStrings();
+  INIT_ATTRIBUTES__WriterStrings(fra.me.REG[1]);
+  compiling_writer___WriterStrings___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_WriterStrings(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_CProgram[56] = {
+  {(bigint) 259 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: CProgram < Object: superclass typecheck marker */},
+  {(bigint) 259 /* 3: CProgram < CProgram: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105923,14 +140053,11 @@ const classtable_elt_t VFT_PropertyVerifierVisitor[77] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PropertyVerifierVisitor < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: CProgram < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -105938,7 +140065,6 @@ const classtable_elt_t VFT_PropertyVerifierVisitor[77] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -105946,74 +140072,139 @@ const classtable_elt_t VFT_PropertyVerifierVisitor[77] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: PropertyVerifierVisitor < Visitor: superclass init_table position */},
-  {(bigint) mmbuilder___PropertyVerifierVisitor___visit},
-  {(bigint) parser_prod___Visitor___init},
-  {(bigint) 2 /* 46: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax_base___AbsSyntaxVisitor___locate},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 73: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass init_table position */},
-  {(bigint) mmbuilder___PropertyVerifierVisitor___signature_builder},
-  {(bigint) mmbuilder___PropertyVerifierVisitor___signature_builder__eq},
-  {(bigint) mmbuilder___PropertyVerifierVisitor___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: CProgram < CProgram: superclass init_table position */},
+  {(bigint) compiling_base___CProgram___init},
+  {(bigint) compiling_base___CProgram___program},
+  {(bigint) compiling_base___CProgram___files},
+  {(bigint) compiling_base___CProgram___include_dirs},
+  {(bigint) compiling_base___CProgram___build_file},
+  {(bigint) compiling_base___CProgram___compdir},
+  {(bigint) compiling_base___CProgram___module_header_name},
+  {(bigint) compiling_base___CProgram___get_file_ending},
+  {(bigint) compiling_base___CProgram___generate_build_file},
+  {(bigint) compiling_base___CProgram___run_c_compiler},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute PropertyVerifierVisitor::_module */
-/* 2: Attribute PropertyVerifierVisitor::_local_class */
-/* 3: Attribute PropertyVerifierVisitor::_local_property */
-/* 4: Attribute PropertyVerifierVisitor::_tc */
-/* 5: Attribute PropertyVerifierVisitor::_signature_builder */
-val_t NEW_PropertyVerifierVisitor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_PropertyVerifierVisitor;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PropertyVerifierVisitor(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute CProgram::_program */
+/* 3: Attribute CProgram::_files */
+/* 4: Attribute CProgram::_include_dirs */
+/* 5: Attribute CProgram::_build_file */
+/* 6: Attribute CProgram::_compdir */
+/* 7: Attribute CProgram::_module_include */
+void INIT_ATTRIBUTES__CProgram(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__CProgram;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_base.nit:53 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_compiling_base___CProgram____files(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_base.nit:56 */
+  fra.me.REG[1] = NEW_ArraySet_array___ArraySet___init();
+  ATTR_compiling_base___CProgram____include_dirs(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_base.nit:76 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_compiling_base___CProgram____module_include(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_PropertyVerifierVisitor_mmbuilder___PropertyVerifierVisitor___init(val_t p0, val_t p1) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_PropertyVerifierVisitor();
-  mmbuilder___PropertyVerifierVisitor___init(self, p0, p1, init_table);
-  CHECKNEW_PropertyVerifierVisitor(self, "mmbuilder::PropertyVerifierVisitor::init for PropertyVerifierVisitor");
-  return self;
+val_t NEW_CProgram(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 8);
+  obj->vft = (classtable_elt_t*)VFT_CProgram;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_CProgram(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_CProgram;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_compiling_base___CProgram____program(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_program", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CProgram____files(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_files", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CProgram____include_dirs(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_include_dirs", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CProgram____build_file(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_build_file", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CProgram____compdir(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_compdir", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CProgram____module_include(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_module_include", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_SignatureBuilder[55] = {
-  {(bigint) 35 /* 0: Identity */},
-  {(bigint) 3 /* 1: SignatureBuilder < Object: superclass typecheck marker */},
-  {(bigint) 35 /* 2: SignatureBuilder < SignatureBuilder: superclass typecheck marker */},
+val_t NEW_CProgram_compiling_base___CProgram___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 42;
+  fra.me.meth = LOCATE_NEW_CProgram_compiling_base___CProgram___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_base.nit:42 */
+  fra.me.REG[1] = NEW_CProgram();
+  INIT_ATTRIBUTES__CProgram(fra.me.REG[1]);
+  compiling_base___CProgram___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_CProgram(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_CompilerVisitor[70] = {
+  {(bigint) 239 /* 0: Identity */},
+  {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: CompilerVisitor < Object: superclass typecheck marker */},
+  {(bigint) 239 /* 3: CompilerVisitor < CompilerVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106027,14 +140218,9 @@ const classtable_elt_t VFT_SignatureBuilder[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: SignatureBuilder < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: CompilerVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -106042,7 +140228,6 @@ const classtable_elt_t VFT_SignatureBuilder[55] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -106050,60 +140235,177 @@ const classtable_elt_t VFT_SignatureBuilder[55] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: SignatureBuilder < SignatureBuilder: superclass init_table position */},
-  {(bigint) mmbuilder___SignatureBuilder___params},
-  {(bigint) mmbuilder___SignatureBuilder___params__eq},
-  {(bigint) mmbuilder___SignatureBuilder___untyped_params},
-  {(bigint) mmbuilder___SignatureBuilder___untyped_params__eq},
-  {(bigint) mmbuilder___SignatureBuilder___vararg_rank},
-  {(bigint) mmbuilder___SignatureBuilder___vararg_rank__eq},
-  {(bigint) mmbuilder___SignatureBuilder___closure_decls},
-  {(bigint) mmbuilder___SignatureBuilder___closure_decls__eq},
-  {(bigint) mmbuilder___SignatureBuilder___signature},
-  {(bigint) mmbuilder___SignatureBuilder___signature__eq},
-  {(bigint) mmbuilder___SignatureBuilder___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: CompilerVisitor < CompilerVisitor: superclass init_table position */},
+  {(bigint) compiling_base___CompilerVisitor___add_decl},
+  {(bigint) compiling_base___CompilerVisitor___add_instr},
+  {(bigint) compiling_base___CompilerVisitor___add_indent},
+  {(bigint) compiling_base___CompilerVisitor___add_line_to},
+  {(bigint) compiling_base___CompilerVisitor___add_assignment},
+  {(bigint) compiling_base___CompilerVisitor___new_number},
+  {(bigint) compiling_base___CompilerVisitor___indent},
+  {(bigint) compiling_base___CompilerVisitor___unindent},
+  {(bigint) compiling_base___CompilerVisitor___mmmodule},
+  {(bigint) compiling_base___CompilerVisitor___header_writer},
+  {(bigint) compiling_base___CompilerVisitor___header_writer__eq},
+  {(bigint) compiling_base___CompilerVisitor___writer},
+  {(bigint) compiling_base___CompilerVisitor___writer__eq},
+  {(bigint) compiling_base___CompilerVisitor___decl_writer},
+  {(bigint) compiling_base___CompilerVisitor___decl_writer__eq},
+  {(bigint) compiling_base___CompilerVisitor___top_writer},
+  {(bigint) compiling_base___CompilerVisitor___top_writer__eq},
+  {(bigint) compiling_base___CompilerVisitor___top_decl_writer},
+  {(bigint) compiling_base___CompilerVisitor___top_decl_writer__eq},
+  {(bigint) compiling_base___CompilerVisitor___indent_level},
+  {(bigint) compiling_base___CompilerVisitor___indent_level__eq},
+  {(bigint) compiling_base___CompilerVisitor___program},
+  {(bigint) compiling_base___CompilerVisitor___cprogram},
+  {(bigint) compiling_base___CompilerVisitor___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute SignatureBuilder::_params */
-/* 2: Attribute SignatureBuilder::_untyped_params */
-/* 3: Attribute SignatureBuilder::_vararg_rank */
-/* 4: Attribute SignatureBuilder::_closure_decls */
-/* 5: Attribute SignatureBuilder::_signature */
-val_t NEW_SignatureBuilder(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute CompilerVisitor::_number_cpt */
+/* 3: Attribute CompilerVisitor::_mmmodule */
+/* 4: Attribute CompilerVisitor::_header_writer */
+/* 5: Attribute CompilerVisitor::_writer */
+/* 6: Attribute CompilerVisitor::_decl_writer */
+/* 7: Attribute CompilerVisitor::_top_writer */
+/* 8: Attribute CompilerVisitor::_top_decl_writer */
+/* 9: Attribute CompilerVisitor::_indent_level */
+/* 10: Attribute CompilerVisitor::_program */
+/* 11: Attribute CompilerVisitor::_cprogram */
+void INIT_ATTRIBUTES__CompilerVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__CompilerVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_base.nit:180 */
+  REGB0 = TAG_Int(0);
+  ATTR_compiling_base___CompilerVisitor____number_cpt(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_base.nit:212 */
+  REGB0 = TAG_Int(0);
+  ATTR_compiling_base___CompilerVisitor____indent_level(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_CompilerVisitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
-  obj->vft = (classtable_elt_t*)VFT_SignatureBuilder;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_mmbuilder___SignatureBuilder____params(obj) = NEW_Array_array___Array___init() /*new Array[PParam]*/;
-  ATTR_mmbuilder___SignatureBuilder____untyped_params(obj) = NEW_Array_array___Array___init() /*new Array[PParam]*/;
-  ATTR_mmbuilder___SignatureBuilder____vararg_rank(obj) = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-  ATTR_mmbuilder___SignatureBuilder____closure_decls(obj) = NEW_Array_array___Array___init() /*new Array[AClosureDecl]*/;
-  ATTR_mmbuilder___SignatureBuilder____signature(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_SignatureBuilder(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 12);
+  obj->vft = (classtable_elt_t*)VFT_CompilerVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_CompilerVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_CompilerVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_compiling_base___CompilerVisitor____number_cpt(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_number_cpt", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CompilerVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CompilerVisitor____header_writer(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_header_writer", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CompilerVisitor____writer(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_writer", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CompilerVisitor____decl_writer(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_decl_writer", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CompilerVisitor____top_writer(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_top_writer", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CompilerVisitor____top_decl_writer(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_top_decl_writer", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CompilerVisitor____indent_level(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_indent_level", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CompilerVisitor____program(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_program", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_base___CompilerVisitor____cprogram(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cprogram", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_SignatureBuilder_mmbuilder___SignatureBuilder___init() {
+val_t NEW_CompilerVisitor_compiling_base___CompilerVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_SignatureBuilder();
-  mmbuilder___SignatureBuilder___init(self, init_table);
-  CHECKNEW_SignatureBuilder(self, "mmbuilder::SignatureBuilder::init for SignatureBuilder");
-  return self;
-}
-const classtable_elt_t VFT_MMSrcTypeFormalParameter[79] = {
-  {(bigint) 4039 /* 0: Identity */},
-  {(bigint) 3 /* 1: MMSrcTypeFormalParameter < Object: superclass typecheck marker */},
-  {(bigint) 91 /* 2: MMSrcTypeFormalParameter < MMType: superclass typecheck marker */},
-  {(bigint) 3255 /* 3: MMSrcTypeFormalParameter < MMTypeFormal: superclass typecheck marker */},
-  {(bigint) 3915 /* 4: MMSrcTypeFormalParameter < MMTypeFormalParameter: superclass typecheck marker */},
-  {(bigint) 4039 /* 5: MMSrcTypeFormalParameter < MMSrcTypeFormalParameter: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 220;
+  fra.me.meth = LOCATE_NEW_CompilerVisitor_compiling_base___CompilerVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./compiling//compiling_base.nit:220 */
+  fra.me.REG[2] = NEW_CompilerVisitor();
+  INIT_ATTRIBUTES__CompilerVisitor(fra.me.REG[2]);
+  compiling_base___CompilerVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_CompilerVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_IRegisterSlotAllocationVisitor[63] = {
+  {(bigint) 2007 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IRegisterSlotAllocationVisitor < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 3: IRegisterSlotAllocationVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 2007 /* 4: IRegisterSlotAllocationVisitor < IRegisterSlotAllocationVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106114,14 +140416,11 @@ const classtable_elt_t VFT_MMSrcTypeFormalParameter[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) type_formal___MMTypeFormal___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MMSrcTypeFormalParameter < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IRegisterSlotAllocationVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -106129,7 +140428,6 @@ const classtable_elt_t VFT_MMSrcTypeFormalParameter[79] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -106137,156 +140435,172 @@ const classtable_elt_t VFT_MMSrcTypeFormalParameter[79] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___MMType___compile_cast},
-  {(bigint) compiling_methods___MMType___compile_type_check},
-  {(bigint) compiling_methods___MMType___compile_notnull_check},
-  {(bigint) compiling_base___MMType___cname},
-  {(bigint) compiling_base___MMType___default_cvalue},
-  {(bigint) compiling_base___MMType___boxtype},
-  {(bigint) compiling_base___MMType___unboxtype},
-  {(bigint) genericity___MMTypeFormal___is_generic},
-  {(bigint) type_formal___MMTypeFormal___direct_type},
-  {(bigint) 1 /* 52: MMSrcTypeFormalParameter < MMType: superclass init_table position */},
-  {(bigint) genericity___MMTypeFormalParameter___module},
-  {(bigint) type_formal___MMTypeFormal___local_class},
-  {(bigint) type_formal___MMTypeFormal___is_valid},
-  {(bigint) type_formal___MMTypeFormal_____l},
-  {(bigint) type_formal___MMTypeFormal___is_supertype},
-  {(bigint) genericity___MMTypeFormalParameter___for_module},
-  {(bigint) genericity___MMTypeFormalParameter___adapt_to},
-  {(bigint) genericity___MMTypeFormalParameter___upcast_for},
-  {(bigint) static_type___MMType___not_for_self},
-  {(bigint) type_formal___MMTypeFormal___is_nullable},
-  {(bigint) static_type___MMType___as_nullable},
-  {(bigint) static_type___MMType___as_notnull},
-  {(bigint) static_type___MMType___init},
-  {(bigint) 2 /* 66: MMSrcTypeFormalParameter < MMTypeFormal: superclass init_table position */},
-  {(bigint) type_formal___MMTypeFormal___name},
-  {(bigint) type_formal___MMTypeFormal___bound},
-  {(bigint) type_formal___MMTypeFormal___init},
-  {(bigint) 3 /* 70: MMSrcTypeFormalParameter < MMTypeFormalParameter: superclass init_table position */},
-  {(bigint) genericity___MMTypeFormalParameter___def_class},
-  {(bigint) genericity___MMTypeFormalParameter___position},
-  {(bigint) genericity___MMTypeFormalParameter___bound__eq},
-  {(bigint) genericity___MMTypeFormalParameter___with_bound},
-  {(bigint) genericity___MMTypeFormalParameter___init},
-  {(bigint) 4 /* 76: MMSrcTypeFormalParameter < MMSrcTypeFormalParameter: superclass init_table position */},
-  {(bigint) mmbuilder___MMSrcTypeFormalParameter___node},
-  {(bigint) mmbuilder___MMSrcTypeFormalParameter___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute MMSrcTypeFormalParameter::_as_nullable_cache */
-/* 2: Attribute MMSrcTypeFormalParameter::_name */
-/* 3: Attribute MMSrcTypeFormalParameter::_bound */
-/* 4: Attribute MMSrcTypeFormalParameter::_def_class */
-/* 5: Attribute MMSrcTypeFormalParameter::_position */
-/* 6: Attribute MMSrcTypeFormalParameter::_node */
-val_t NEW_MMSrcTypeFormalParameter(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_MMSrcTypeFormalParameter;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_static_type___MMType____as_nullable_cache(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_MMSrcTypeFormalParameter(val_t self, char *from) {
-}
-val_t NEW_MMSrcTypeFormalParameter_mmbuilder___MMSrcTypeFormalParameter___init(val_t p0, val_t p1, val_t p2, val_t p3) {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_MMSrcTypeFormalParameter();
-  mmbuilder___MMSrcTypeFormalParameter___init(self, p0, p1, p2, p3, init_table);
-  CHECKNEW_MMSrcTypeFormalParameter(self, "mmbuilder::MMSrcTypeFormalParameter::init for MMSrcTypeFormalParameter");
-  return self;
-}
-const classtable_elt_t VFT_MethidAccumulator[48] = {
-  {(bigint) 3235 /* 0: Identity */},
-  {(bigint) 3 /* 1: MethidAccumulator < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 2: MethidAccumulator < Visitor: superclass typecheck marker */},
-  {(bigint) 3235 /* 3: MethidAccumulator < MethidAccumulator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
   {(bigint) string___Object___to_s},
   {(bigint) string___Object___inspect},
   {(bigint) string___Object___inspect_head},
   {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: MethidAccumulator < Object: superclass init_table position */},
-  {(bigint) kernel___Object___object_id},
-  {(bigint) kernel___Object___is_same_type},
-  {(bigint) kernel___Object_____eqeq},
-  {(bigint) kernel___Object_____neq},
-  {(bigint) kernel___Object___output},
-  {(bigint) kernel___Object___exit},
-  {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
-  {(bigint) file___Object___printn},
-  {(bigint) file___Object___print},
-  {(bigint) file___Object___getc},
-  {(bigint) file___Object___gets},
-  {(bigint) file___Object___stdin},
-  {(bigint) file___Object___stdout},
-  {(bigint) file___Object___stderr},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: MethidAccumulator < Visitor: superclass init_table position */},
-  {(bigint) mmbuilder___MethidAccumulator___visit},
-  {(bigint) parser_prod___Visitor___init},
-  {(bigint) 2 /* 46: MethidAccumulator < MethidAccumulator: superclass init_table position */},
-  {(bigint) mmbuilder___MethidAccumulator___name},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: IRegisterSlotAllocationVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_read},
+  {(bigint) allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_write},
+  {(bigint) icode_tools___ICodeVisitor___current_icode},
+  {(bigint) allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_icode},
+  {(bigint) allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs},
+  {(bigint) allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine},
+  {(bigint) icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 53: IRegisterSlotAllocationVisitor < IRegisterSlotAllocationVisitor: superclass init_table position */},
+  {(bigint) allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality},
+  {(bigint) allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free},
+  {(bigint) icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) allocate_iregister_slots___IRegisterSlotAllocationVisitor___register},
+  {(bigint) allocate_iregister_slots___IRegisterSlotAllocationVisitor___free},
+  {(bigint) allocate_iregister_slots___IRegisterSlotAllocationVisitor___iroutine_slot_allocation},
+  {(bigint) allocate_iregister_slots___IRegisterSlotAllocationVisitor___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute MethidAccumulator::_name */
-val_t NEW_MethidAccumulator(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_MethidAccumulator;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_mmbuilder___MethidAccumulator____name(obj) = NEW_Buffer_string___Buffer___init() /*new Buffer*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute IRegisterSlotAllocationVisitor::_current_icode */
+/* 3: Attribute IRegisterSlotAllocationVisitor::_pass */
+/* 4: Attribute IRegisterSlotAllocationVisitor::_current_rank */
+/* 5: Attribute IRegisterSlotAllocationVisitor::_max_rank */
+/* 6: Attribute IRegisterSlotAllocationVisitor::_deferred_list */
+/* 7: Attribute IRegisterSlotAllocationVisitor::_current_ir */
+/* 8: Attribute IRegisterSlotAllocationVisitor::_global_slots */
+/* 9: Attribute IRegisterSlotAllocationVisitor::_std_slots */
+/* 10: Attribute IRegisterSlotAllocationVisitor::_tag_slots */
+void INIT_ATTRIBUTES__IRegisterSlotAllocationVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IRegisterSlotAllocationVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:34 */
+  REGB0 = TAG_Int(0);
+  ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0]) = REGB0;
+  /* ./analysis//allocate_iregister_slots.nit:85 */
+  REGB0 = TAG_Int(0);
+  ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0]) = REGB0;
+  /* ./analysis//allocate_iregister_slots.nit:88 */
+  REGB0 = TAG_Int(0);
+  ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[0]) = REGB0;
+  /* ./analysis//allocate_iregister_slots.nit:92 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//allocate_iregister_slots.nit:178 */
+  fra.me.REG[1] = NEW_SlotGroup_allocate_iregister_slots___SlotGroup___init();
+  ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//allocate_iregister_slots.nit:185 */
+  fra.me.REG[1] = NEW_SlotGroup_allocate_iregister_slots___SlotGroup___init();
+  ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./icode//icode_tools.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_MethidAccumulator(val_t self, char *from) {
-}
-val_t NEW_MethidAccumulator_parser_prod___Visitor___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_MethidAccumulator();
-  parser_prod___Visitor___init(self, init_table);
-  CHECKNEW_MethidAccumulator(self, "parser_prod::Visitor::init for MethidAccumulator");
-  return self;
-}
-const classtable_elt_t VFT_EscapableContext[50] = {
-  {(bigint) 151 /* 0: Identity */},
-  {(bigint) 3 /* 1: EscapableContext < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 2: EscapableContext < EscapableContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+val_t NEW_IRegisterSlotAllocationVisitor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_IRegisterSlotAllocationVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IRegisterSlotAllocationVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IRegisterSlotAllocationVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____pass(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_current_rank", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____max_rank(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_max_rank", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____deferred_list(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_deferred_list", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_ir(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_current_ir", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____global_slots(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_slots", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____std_slots(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_std_slots", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tag_slots", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IRegisterSlotAllocationVisitor_allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 233;
+  fra.me.meth = LOCATE_NEW_IRegisterSlotAllocationVisitor_allocate_iregister_slots___IRegisterSlotAllocationVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:233 */
+  fra.me.REG[1] = NEW_IRegisterSlotAllocationVisitor();
+  INIT_ATTRIBUTES__IRegisterSlotAllocationVisitor(fra.me.REG[1]);
+  allocate_iregister_slots___IRegisterSlotAllocationVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_IRegisterSlotAllocationVisitor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_SlotGroup[49] = {
+  {(bigint) 43 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: SlotGroup < Object: superclass typecheck marker */},
+  {(bigint) 43 /* 3: SlotGroup < SlotGroup: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106294,14 +140608,15 @@ const classtable_elt_t VFT_EscapableContext[50] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: EscapableContext < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: SlotGroup < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -106309,7 +140624,6 @@ const classtable_elt_t VFT_EscapableContext[50] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -106317,45 +140631,103 @@ const classtable_elt_t VFT_EscapableContext[50] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: EscapableContext < EscapableContext: superclass init_table position */},
-  {(bigint) escape___EscapableContext___push},
-  {(bigint) escape___EscapableContext___is_empty},
-  {(bigint) escape___EscapableContext___head},
-  {(bigint) escape___EscapableContext___pop},
-  {(bigint) escape___EscapableContext___visitor},
-  {(bigint) escape___EscapableContext___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: SlotGroup < SlotGroup: superclass init_table position */},
+  {(bigint) allocate_iregister_slots___SlotGroup___register},
+  {(bigint) allocate_iregister_slots___SlotGroup___free},
+  {(bigint) allocate_iregister_slots___SlotGroup___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute EscapableContext::_stack */
-/* 2: Attribute EscapableContext::_visitor */
-val_t NEW_EscapableContext(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_EscapableContext;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_escape___EscapableContext____stack(obj) = NEW_Array_array___Array___init() /*new Array[EscapableBlock]*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute SlotGroup::_free */
+/* 3: Attribute SlotGroup::_next_index */
+void INIT_ATTRIBUTES__SlotGroup(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__SlotGroup;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//allocate_iregister_slots.nit:243 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//allocate_iregister_slots.nit:246 */
+  REGB0 = TAG_Int(0);
+  ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_EscapableContext(val_t self, char *from) {
+val_t NEW_SlotGroup(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_SlotGroup;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_SlotGroup(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_SlotGroup;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____free(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_free", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_allocate_iregister_slots___SlotGroup____next_index(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_next_index", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_EscapableContext_escape___EscapableContext___init(val_t p0) {
+val_t NEW_SlotGroup_allocate_iregister_slots___SlotGroup___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_EscapableContext();
-  escape___EscapableContext___init(self, p0, init_table);
-  CHECKNEW_EscapableContext(self, "escape::EscapableContext::init for EscapableContext");
-  return self;
-}
-const classtable_elt_t VFT_EscapableBlock[49] = {
-  {(bigint) 155 /* 0: Identity */},
-  {(bigint) 3 /* 1: EscapableBlock < Object: superclass typecheck marker */},
-  {(bigint) 155 /* 2: EscapableBlock < EscapableBlock: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_SlotGroup_allocate_iregister_slots___SlotGroup___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_SlotGroup();
+  INIT_ATTRIBUTES__SlotGroup(fra.me.REG[0]);
+  allocate_iregister_slots___SlotGroup___init(fra.me.REG[0], init_table);
+  CHECKNEW_SlotGroup(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ICodeDumper[59] = {
+  {(bigint) 207 /* 0: Identity */},
+  {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ICodeDumper < Object: superclass typecheck marker */},
+  {(bigint) 207 /* 3: ICodeDumper < ICodeDumper: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106369,14 +140741,9 @@ const classtable_elt_t VFT_EscapableBlock[49] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: EscapableBlock < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ICodeDumper < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -106384,7 +140751,6 @@ const classtable_elt_t VFT_EscapableBlock[49] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -106392,44 +140758,167 @@ const classtable_elt_t VFT_EscapableBlock[49] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: EscapableBlock < EscapableBlock: superclass init_table position */},
-  {(bigint) escape___EscapableBlock___node},
-  {(bigint) escape___EscapableBlock___is_break_block},
-  {(bigint) escape___EscapableBlock___break_list},
-  {(bigint) escape___EscapableBlock___continue_stype},
-  {(bigint) escape___EscapableBlock___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ICodeDumper < ICodeDumper: superclass init_table position */},
+  {(bigint) icode_dump___ICodeDumper___dump_locations},
+  {(bigint) icode_dump___ICodeDumper___dump_line_numbers},
+  {(bigint) icode_dump___ICodeDumper___init},
+  {(bigint) icode_dump___ICodeDumper___register},
+  {(bigint) icode_dump___ICodeDumper___register_all},
+  {(bigint) icode_dump___ICodeDumper___closdecl},
+  {(bigint) icode_dump___ICodeDumper___lab},
+  {(bigint) icode_dump___ICodeDumper___line},
+  {(bigint) icode_dump___ICodeDumper___has_lab},
+  {(bigint) icode_dump___ICodeDumper___write},
+  {(bigint) icode_dump___ICodeDumper___indent_level},
+  {(bigint) icode_dump___ICodeDumper___indent},
+  {(bigint) icode_dump___ICodeDumper___unindent},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute EscapableBlock::_node */
-val_t NEW_EscapableBlock(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_EscapableBlock;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_escape___EscapableBlock____node(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ICodeDumper::_dump_locations */
+/* 3: Attribute ICodeDumper::_dump_line_numbers */
+/* 4: Attribute ICodeDumper::_ids */
+/* 5: Attribute ICodeDumper::_last_value */
+/* 6: Attribute ICodeDumper::_last_clos */
+/* 7: Attribute ICodeDumper::_last_label */
+/* 8: Attribute ICodeDumper::_last_line */
+/* 9: Attribute ICodeDumper::_indent_level */
+void INIT_ATTRIBUTES__ICodeDumper(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ICodeDumper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//icode_dump.nit:70 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_icode_dump___ICodeDumper____ids(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//icode_dump.nit:71 */
+  REGB0 = TAG_Int(0);
+  ATTR_icode_dump___ICodeDumper____last_value(fra.me.REG[0]) = REGB0;
+  /* ./analysis//icode_dump.nit:118 */
+  REGB0 = TAG_Int(0);
+  ATTR_icode_dump___ICodeDumper____last_clos(fra.me.REG[0]) = REGB0;
+  /* ./analysis//icode_dump.nit:134 */
+  REGB0 = TAG_Int(0);
+  ATTR_icode_dump___ICodeDumper____last_label(fra.me.REG[0]) = REGB0;
+  /* ./analysis//icode_dump.nit:149 */
+  REGB0 = TAG_Int(0);
+  ATTR_icode_dump___ICodeDumper____last_line(fra.me.REG[0]) = REGB0;
+  /* ./analysis//icode_dump.nit:178 */
+  REGB0 = TAG_Int(0);
+  ATTR_icode_dump___ICodeDumper____indent_level(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_EscapableBlock(val_t self, char *from) {
+val_t NEW_ICodeDumper(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 10);
+  obj->vft = (classtable_elt_t*)VFT_ICodeDumper;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ICodeDumper(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ICodeDumper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____dump_locations(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_dump_locations", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____dump_line_numbers(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_dump_line_numbers", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____ids(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_ids", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____last_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_last_value", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____last_clos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_last_clos", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____last_label(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_last_label", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____last_line(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_last_line", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____indent_level(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_indent_level", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_EscapableBlock_escape___EscapableBlock___init(val_t p0) {
+val_t NEW_ICodeDumper_icode_dump___ICodeDumper___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_EscapableBlock();
-  escape___EscapableBlock___init(self, p0, init_table);
-  CHECKNEW_EscapableBlock(self, "escape::EscapableBlock::init for EscapableBlock");
-  return self;
-}
-const classtable_elt_t VFT_EscapableClosure[52] = {
-  {(bigint) 3343 /* 0: Identity */},
-  {(bigint) 3 /* 1: EscapableClosure < Object: superclass typecheck marker */},
-  {(bigint) 155 /* 2: EscapableClosure < EscapableBlock: superclass typecheck marker */},
-  {(bigint) 3343 /* 3: EscapableClosure < EscapableClosure: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 73;
+  fra.me.meth = LOCATE_NEW_ICodeDumper_icode_dump___ICodeDumper___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  REGB0 = p0;
+  REGB1 = p1;
+  /* ./analysis//icode_dump.nit:73 */
+  fra.me.REG[0] = NEW_ICodeDumper();
+  INIT_ATTRIBUTES__ICodeDumper(fra.me.REG[0]);
+  icode_dump___ICodeDumper___init(fra.me.REG[0], REGB0, REGB1, init_table);
+  CHECKNEW_ICodeDumper(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_InlineMethodVisitor[56] = {
+  {(bigint) 1995 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: InlineMethodVisitor < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 3: InlineMethodVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 1995 /* 4: InlineMethodVisitor < InlineMethodVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106442,14 +140931,9 @@ const classtable_elt_t VFT_EscapableClosure[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: EscapableClosure < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: InlineMethodVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -106457,7 +140941,6 @@ const classtable_elt_t VFT_EscapableClosure[52] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -106465,50 +140948,117 @@ const classtable_elt_t VFT_EscapableClosure[52] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: EscapableClosure < EscapableBlock: superclass init_table position */},
-  {(bigint) escape___EscapableBlock___node},
-  {(bigint) escape___EscapableClosure___is_break_block},
-  {(bigint) escape___EscapableClosure___break_list},
-  {(bigint) escape___EscapableClosure___continue_stype},
-  {(bigint) escape___EscapableBlock___init},
-  {(bigint) 2 /* 49: EscapableClosure < EscapableClosure: superclass init_table position */},
-  {(bigint) escape___EscapableClosure___closure},
-  {(bigint) escape___EscapableClosure___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: InlineMethodVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode_tools___ICodeVisitor___current_icode},
+  {(bigint) inline_methods___InlineMethodVisitor___visit_icode},
+  {(bigint) icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 53: InlineMethodVisitor < InlineMethodVisitor: superclass init_table position */},
+  {(bigint) icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) inline_methods___InlineMethodVisitor___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute EscapableClosure::_node */
-/* 2: Attribute EscapableClosure::_closure */
-/* 3: Attribute EscapableClosure::_break_list */
-val_t NEW_EscapableClosure(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_EscapableClosure;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_escape___EscapableBlock____node(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_EscapableClosure(val_t self, char *from) {
-}
-val_t NEW_EscapableClosure_escape___EscapableClosure___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_EscapableClosure();
-  escape___EscapableClosure___init(self, p0, p1, p2, init_table);
-  CHECKNEW_EscapableClosure(self, "escape::EscapableClosure::init for EscapableClosure");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute InlineMethodVisitor::_current_icode */
+/* 3: Attribute InlineMethodVisitor::_pass */
+/* 4: Attribute InlineMethodVisitor::_icb */
+void INIT_ATTRIBUTES__InlineMethodVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__InlineMethodVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//inline_methods.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_inline_methods___InlineMethodVisitor____pass(fra.me.REG[0]) = REGB0;
+  /* ./icode//icode_tools.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_AEscapeExpr[74] = {
-  {(bigint) 3399 /* 0: Identity */},
-  {(bigint) 3 /* 1: AEscapeExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AEscapeExpr < PNode: superclass typecheck marker */},
+val_t NEW_InlineMethodVisitor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_InlineMethodVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_InlineMethodVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_InlineMethodVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_inline_methods___InlineMethodVisitor____pass(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_pass", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inline_methods___InlineMethodVisitor____icb(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_InlineMethodVisitor_inline_methods___InlineMethodVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 63;
+  fra.me.meth = LOCATE_NEW_InlineMethodVisitor_inline_methods___InlineMethodVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./analysis//inline_methods.nit:63 */
+  fra.me.REG[2] = NEW_InlineMethodVisitor();
+  INIT_ATTRIBUTES__InlineMethodVisitor(fra.me.REG[2]);
+  inline_methods___InlineMethodVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_InlineMethodVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_ReachableMethodAnalysis[49] = {
+  {(bigint) 67 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReachableMethodAnalysis < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 3: ReachableMethodAnalysis < ReachableMethodAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3399 /* 4: AEscapeExpr < AEscapeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106520,14 +141070,10 @@ const classtable_elt_t VFT_AEscapeExpr[74] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AEscapeExpr < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ReachableMethodAnalysis < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -106535,7 +141081,6 @@ const classtable_elt_t VFT_AEscapeExpr[74] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -106543,71 +141088,79 @@ const classtable_elt_t VFT_AEscapeExpr[74] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PNode___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PNode___accept_property_builder},
-  {(bigint) mmbuilder___PNode___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___PNode___locate},
-  {(bigint) parser_prod___PNode___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AEscapeExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 70: AEscapeExpr < AEscapeExpr: superclass init_table position */},
-  {(bigint) escape___AEscapeExpr___escapable_block},
-  {(bigint) escape___AEscapeExpr___kwname},
-  {(bigint) escape___AEscapeExpr___compute_escapable_block},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ReachableMethodAnalysis < ReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable},
+  {(bigint) reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable},
+  {(bigint) reachable_method_analysis___ReachableMethodAnalysis___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AEscapeExpr::_parent */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 4: Attribute AEscapeExpr::_escapable_block */
-val_t NEW_AEscapeExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_AEscapeExpr;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+void INIT_ATTRIBUTES__ReachableMethodAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReachableMethodAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_AEscapeExpr(val_t self, char *from) {
-}
-val_t NEW_AEscapeExpr_parser_nodes___PNode___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_AEscapeExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AEscapeExpr(self, "parser_nodes::PNode::init for AEscapeExpr");
-  return self;
-}
-const classtable_elt_t VFT_VariableContext[62] = {
-  {(bigint) 11 /* 0: Identity */},
-  {(bigint) 3 /* 1: VariableContext < Object: superclass typecheck marker */},
-  {(bigint) 11 /* 2: VariableContext < VariableContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ReachableMethodAnalysis(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_ReachableMethodAnalysis;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReachableMethodAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReachableMethodAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReachableMethodAnalysis_reachable_method_analysis___ReachableMethodAnalysis___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ReachableMethodAnalysis_reachable_method_analysis___ReachableMethodAnalysis___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_ReachableMethodAnalysis();
+  INIT_ATTRIBUTES__ReachableMethodAnalysis(fra.me.REG[0]);
+  reachable_method_analysis___ReachableMethodAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_ReachableMethodAnalysis(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_DefaultReachableMethodAnalysis[51] = {
+  {(bigint) 2071 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: DefaultReachableMethodAnalysis < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 3: DefaultReachableMethodAnalysis < ReachableMethodAnalysis: superclass typecheck marker */},
+  {(bigint) 2071 /* 4: DefaultReachableMethodAnalysis < DefaultReachableMethodAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106620,14 +141173,9 @@ const classtable_elt_t VFT_VariableContext[62] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) control_flow___VariableContext___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: VariableContext < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: DefaultReachableMethodAnalysis < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -106635,7 +141183,6 @@ const classtable_elt_t VFT_VariableContext[62] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -106643,67 +141190,82 @@ const classtable_elt_t VFT_VariableContext[62] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: VariableContext < VariableContext: superclass init_table position */},
-  {(bigint) control_flow___VariableContext_____bra},
-  {(bigint) control_flow___VariableContext___add},
-  {(bigint) control_flow___VariableContext___mark_is_set},
-  {(bigint) control_flow___VariableContext___check_is_set},
-  {(bigint) control_flow___VariableContext___stype},
-  {(bigint) control_flow___VariableContext___stype__eq},
-  {(bigint) control_flow___VariableContext___sub},
-  {(bigint) control_flow___VariableContext___sub_with},
-  {(bigint) control_flow___VariableContext___node},
-  {(bigint) control_flow___VariableContext___init},
-  {(bigint) control_flow___VariableContext___unreash},
-  {(bigint) control_flow___VariableContext___unreash__eq},
-  {(bigint) control_flow___VariableContext___already_unreash},
-  {(bigint) control_flow___VariableContext___already_unreash__eq},
-  {(bigint) control_flow___VariableContext___set_variables},
-  {(bigint) control_flow___VariableContext___is_set},
-  {(bigint) control_flow___VariableContext___merge},
-  {(bigint) control_flow___VariableContext___merge2},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: DefaultReachableMethodAnalysis < ReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) reachable_method_analysis___DefaultReachableMethodAnalysis___is_iroutine_reachable},
+  {(bigint) reachable_method_analysis___DefaultReachableMethodAnalysis___is_method_reachable},
+  {(bigint) reachable_method_analysis___ReachableMethodAnalysis___init},
+  {(bigint) 2 /* 49: DefaultReachableMethodAnalysis < DefaultReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) reachable_method_analysis___DefaultReachableMethodAnalysis___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute VariableContext::_dico */
-/* 2: Attribute VariableContext::_all_variables */
-/* 3: Attribute VariableContext::_stypes */
-/* 4: Attribute VariableContext::_visitor */
-/* 5: Attribute VariableContext::_node */
-/* 6: Attribute VariableContext::_unreash */
-/* 7: Attribute VariableContext::_already_unreash */
-/* 8: Attribute VariableContext::_set_variables */
-val_t NEW_VariableContext(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_VariableContext;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_control_flow___VariableContext____stypes(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[Variable, MMType]*/;
-  ATTR_control_flow___VariableContext____unreash(obj) =  TAG_Bool(false);
-  ATTR_control_flow___VariableContext____already_unreash(obj) =  TAG_Bool(false);
-  ATTR_control_flow___VariableContext____set_variables(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[Variable]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_VariableContext(val_t self, char *from) {
+/* 1: Object_id */
+void INIT_ATTRIBUTES__DefaultReachableMethodAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__DefaultReachableMethodAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_VariableContext_control_flow___VariableContext___init(val_t p0, val_t p1) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_VariableContext();
-  control_flow___VariableContext___init(self, p0, p1, init_table);
-  CHECKNEW_VariableContext(self, "control_flow::VariableContext::init for VariableContext");
-  return self;
-}
-const classtable_elt_t VFT_RootVariableContext[64] = {
-  {(bigint) 227 /* 0: Identity */},
-  {(bigint) 3 /* 1: RootVariableContext < Object: superclass typecheck marker */},
-  {(bigint) 11 /* 2: RootVariableContext < VariableContext: superclass typecheck marker */},
-  {(bigint) 227 /* 3: RootVariableContext < RootVariableContext: superclass typecheck marker */},
+val_t NEW_DefaultReachableMethodAnalysis(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_DefaultReachableMethodAnalysis;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_DefaultReachableMethodAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_DefaultReachableMethodAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_DefaultReachableMethodAnalysis_reachable_method_analysis___DefaultReachableMethodAnalysis___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 64;
+  fra.me.meth = LOCATE_NEW_DefaultReachableMethodAnalysis_reachable_method_analysis___DefaultReachableMethodAnalysis___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./analysis//reachable_method_analysis.nit:64 */
+  fra.me.REG[0] = NEW_DefaultReachableMethodAnalysis();
+  INIT_ATTRIBUTES__DefaultReachableMethodAnalysis(fra.me.REG[0]);
+  reachable_method_analysis___DefaultReachableMethodAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_DefaultReachableMethodAnalysis(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ChaContext[51] = {
+  {(bigint) 2115 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ChaContext < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 3: ChaContext < ReachableMethodAnalysis: superclass typecheck marker */},
+  {(bigint) 2115 /* 4: ChaContext < ChaContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106716,14 +141278,9 @@ const classtable_elt_t VFT_RootVariableContext[64] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) control_flow___VariableContext___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: RootVariableContext < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ChaContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -106731,7 +141288,6 @@ const classtable_elt_t VFT_RootVariableContext[64] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -106739,69 +141295,95 @@ const classtable_elt_t VFT_RootVariableContext[64] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: RootVariableContext < VariableContext: superclass init_table position */},
-  {(bigint) control_flow___VariableContext_____bra},
-  {(bigint) control_flow___VariableContext___add},
-  {(bigint) control_flow___VariableContext___mark_is_set},
-  {(bigint) control_flow___VariableContext___check_is_set},
-  {(bigint) control_flow___VariableContext___stype},
-  {(bigint) control_flow___VariableContext___stype__eq},
-  {(bigint) control_flow___VariableContext___sub},
-  {(bigint) control_flow___VariableContext___sub_with},
-  {(bigint) control_flow___VariableContext___node},
-  {(bigint) control_flow___VariableContext___init},
-  {(bigint) control_flow___VariableContext___unreash},
-  {(bigint) control_flow___VariableContext___unreash__eq},
-  {(bigint) control_flow___VariableContext___already_unreash},
-  {(bigint) control_flow___VariableContext___already_unreash__eq},
-  {(bigint) control_flow___VariableContext___set_variables},
-  {(bigint) control_flow___VariableContext___is_set},
-  {(bigint) control_flow___VariableContext___merge},
-  {(bigint) control_flow___VariableContext___merge2},
-  {(bigint) 2 /* 62: RootVariableContext < RootVariableContext: superclass init_table position */},
-  {(bigint) control_flow___RootVariableContext___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ChaContext < ReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) cha_analysis___ChaContext___is_iroutine_reachable},
+  {(bigint) cha_analysis___ChaContext___is_method_reachable},
+  {(bigint) reachable_method_analysis___ReachableMethodAnalysis___init},
+  {(bigint) 2 /* 49: ChaContext < ChaContext: superclass init_table position */},
+  {(bigint) cha_analysis___ChaContext___reachable_iroutines},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute RootVariableContext::_dico */
-/* 2: Attribute RootVariableContext::_all_variables */
-/* 3: Attribute RootVariableContext::_stypes */
-/* 4: Attribute RootVariableContext::_visitor */
-/* 5: Attribute RootVariableContext::_node */
-/* 6: Attribute RootVariableContext::_unreash */
-/* 7: Attribute RootVariableContext::_already_unreash */
-/* 8: Attribute RootVariableContext::_set_variables */
-val_t NEW_RootVariableContext(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_RootVariableContext;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_control_flow___VariableContext____stypes(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[Variable, MMType]*/;
-  ATTR_control_flow___VariableContext____unreash(obj) =  TAG_Bool(false);
-  ATTR_control_flow___VariableContext____already_unreash(obj) =  TAG_Bool(false);
-  ATTR_control_flow___VariableContext____set_variables(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[Variable]*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ChaContext::_reachable_iroutines */
+void INIT_ATTRIBUTES__ChaContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ChaContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//cha_analysis.nit:26 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_cha_analysis___ChaContext____reachable_iroutines(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_RootVariableContext(val_t self, char *from) {
-}
-val_t NEW_RootVariableContext_control_flow___RootVariableContext___init(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_RootVariableContext();
-  control_flow___RootVariableContext___init(self, p0, p1, init_table);
-  CHECKNEW_RootVariableContext(self, "control_flow::RootVariableContext::init for RootVariableContext");
-  return self;
-}
-const classtable_elt_t VFT_SubVariableContext[65] = {
-  {(bigint) 215 /* 0: Identity */},
-  {(bigint) 3 /* 1: SubVariableContext < Object: superclass typecheck marker */},
-  {(bigint) 11 /* 2: SubVariableContext < VariableContext: superclass typecheck marker */},
-  {(bigint) 215 /* 3: SubVariableContext < SubVariableContext: superclass typecheck marker */},
+val_t NEW_ChaContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ChaContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ChaContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ChaContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_cha_analysis___ChaContext____reachable_iroutines(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_reachable_iroutines", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ChaContext_reachable_method_analysis___ReachableMethodAnalysis___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ChaContext_reachable_method_analysis___ReachableMethodAnalysis___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_ChaContext();
+  INIT_ATTRIBUTES__ChaContext(fra.me.REG[0]);
+  reachable_method_analysis___ReachableMethodAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_ChaContext(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ChaBuilder[52] = {
+  {(bigint) 255 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ChaBuilder < Object: superclass typecheck marker */},
+  {(bigint) 255 /* 3: ChaBuilder < ChaBuilder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106814,14 +141396,10 @@ const classtable_elt_t VFT_SubVariableContext[65] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) control_flow___VariableContext___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: SubVariableContext < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ChaBuilder < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -106829,7 +141407,6 @@ const classtable_elt_t VFT_SubVariableContext[65] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -106837,72 +141414,112 @@ const classtable_elt_t VFT_SubVariableContext[65] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: SubVariableContext < VariableContext: superclass init_table position */},
-  {(bigint) control_flow___SubVariableContext_____bra},
-  {(bigint) control_flow___VariableContext___add},
-  {(bigint) control_flow___VariableContext___mark_is_set},
-  {(bigint) control_flow___VariableContext___check_is_set},
-  {(bigint) control_flow___SubVariableContext___stype},
-  {(bigint) control_flow___VariableContext___stype__eq},
-  {(bigint) control_flow___VariableContext___sub},
-  {(bigint) control_flow___VariableContext___sub_with},
-  {(bigint) control_flow___VariableContext___node},
-  {(bigint) control_flow___VariableContext___init},
-  {(bigint) control_flow___VariableContext___unreash},
-  {(bigint) control_flow___VariableContext___unreash__eq},
-  {(bigint) control_flow___VariableContext___already_unreash},
-  {(bigint) control_flow___VariableContext___already_unreash__eq},
-  {(bigint) control_flow___VariableContext___set_variables},
-  {(bigint) control_flow___SubVariableContext___is_set},
-  {(bigint) control_flow___VariableContext___merge},
-  {(bigint) control_flow___VariableContext___merge2},
-  {(bigint) 2 /* 62: SubVariableContext < SubVariableContext: superclass init_table position */},
-  {(bigint) control_flow___SubVariableContext___prev},
-  {(bigint) control_flow___SubVariableContext___with_prev},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ChaBuilder < ChaBuilder: superclass init_table position */},
+  {(bigint) cha_analysis___ChaBuilder___iroutine_to_search},
+  {(bigint) cha_analysis___ChaBuilder___context},
+  {(bigint) cha_analysis___ChaBuilder___program},
+  {(bigint) cha_analysis___ChaBuilder___init},
+  {(bigint) cha_analysis___ChaBuilder___add_search},
+  {(bigint) cha_analysis___ChaBuilder___work},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute SubVariableContext::_dico */
-/* 2: Attribute SubVariableContext::_all_variables */
-/* 3: Attribute SubVariableContext::_stypes */
-/* 4: Attribute SubVariableContext::_visitor */
-/* 5: Attribute SubVariableContext::_node */
-/* 6: Attribute SubVariableContext::_unreash */
-/* 7: Attribute SubVariableContext::_already_unreash */
-/* 8: Attribute SubVariableContext::_set_variables */
-/* 9: Attribute SubVariableContext::_prev */
-val_t NEW_SubVariableContext(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_SubVariableContext;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_control_flow___VariableContext____stypes(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[Variable, MMType]*/;
-  ATTR_control_flow___VariableContext____unreash(obj) =  TAG_Bool(false);
-  ATTR_control_flow___VariableContext____already_unreash(obj) =  TAG_Bool(false);
-  ATTR_control_flow___VariableContext____set_variables(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[Variable]*/;
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ChaBuilder::_iroutine_to_search */
+/* 3: Attribute ChaBuilder::_context */
+/* 4: Attribute ChaBuilder::_program */
+void INIT_ATTRIBUTES__ChaBuilder(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ChaBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//cha_analysis.nit:38 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_cha_analysis___ChaBuilder____iroutine_to_search(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_SubVariableContext(val_t self, char *from) {
-}
-val_t NEW_SubVariableContext_control_flow___SubVariableContext___with_prev(val_t p0, val_t p1) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_SubVariableContext();
-  control_flow___SubVariableContext___with_prev(self, p0, p1, init_table);
-  CHECKNEW_SubVariableContext(self, "control_flow::SubVariableContext::with_prev for SubVariableContext");
-  return self;
+val_t NEW_ChaBuilder(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_ChaBuilder;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ChaBuilder(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ChaBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_cha_analysis___ChaBuilder____iroutine_to_search(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_cha_analysis___ChaBuilder____context(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_cha_analysis___ChaBuilder____program(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_program", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_TypingVisitor[94] = {
-  {(bigint) 3403 /* 0: Identity */},
-  {(bigint) 3 /* 1: TypingVisitor < Object: superclass typecheck marker */},
-  {(bigint) 7 /* 2: TypingVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 3395 /* 3: TypingVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 3403 /* 4: TypingVisitor < TypingVisitor: superclass typecheck marker */},
+val_t NEW_ChaBuilder_cha_analysis___ChaBuilder___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 42;
+  fra.me.meth = LOCATE_NEW_ChaBuilder_cha_analysis___ChaBuilder___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//cha_analysis.nit:42 */
+  fra.me.REG[1] = NEW_ChaBuilder();
+  INIT_ATTRIBUTES__ChaBuilder(fra.me.REG[1]);
+  cha_analysis___ChaBuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ChaBuilder(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ChaVisitor[57] = {
+  {(bigint) 2111 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ChaVisitor < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 3: ChaVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 2111 /* 4: ChaVisitor < ChaVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106914,14 +141531,10 @@ const classtable_elt_t VFT_TypingVisitor[94] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TypingVisitor < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ChaVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -106929,7 +141542,6 @@ const classtable_elt_t VFT_TypingVisitor[94] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -106937,104 +141549,106 @@ const classtable_elt_t VFT_TypingVisitor[94] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TypingVisitor < Visitor: superclass init_table position */},
-  {(bigint) typing___TypingVisitor___visit},
-  {(bigint) parser_prod___Visitor___init},
-  {(bigint) 2 /* 46: TypingVisitor < AbsSyntaxVisitor: superclass init_table position */},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_object},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_bool},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_int},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_float},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_char},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_string},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_collection},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_array},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_discrete},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_range},
-  {(bigint) syntax_base___AbsSyntaxVisitor___type_none},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module},
-  {(bigint) syntax_base___AbsSyntaxVisitor___module__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_class__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property},
-  {(bigint) syntax_base___AbsSyntaxVisitor___local_property__eq},
-  {(bigint) syntax_base___AbsSyntaxVisitor___tc},
-  {(bigint) syntax_base___AbsSyntaxVisitor___error},
-  {(bigint) syntax_base___AbsSyntaxVisitor___warning},
-  {(bigint) syntax_base___AbsSyntaxVisitor___locate},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_expr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
-  {(bigint) syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 73: TypingVisitor < TypingVisitor: superclass init_table position */},
-  {(bigint) typing___TypingVisitor___variable_ctx},
-  {(bigint) typing___TypingVisitor___variable_ctx__eq},
-  {(bigint) typing___TypingVisitor___base_variable_ctx},
-  {(bigint) typing___TypingVisitor___base_variable_ctx__eq},
-  {(bigint) typing___TypingVisitor___escapable_ctx},
-  {(bigint) typing___TypingVisitor___escapable_ctx__eq},
-  {(bigint) typing___TypingVisitor___self_var},
-  {(bigint) typing___TypingVisitor___self_var__eq},
-  {(bigint) typing___TypingVisitor___top_block},
-  {(bigint) typing___TypingVisitor___top_block__eq},
-  {(bigint) typing___TypingVisitor___explicit_super_init_calls},
-  {(bigint) typing___TypingVisitor___explicit_super_init_calls__eq},
-  {(bigint) typing___TypingVisitor___explicit_other_init_call},
-  {(bigint) typing___TypingVisitor___explicit_other_init_call__eq},
-  {(bigint) typing___TypingVisitor___use_if_true_variable_ctx},
-  {(bigint) typing___TypingVisitor___use_if_false_variable_ctx},
-  {(bigint) typing___TypingVisitor___once_count},
-  {(bigint) typing___TypingVisitor___once_count__eq},
-  {(bigint) typing___TypingVisitor___init},
-  {(bigint) typing___TypingVisitor___get_default_constructor_for},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ChaVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode_tools___ICodeVisitor___current_icode},
+  {(bigint) cha_analysis___ChaVisitor___visit_icode},
+  {(bigint) icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 53: ChaVisitor < ChaVisitor: superclass init_table position */},
+  {(bigint) cha_analysis___ChaVisitor___builder},
+  {(bigint) icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) cha_analysis___ChaVisitor___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute TypingVisitor::_module */
-/* 2: Attribute TypingVisitor::_local_class */
-/* 3: Attribute TypingVisitor::_local_property */
-/* 4: Attribute TypingVisitor::_tc */
-/* 5: Attribute TypingVisitor::_variable_ctx */
-/* 6: Attribute TypingVisitor::_base_variable_ctx */
-/* 7: Attribute TypingVisitor::_escapable_ctx */
-/* 8: Attribute TypingVisitor::_self_var */
-/* 9: Attribute TypingVisitor::_top_block */
-/* 10: Attribute TypingVisitor::_explicit_super_init_calls */
-/* 11: Attribute TypingVisitor::_explicit_other_init_call */
-/* 12: Attribute TypingVisitor::_once_count */
-val_t NEW_TypingVisitor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
-  obj->vft = (classtable_elt_t*)VFT_TypingVisitor;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_typing___TypingVisitor____escapable_ctx(obj) = NEW_EscapableContext_escape___EscapableContext___init(variable[0]) /*new EscapableContext*/;
-  ATTR_typing___TypingVisitor____once_count(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TypingVisitor(val_t self, char *from) {
-}
-val_t NEW_TypingVisitor_typing___TypingVisitor___init(val_t p0, val_t p1) {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TypingVisitor();
-  typing___TypingVisitor___init(self, p0, p1, init_table);
-  CHECKNEW_TypingVisitor(self, "typing::TypingVisitor::init for TypingVisitor");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ChaVisitor::_current_icode */
+/* 3: Attribute ChaVisitor::_builder */
+void INIT_ATTRIBUTES__ChaVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ChaVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_tools.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_AAbsAbsSendExpr[104] = {
-  {(bigint) 4379 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAbsAbsSendExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAbsAbsSendExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAbsAbsSendExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: AAbsAbsSendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AAbsAbsSendExpr < PExpr: superclass typecheck marker */},
+val_t NEW_ChaVisitor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_ChaVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ChaVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ChaVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_cha_analysis___ChaVisitor____builder(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_builder", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ChaVisitor_cha_analysis___ChaVisitor___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 124;
+  fra.me.meth = LOCATE_NEW_ChaVisitor_cha_analysis___ChaVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//cha_analysis.nit:124 */
+  fra.me.REG[1] = NEW_ChaVisitor();
+  INIT_ATTRIBUTES__ChaVisitor(fra.me.REG[1]);
+  cha_analysis___ChaVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ChaVisitor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_InstantiatedTypeAnalysis[52] = {
+  {(bigint) 179 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: InstantiatedTypeAnalysis < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 179 /* 4: InstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107044,14 +141658,12 @@ const classtable_elt_t VFT_AAbsAbsSendExpr[104] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAbsAbsSendExpr < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: InstantiatedTypeAnalysis < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -107059,7 +141671,6 @@ const classtable_elt_t VFT_AAbsAbsSendExpr[104] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -107067,112 +141678,83 @@ const classtable_elt_t VFT_AAbsAbsSendExpr[104] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAbsAbsSendExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAbsAbsSendExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AAbsAbsSendExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 4 /* 99: AAbsAbsSendExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
+  {(bigint) 1 /* 49: InstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass init_table position */},
+  {(bigint) instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated},
+  {(bigint) instantiated_type_analysis___InstantiatedTypeAnalysis___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AAbsAbsSendExpr::_parent */
-/* 2: Attribute AAbsAbsSendExpr::_first_token */
-/* 3: Attribute AAbsAbsSendExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAbsAbsSendExpr::_is_typed */
-/* 6: Attribute AAbsAbsSendExpr::_stype */
-/* 7: Attribute AAbsAbsSendExpr::_if_true_variable_ctx */
-/* 8: Attribute AAbsAbsSendExpr::_if_false_variable_ctx */
-/* 9: Attribute AAbsAbsSendExpr::_prop_signature */
-/* 10: Attribute AAbsAbsSendExpr::_arguments */
-val_t NEW_AAbsAbsSendExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_AAbsAbsSendExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAbsAbsSendExpr(val_t self, char *from) {
-}
-val_t NEW_AAbsAbsSendExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AAbsAbsSendExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAbsAbsSendExpr(self, "parser_nodes::PNode::init for AAbsAbsSendExpr");
-  return self;
+/* 1: Object_id */
+void INIT_ATTRIBUTES__InstantiatedTypeAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__InstantiatedTypeAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_AAbsSendExpr[110] = {
-  {(bigint) 4555 /* 0: Identity */},
-  {(bigint) 3 /* 1: AAbsSendExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AAbsSendExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AAbsSendExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: AAbsSendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: AAbsSendExpr < PExpr: superclass typecheck marker */},
+val_t NEW_InstantiatedTypeAnalysis(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_InstantiatedTypeAnalysis;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_InstantiatedTypeAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_InstantiatedTypeAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_InstantiatedTypeAnalysis_instantiated_type_analysis___InstantiatedTypeAnalysis___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_InstantiatedTypeAnalysis_instantiated_type_analysis___InstantiatedTypeAnalysis___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_InstantiatedTypeAnalysis();
+  INIT_ATTRIBUTES__InstantiatedTypeAnalysis(fra.me.REG[0]);
+  instantiated_type_analysis___InstantiatedTypeAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_InstantiatedTypeAnalysis(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_DefaultInstantiatedTypeAnalysis[54] = {
+  {(bigint) 2083 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: DefaultInstantiatedTypeAnalysis < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: AAbsSendExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 179 /* 4: DefaultInstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass typecheck marker */},
+  {(bigint) 2083 /* 5: DefaultInstantiatedTypeAnalysis < DefaultInstantiatedTypeAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107181,14 +141763,12 @@ const classtable_elt_t VFT_AAbsSendExpr[110] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AAbsSendExpr < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: DefaultInstantiatedTypeAnalysis < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -107196,7 +141776,6 @@ const classtable_elt_t VFT_AAbsSendExpr[110] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -107204,54 +141783,86 @@ const classtable_elt_t VFT_AAbsSendExpr[110] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AAbsSendExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AAbsSendExpr < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AAbsSendExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
   {0} /* Class Hole :( */,
+  {(bigint) 1 /* 49: DefaultInstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass init_table position */},
+  {(bigint) instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___is_class_instantiated},
+  {(bigint) instantiated_type_analysis___InstantiatedTypeAnalysis___init},
+  {(bigint) 2 /* 52: DefaultInstantiatedTypeAnalysis < DefaultInstantiatedTypeAnalysis: superclass init_table position */},
+  {(bigint) instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+void INIT_ATTRIBUTES__DefaultInstantiatedTypeAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__DefaultInstantiatedTypeAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_DefaultInstantiatedTypeAnalysis(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_DefaultInstantiatedTypeAnalysis;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_DefaultInstantiatedTypeAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_DefaultInstantiatedTypeAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_DefaultInstantiatedTypeAnalysis_instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 69;
+  fra.me.meth = LOCATE_NEW_DefaultInstantiatedTypeAnalysis_instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./analysis//instantiated_type_analysis.nit:69 */
+  fra.me.REG[0] = NEW_DefaultInstantiatedTypeAnalysis();
+  INIT_ATTRIBUTES__DefaultInstantiatedTypeAnalysis(fra.me.REG[0]);
+  instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_DefaultInstantiatedTypeAnalysis(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_RtaContext[56] = {
+  {(bigint) 319 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: RtaContext < Object: superclass typecheck marker */},
+  {(bigint) 67 /* 3: RtaContext < ReachableMethodAnalysis: superclass typecheck marker */},
+  {(bigint) 179 /* 4: RtaContext < InstantiatedTypeAnalysis: superclass typecheck marker */},
+  {(bigint) 319 /* 5: RtaContext < RtaContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107263,65 +141874,128 @@ const classtable_elt_t VFT_AAbsSendExpr[110] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 4 /* 99: AAbsSendExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 5 /* 104: AAbsSendExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: RtaContext < Object: superclass init_table position */},
+  {(bigint) kernel___Object___object_id},
+  {(bigint) kernel___Object___is_same_type},
+  {(bigint) kernel___Object_____eqeq},
+  {(bigint) kernel___Object_____neq},
+  {(bigint) kernel___Object___output},
+  {(bigint) kernel___Object___exit},
+  {(bigint) kernel___Object___sys},
+  {(bigint) file___Object___printn},
+  {(bigint) file___Object___print},
+  {(bigint) file___Object___getc},
+  {(bigint) file___Object___gets},
+  {(bigint) file___Object___stdin},
+  {(bigint) file___Object___stdout},
+  {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
+  {(bigint) math___Object___atan2},
+  {(bigint) math___Object___pi},
+  {(bigint) math___Object___srand_from},
+  {(bigint) math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: RtaContext < ReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) rta_analysis___RtaContext___is_iroutine_reachable},
+  {(bigint) rta_analysis___RtaContext___is_method_reachable},
+  {(bigint) reachable_method_analysis___ReachableMethodAnalysis___init},
+  {(bigint) 2 /* 49: RtaContext < InstantiatedTypeAnalysis: superclass init_table position */},
+  {(bigint) rta_analysis___RtaContext___is_class_instantiated},
+  {(bigint) instantiated_type_analysis___InstantiatedTypeAnalysis___init},
+  {(bigint) 3 /* 52: RtaContext < RtaContext: superclass init_table position */},
+  {(bigint) rta_analysis___RtaContext___init},
+  {(bigint) rta_analysis___RtaContext___instanciated_classes},
+  {(bigint) rta_analysis___RtaContext___reachable_iroutines},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AAbsSendExpr::_parent */
-/* 2: Attribute AAbsSendExpr::_first_token */
-/* 3: Attribute AAbsSendExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AAbsSendExpr::_is_typed */
-/* 6: Attribute AAbsSendExpr::_stype */
-/* 7: Attribute AAbsSendExpr::_if_true_variable_ctx */
-/* 8: Attribute AAbsSendExpr::_if_false_variable_ctx */
-/* 9: Attribute AAbsSendExpr::_prop_signature */
-/* 10: Attribute AAbsSendExpr::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute AAbsSendExpr::_prop */
-/* 15: Attribute AAbsSendExpr::_return_type */
-val_t NEW_AAbsSendExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 16);
-  obj->vft = (classtable_elt_t*)VFT_AAbsSendExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AAbsSendExpr(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute RtaContext::_instanciated_classes */
+/* 3: Attribute RtaContext::_reachable_iroutines */
+void INIT_ATTRIBUTES__RtaContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__RtaContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//rta_analysis.nit:29 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_rta_analysis___RtaContext____instanciated_classes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//rta_analysis.nit:33 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_rta_analysis___RtaContext____reachable_iroutines(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_AAbsSendExpr_parser_nodes___PNode___init() {
-  int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_AAbsSendExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AAbsSendExpr(self, "parser_nodes::PNode::init for AAbsSendExpr");
-  return self;
+val_t NEW_RtaContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_RtaContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_RtaContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_RtaContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_rta_analysis___RtaContext____instanciated_classes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_instanciated_classes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_rta_analysis___RtaContext____reachable_iroutines(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_reachable_iroutines", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ASuperInitCall[110] = {
-  {(bigint) 4571 /* 0: Identity */},
-  {(bigint) 3 /* 1: ASuperInitCall < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ASuperInitCall < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ASuperInitCall < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ASuperInitCall < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ASuperInitCall < PExpr: superclass typecheck marker */},
+val_t NEW_RtaContext_rta_analysis___RtaContext___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 28;
+  fra.me.meth = LOCATE_NEW_RtaContext_rta_analysis___RtaContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./analysis//rta_analysis.nit:28 */
+  fra.me.REG[0] = NEW_RtaContext();
+  INIT_ATTRIBUTES__RtaContext(fra.me.REG[0]);
+  rta_analysis___RtaContext___init(fra.me.REG[0], init_table);
+  CHECKNEW_RtaContext(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_RtaBuilder[59] = {
+  {(bigint) 59 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: RtaBuilder < Object: superclass typecheck marker */},
+  {(bigint) 59 /* 3: RtaBuilder < RtaBuilder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 4555 /* 7: ASuperInitCall < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ASuperInitCall < ASuperInitCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107329,14 +142003,14 @@ const classtable_elt_t VFT_ASuperInitCall[110] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ASuperInitCall < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: RtaBuilder < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -107344,7 +142018,6 @@ const classtable_elt_t VFT_ASuperInitCall[110] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -107352,58 +142025,137 @@ const classtable_elt_t VFT_ASuperInitCall[110] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ASuperInitCall < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ASuperInitCall < Prod: superclass init_table position */},
-  {(bigint) 6 /* 70: ASuperInitCall < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ASuperInitCall < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: RtaBuilder < RtaBuilder: superclass init_table position */},
+  {(bigint) rta_analysis___RtaBuilder___context},
+  {(bigint) rta_analysis___RtaBuilder___program},
+  {(bigint) rta_analysis___RtaBuilder___iroutine_to_search},
+  {(bigint) rta_analysis___RtaBuilder___call_sites},
+  {(bigint) rta_analysis___RtaBuilder___called_methods},
+  {(bigint) rta_analysis___RtaBuilder___init},
+  {(bigint) rta_analysis___RtaBuilder___check_method},
+  {(bigint) rta_analysis___RtaBuilder___check_call_sites},
+  {(bigint) rta_analysis___RtaBuilder___add_instantiated_class},
+  {(bigint) rta_analysis___RtaBuilder___add_reachable_call},
+  {(bigint) rta_analysis___RtaBuilder___add_reachable_iroutine},
+  {(bigint) rta_analysis___RtaBuilder___force_some_type_analysis},
+  {(bigint) rta_analysis___RtaBuilder___work},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute RtaBuilder::_context */
+/* 3: Attribute RtaBuilder::_program */
+/* 4: Attribute RtaBuilder::_iroutine_to_search */
+/* 5: Attribute RtaBuilder::_call_sites */
+/* 6: Attribute RtaBuilder::_called_methods */
+void INIT_ATTRIBUTES__RtaBuilder(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__RtaBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//rta_analysis.nit:47 */
+  fra.me.REG[1] = NEW_List_list___List___init();
+  ATTR_rta_analysis___RtaBuilder____iroutine_to_search(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//rta_analysis.nit:48 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_rta_analysis___RtaBuilder____call_sites(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//rta_analysis.nit:49 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_rta_analysis___RtaBuilder____called_methods(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_RtaBuilder(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 7);
+  obj->vft = (classtable_elt_t*)VFT_RtaBuilder;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_RtaBuilder(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_RtaBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_rta_analysis___RtaBuilder____context(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_rta_analysis___RtaBuilder____program(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_program", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_rta_analysis___RtaBuilder____iroutine_to_search(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_iroutine_to_search", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_rta_analysis___RtaBuilder____call_sites(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_call_sites", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_rta_analysis___RtaBuilder____called_methods(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_called_methods", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_RtaBuilder_rta_analysis___RtaBuilder___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 51;
+  fra.me.meth = LOCATE_NEW_RtaBuilder_rta_analysis___RtaBuilder___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//rta_analysis.nit:51 */
+  fra.me.REG[1] = NEW_RtaBuilder();
+  INIT_ATTRIBUTES__RtaBuilder(fra.me.REG[1]);
+  rta_analysis___RtaBuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_RtaBuilder(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_RtaVisitor[57] = {
+  {(bigint) 315 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: RtaVisitor < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 3: RtaVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 315 /* 4: RtaVisitor < RtaVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107411,80 +142163,14 @@ const classtable_elt_t VFT_ASuperInitCall[110] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 4 /* 99: ASuperInitCall < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 5 /* 104: ASuperInitCall < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ASuperInitCall::_parent */
-/* 2: Attribute ASuperInitCall::_first_token */
-/* 3: Attribute ASuperInitCall::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ASuperInitCall::_is_typed */
-/* 6: Attribute ASuperInitCall::_stype */
-/* 7: Attribute ASuperInitCall::_if_true_variable_ctx */
-/* 8: Attribute ASuperInitCall::_if_false_variable_ctx */
-/* 9: Attribute ASuperInitCall::_prop_signature */
-/* 10: Attribute ASuperInitCall::_arguments */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* Instance Hole :( */
-/* 14: Attribute ASuperInitCall::_prop */
-/* 15: Attribute ASuperInitCall::_return_type */
-val_t NEW_ASuperInitCall(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 16);
-  obj->vft = (classtable_elt_t*)VFT_ASuperInitCall;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ASuperInitCall(val_t self, char *from) {
-}
-val_t NEW_ASuperInitCall_parser_nodes___PNode___init() {
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASuperInitCall();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ASuperInitCall(self, "parser_nodes::PNode::init for ASuperInitCall");
-  return self;
-}
-const classtable_elt_t VFT_ASendReassignExpr[122] = {
-  {(bigint) 4599 /* 0: Identity */},
-  {(bigint) 3 /* 1: ASendReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ASendReassignExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ASendReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4379 /* 4: ASendReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ASendReassignExpr < PExpr: superclass typecheck marker */},
-  {(bigint) 4151 /* 6: ASendReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 4555 /* 7: ASendReassignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 4571 /* 8: ASendReassignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 4591 /* 9: ASendReassignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 4599 /* 10: ASendReassignExpr < ASendReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 3 /* 23: ASendReassignExpr < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: RtaVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -107492,7 +142178,6 @@ const classtable_elt_t VFT_ASendReassignExpr[122] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -107500,153 +142185,105 @@ const classtable_elt_t VFT_ASendReassignExpr[122] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
-  {(bigint) math___Object___atan2},
-  {(bigint) math___Object___pi},
-  {(bigint) math___Object___srand_from},
-  {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___ASendExpr___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___ASendExpr___visit_all},
-  {(bigint) parser_prod___ASendExpr___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 4 /* 60: ASendReassignExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___ASendExpr___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 5 /* 69: ASendReassignExpr < Prod: superclass init_table position */},
-  {(bigint) 0 /* 70: ASendReassignExpr < ASuperInitCall: superclass init_table position */},
-  {(bigint) typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 9 /* 72: ASendReassignExpr < ASendReassignExpr: superclass init_table position */},
-  {(bigint) typing___ASendReassignExpr___read_prop},
-  {(bigint) compiling_methods___ASendReassignExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___ASendReassignExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 6 /* 80: ASendReassignExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) typing___AReassignFormExpr___do_rvalue_typing},
-  {(bigint) typing___AReassignFormExpr___assign_method},
-  {(bigint) 8 /* 93: ASendReassignExpr < AReassignFormExpr: superclass init_table position */},
-  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op},
-  {(bigint) parser_nodes___AReassignFormExpr___n_assign_op__eq},
-  {(bigint) parser_nodes___AReassignFormExpr___n_value},
-  {(bigint) parser_nodes___AReassignFormExpr___n_value__eq},
-  {(bigint) compiling_methods___AAbsAbsSendExpr___compile_arguments_in},
-  {(bigint) 2 /* 99: ASendReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsAbsSendExpr___prop_signature},
-  {(bigint) typing___AAbsAbsSendExpr___arguments},
-  {(bigint) typing___AAbsAbsSendExpr___process_signature},
-  {(bigint) typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 104: ASendReassignExpr < AAbsSendExpr: superclass init_table position */},
-  {(bigint) typing___AAbsSendExpr___do_typing},
-  {(bigint) typing___AAbsSendExpr___get_property},
-  {(bigint) typing___AAbsSendExpr___get_signature},
-  {(bigint) typing___AAbsSendExpr___prop},
-  {(bigint) typing___AAbsSendExpr___return_type},
-  {(bigint) compiling_methods___ASendExpr___intern_compile_call},
-  {(bigint) typing___ASendExpr___name},
-  {(bigint) typing___ASendExpr___raw_arguments},
-  {(bigint) typing___ASendExpr___closure_defs},
-  {(bigint) typing___ASendReassignExpr___do_all_typing},
-  {(bigint) parser_prod___ASendExpr___empty_init},
-  {(bigint) parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 117: ASendReassignExpr < ASendExpr: superclass init_table position */},
-  {(bigint) parser_nodes___ASendExpr___n_expr},
-  {(bigint) parser_prod___ASendExpr___n_expr__eq},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) parser_nodes___ASendExpr___n_closure_defs__eq},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute ASendReassignExpr::_parent */
-/* 2: Attribute ASendReassignExpr::_first_token */
-/* 3: Attribute ASendReassignExpr::_last_token */
-/* 4: Attribute ASendReassignExpr::_read_prop */
-/* 5: Attribute ASendReassignExpr::_is_typed */
-/* 6: Attribute ASendReassignExpr::_stype */
-/* 7: Attribute ASendReassignExpr::_if_true_variable_ctx */
-/* 8: Attribute ASendReassignExpr::_if_false_variable_ctx */
-/* 9: Attribute ASendReassignExpr::_prop_signature */
-/* 10: Attribute ASendReassignExpr::_arguments */
-/* 11: Attribute ASendReassignExpr::_assign_method */
-/* 12: Attribute ASendReassignExpr::_n_assign_op */
-/* 13: Attribute ASendReassignExpr::_n_value */
-/* 14: Attribute ASendReassignExpr::_prop */
-/* 15: Attribute ASendReassignExpr::_return_type */
-/* 16: Attribute ASendReassignExpr::_n_expr */
-/* 17: Attribute ASendReassignExpr::_n_closure_defs */
-val_t NEW_ASendReassignExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 18);
-  obj->vft = (classtable_elt_t*)VFT_ASendReassignExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_parser_nodes___ASendExpr____n_expr(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___ASendExpr____n_closure_defs(obj) =  NIT_NULL /*null*/;
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  ATTR_parser_nodes___AReassignFormExpr____n_assign_op(obj) =  NIT_NULL /*null*/;
-  ATTR_parser_nodes___AReassignFormExpr____n_value(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ASendReassignExpr(val_t self, char *from) {
-}
-val_t NEW_ASendReassignExpr_parser_nodes___PNode___init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASendReassignExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ASendReassignExpr(self, "parser_nodes::PNode::init for ASendReassignExpr");
-  return self;
-}
-val_t NEW_ASendReassignExpr_parser_prod___ASendExpr___empty_init() {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASendReassignExpr();
-  parser_prod___ASendExpr___empty_init(self, init_table);
-  CHECKNEW_ASendReassignExpr(self, "parser_prod::ASendExpr::empty_init for ASendReassignExpr");
-  return self;
-}
-val_t NEW_ASendReassignExpr_parser_prod___ASendExpr___init_asendexpr(val_t p0) {
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_ASendReassignExpr();
-  parser_prod___ASendExpr___init_asendexpr(self, p0, init_table);
-  CHECKNEW_ASendReassignExpr(self, "parser_prod::ASendExpr::init_asendexpr for ASendReassignExpr");
-  return self;
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
+  {(bigint) math___Object___atan2},
+  {(bigint) math___Object___pi},
+  {(bigint) math___Object___srand_from},
+  {(bigint) math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: RtaVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode_tools___ICodeVisitor___current_icode},
+  {(bigint) rta_analysis___RtaVisitor___visit_icode},
+  {(bigint) icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 53: RtaVisitor < RtaVisitor: superclass init_table position */},
+  {(bigint) rta_analysis___RtaVisitor___builder},
+  {(bigint) icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) rta_analysis___RtaVisitor___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute RtaVisitor::_current_icode */
+/* 3: Attribute RtaVisitor::_builder */
+void INIT_ATTRIBUTES__RtaVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__RtaVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_tools.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ATypeCheckExpr[86] = {
-  {(bigint) 4103 /* 0: Identity */},
-  {(bigint) 3 /* 1: ATypeCheckExpr < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: ATypeCheckExpr < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: ATypeCheckExpr < Prod: superclass typecheck marker */},
-  {(bigint) 4103 /* 4: ATypeCheckExpr < ATypeCheckExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 5: ATypeCheckExpr < PExpr: superclass typecheck marker */},
+val_t NEW_RtaVisitor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_RtaVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_RtaVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_RtaVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_rta_analysis___RtaVisitor____builder(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_builder", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_RtaVisitor_rta_analysis___RtaVisitor___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 237;
+  fra.me.meth = LOCATE_NEW_RtaVisitor_rta_analysis___RtaVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//rta_analysis.nit:237 */
+  fra.me.REG[1] = NEW_RtaVisitor();
+  INIT_ATTRIBUTES__RtaVisitor(fra.me.REG[1]);
+  rta_analysis___RtaVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_RtaVisitor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ReachableAsInitAnalysis[48] = {
+  {(bigint) 79 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReachableAsInitAnalysis < Object: superclass typecheck marker */},
+  {(bigint) 79 /* 3: ReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107657,14 +142294,12 @@ const classtable_elt_t VFT_ATypeCheckExpr[86] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ATypeCheckExpr < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ReachableAsInitAnalysis < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -107672,7 +142307,6 @@ const classtable_elt_t VFT_ATypeCheckExpr[86] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -107680,88 +142314,78 @@ const classtable_elt_t VFT_ATypeCheckExpr[86] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: ATypeCheckExpr < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: ATypeCheckExpr < Prod: superclass init_table position */},
-  {(bigint) 4 /* 70: ATypeCheckExpr < ATypeCheckExpr: superclass init_table position */},
-  {(bigint) typing___ATypeCheckExpr___check_expr_cast},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___PExpr___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: ATypeCheckExpr < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass init_table position */},
+  {(bigint) reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init},
+  {(bigint) reachable_as_init___ReachableAsInitAnalysis___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute ATypeCheckExpr::_parent */
-/* 2: Attribute ATypeCheckExpr::_first_token */
-/* 3: Attribute ATypeCheckExpr::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute ATypeCheckExpr::_is_typed */
-/* 6: Attribute ATypeCheckExpr::_stype */
-/* 7: Attribute ATypeCheckExpr::_if_true_variable_ctx */
-/* 8: Attribute ATypeCheckExpr::_if_false_variable_ctx */
-val_t NEW_ATypeCheckExpr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_ATypeCheckExpr;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ATypeCheckExpr(val_t self, char *from) {
-}
-val_t NEW_ATypeCheckExpr_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_ATypeCheckExpr();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_ATypeCheckExpr(self, "parser_nodes::PNode::init for ATypeCheckExpr");
-  return self;
+/* 1: Object_id */
+void INIT_ATTRIBUTES__ReachableAsInitAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReachableAsInitAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_SrcModuleLoader[54] = {
-  {(bigint) 219 /* 0: Identity */},
-  {(bigint) 3 /* 1: SrcModuleLoader < Object: superclass typecheck marker */},
-  {(bigint) 83 /* 2: SrcModuleLoader < ModuleLoader: superclass typecheck marker */},
-  {(bigint) 219 /* 3: SrcModuleLoader < SrcModuleLoader: superclass typecheck marker */},
+val_t NEW_ReachableAsInitAnalysis(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_ReachableAsInitAnalysis;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReachableAsInitAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReachableAsInitAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReachableAsInitAnalysis_reachable_as_init___ReachableAsInitAnalysis___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ReachableAsInitAnalysis_reachable_as_init___ReachableAsInitAnalysis___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_ReachableAsInitAnalysis();
+  INIT_ATTRIBUTES__ReachableAsInitAnalysis(fra.me.REG[0]);
+  reachable_as_init___ReachableAsInitAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_ReachableAsInitAnalysis(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_DefaultReachableAsInitAnalysis[50] = {
+  {(bigint) 2079 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: DefaultReachableAsInitAnalysis < Object: superclass typecheck marker */},
+  {(bigint) 79 /* 3: DefaultReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass typecheck marker */},
+  {(bigint) 2079 /* 4: DefaultReachableAsInitAnalysis < DefaultReachableAsInitAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107774,14 +142398,9 @@ const classtable_elt_t VFT_SrcModuleLoader[54] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: SrcModuleLoader < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: DefaultReachableAsInitAnalysis < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -107789,7 +142408,6 @@ const classtable_elt_t VFT_SrcModuleLoader[54] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -107797,48 +142415,80 @@ const classtable_elt_t VFT_SrcModuleLoader[54] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: SrcModuleLoader < ModuleLoader: superclass init_table position */},
-  {(bigint) syntax___SrcModuleLoader___file_type},
-  {(bigint) mmloader___ModuleLoader___try_to_load_dir},
-  {(bigint) mmloader___ModuleLoader___can_handle},
-  {(bigint) mmloader___ModuleLoader___load_and_process_module},
-  {(bigint) mmloader___ModuleLoader___load_module},
-  {(bigint) syntax___SrcModuleLoader___parse_file},
-  {(bigint) syntax___SrcModuleLoader___process_metamodel},
-  {(bigint) mmloader___ModuleLoader___init},
-  {(bigint) 2 /* 52: SrcModuleLoader < SrcModuleLoader: superclass init_table position */},
-  {(bigint) syntax___SrcModuleLoader___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: DefaultReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass init_table position */},
+  {(bigint) reachable_as_init___DefaultReachableAsInitAnalysis___is_method_reachable_as_init},
+  {(bigint) reachable_as_init___ReachableAsInitAnalysis___init},
+  {(bigint) 2 /* 48: DefaultReachableAsInitAnalysis < DefaultReachableAsInitAnalysis: superclass init_table position */},
+  {(bigint) reachable_as_init___DefaultReachableAsInitAnalysis___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_SrcModuleLoader(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_SrcModuleLoader;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_SrcModuleLoader(val_t self, char *from) {
-}
-val_t NEW_SrcModuleLoader_syntax___SrcModuleLoader___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_SrcModuleLoader();
-  syntax___SrcModuleLoader___init(self, init_table);
-  CHECKNEW_SrcModuleLoader(self, "syntax::SrcModuleLoader::init for SrcModuleLoader");
-  return self;
+/* 1: Object_id */
+void INIT_ATTRIBUTES__DefaultReachableAsInitAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__DefaultReachableAsInitAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_AbstractCompiler[92] = {
-  {(bigint) 3995 /* 0: Identity */},
-  {(bigint) 3 /* 1: AbstractCompiler < Object: superclass typecheck marker */},
-  {(bigint) 123 /* 2: AbstractCompiler < MMContext: superclass typecheck marker */},
-  {(bigint) 203 /* 3: AbstractCompiler < ToolContext: superclass typecheck marker */},
-  {(bigint) 3995 /* 4: AbstractCompiler < AbstractCompiler: superclass typecheck marker */},
+val_t NEW_DefaultReachableAsInitAnalysis(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_DefaultReachableAsInitAnalysis;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_DefaultReachableAsInitAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_DefaultReachableAsInitAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_DefaultReachableAsInitAnalysis_reachable_as_init___DefaultReachableAsInitAnalysis___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 60;
+  fra.me.meth = LOCATE_NEW_DefaultReachableAsInitAnalysis_reachable_as_init___DefaultReachableAsInitAnalysis___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./analysis//reachable_as_init.nit:60 */
+  fra.me.REG[0] = NEW_DefaultReachableAsInitAnalysis();
+  INIT_ATTRIBUTES__DefaultReachableAsInitAnalysis(fra.me.REG[0]);
+  reachable_as_init___DefaultReachableAsInitAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_DefaultReachableAsInitAnalysis(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_ReachableAsInitBuilder[50] = {
+  {(bigint) 75 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReachableAsInitBuilder < Object: superclass typecheck marker */},
+  {(bigint) 75 /* 3: ReachableAsInitBuilder < ReachableAsInitBuilder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107850,14 +142500,11 @@ const classtable_elt_t VFT_AbstractCompiler[92] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AbstractCompiler < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ReachableAsInitBuilder < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -107865,7 +142512,6 @@ const classtable_elt_t VFT_AbstractCompiler[92] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -107873,279 +142519,104 @@ const classtable_elt_t VFT_AbstractCompiler[92] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: AbstractCompiler < MMContext: superclass init_table position */},
-  {(bigint) abstractmetamodel___MMContext___init},
-  {(bigint) abstractmetamodel___MMContext___module_hierarchy},
-  {(bigint) abstractmetamodel___MMContext___class_hierarchy},
-  {(bigint) abstractmetamodel___MMContext___modules},
-  {(bigint) abstractmetamodel___MMContext___add_module},
-  {(bigint) abstractmetamodel___MMContext___add_global_class},
-  {(bigint) abstractmetamodel___MMContext___add_local_class},
-  {(bigint) compiling_base___ToolContext___global},
-  {(bigint) compiling_base___ToolContext___global__eq},
-  {(bigint) compiling_base___ToolContext___compdir},
-  {(bigint) compiling_base___ToolContext___compdir__eq},
-  {(bigint) compiling_base___ToolContext___clibdir},
-  {(bigint) compiling_base___ToolContext___clibdir__eq},
-  {(bigint) compiling_base___ToolContext___bindir},
-  {(bigint) compiling_base___ToolContext___bindir__eq},
-  {(bigint) compiling_base___ToolContext___output_file},
-  {(bigint) compiling_base___ToolContext___output_file__eq},
-  {(bigint) compiling_base___ToolContext___boost},
-  {(bigint) compiling_base___ToolContext___boost__eq},
-  {(bigint) compiling_base___ToolContext___no_cc},
-  {(bigint) compiling_base___ToolContext___no_cc__eq},
-  {(bigint) compiling_base___ToolContext___ext_prefix},
-  {(bigint) compiling_base___ToolContext___ext_prefix__eq},
-  {(bigint) 2 /* 67: AbstractCompiler < ToolContext: superclass init_table position */},
-  {(bigint) mmloader___ToolContext___error_count},
-  {(bigint) mmloader___ToolContext___warning_count},
-  {(bigint) mmloader___ToolContext___error},
-  {(bigint) mmloader___ToolContext___warning},
-  {(bigint) mmloader___ToolContext___paths},
-  {(bigint) mmloader___ToolContext___option_context},
-  {(bigint) mmloader___ToolContext___opt_warn},
-  {(bigint) mmloader___ToolContext___opt_path},
-  {(bigint) mmloader___ToolContext___opt_log},
-  {(bigint) mmloader___ToolContext___opt_only_metamodel},
-  {(bigint) mmloader___ToolContext___opt_only_parse},
-  {(bigint) mmloader___ToolContext___opt_help},
-  {(bigint) mmloader___ToolContext___init},
-  {(bigint) mmloader___ToolContext___process_options},
-  {(bigint) mmloader___ToolContext___try_to_load},
-  {(bigint) mmloader___ToolContext___get_module_from_filename},
-  {(bigint) mmloader___ToolContext___get_module},
-  {(bigint) mmloader___ToolContext___directory_for},
-  {(bigint) mmloader___ToolContext___register_loader},
-  {(bigint) 3 /* 87: AbstractCompiler < AbstractCompiler: superclass init_table position */},
-  {(bigint) abstracttool___AbstractCompiler___init},
-  {(bigint) abstracttool___AbstractCompiler___exec_cmd_line},
-  {(bigint) abstracttool___AbstractCompiler___perform_work},
-  {(bigint) abstracttool___AbstractCompiler___dump_context_info},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ReachableAsInitBuilder < ReachableAsInitBuilder: superclass init_table position */},
+  {(bigint) reachable_as_init_impl___ReachableAsInitBuilder___context},
+  {(bigint) reachable_as_init_impl___ReachableAsInitBuilder___program},
+  {(bigint) reachable_as_init_impl___ReachableAsInitBuilder___work},
+  {(bigint) reachable_as_init_impl___ReachableAsInitBuilder___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute AbstractCompiler::_module_hierarchy */
-/* 2: Attribute AbstractCompiler::_class_hierarchy */
-/* 3: Attribute AbstractCompiler::_global_classes */
-/* 4: Attribute AbstractCompiler::_modules */
-/* 5: Attribute AbstractCompiler::_global */
-/* 6: Attribute AbstractCompiler::_compdir */
-/* 7: Attribute AbstractCompiler::_clibdir */
-/* 8: Attribute AbstractCompiler::_bindir */
-/* 9: Attribute AbstractCompiler::_output_file */
-/* 10: Attribute AbstractCompiler::_boost */
-/* 11: Attribute AbstractCompiler::_no_cc */
-/* 12: Attribute AbstractCompiler::_ext_prefix */
-/* 13: Attribute AbstractCompiler::_error_count */
-/* 14: Attribute AbstractCompiler::_warning_count */
-/* 15: Attribute AbstractCompiler::_paths */
-/* 16: Attribute AbstractCompiler::_loaders */
-/* 17: Attribute AbstractCompiler::_option_context */
-/* 18: Attribute AbstractCompiler::_opt_warn */
-/* 19: Attribute AbstractCompiler::_opt_path */
-/* 20: Attribute AbstractCompiler::_opt_log */
-/* 21: Attribute AbstractCompiler::_opt_only_metamodel */
-/* 22: Attribute AbstractCompiler::_opt_only_parse */
-/* 23: Attribute AbstractCompiler::_opt_help */
-/* 24: Attribute AbstractCompiler::_processing_modules */
-/* 25: Attribute AbstractCompiler::_path_dirs */
-val_t NEW_AbstractCompiler(void) {
-  static val_t once_value_51 = NIT_NULL; /* Once value for string variable[1]*/
-  static val_t once_value_52 = NIT_NULL; /* Once value for string variable[3]*/
-  static val_t once_value_53 = NIT_NULL; /* Once value for string variable[4]*/
-  static val_t once_value_54 = NIT_NULL; /* Once value for string variable[3]*/
-  static val_t once_value_55 = NIT_NULL; /* Once value for string variable[5]*/
-  static val_t once_value_56 = NIT_NULL; /* Once value for string variable[6]*/
-  static val_t once_value_57 = NIT_NULL; /* Once value for string variable[5]*/
-  static val_t once_value_58 = NIT_NULL; /* Once value for string variable[7]*/
-  static val_t once_value_59 = NIT_NULL; /* Once value for string variable[7]*/
-  static val_t once_value_60 = NIT_NULL; /* Once value for string variable[9]*/
-  static val_t once_value_61 = NIT_NULL; /* Once value for string variable[9]*/
-  static val_t once_value_62 = NIT_NULL; /* Once value for string variable[11]*/
-  static val_t once_value_63 = NIT_NULL; /* Once value for string variable[11]*/
-  static val_t once_value_64 = NIT_NULL; /* Once value for string variable[13]*/
-  static val_t once_value_65 = NIT_NULL; /* Once value for string variable[14]*/
-  static val_t once_value_66 = NIT_NULL; /* Once value for string variable[15]*/
-  val_t variable[16];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 26);
-  obj->vft = (classtable_elt_t*)VFT_AbstractCompiler;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_abstractmetamodel___MMContext____module_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMModule]*/;
-  ATTR_abstractmetamodel___MMContext____class_hierarchy(obj) = NEW_PartialOrder_partial_order___PartialOrder___init() /*new PartialOrder[MMLocalClass]*/;
-  ATTR_abstractmetamodel___MMContext____global_classes(obj) = NEW_Array_array___Array___init() /*new Array[MMGlobalClass]*/;
-  ATTR_abstractmetamodel___MMContext____modules(obj) = NEW_Array_array___Array___init() /*new Array[MMModule]*/;
-  ATTR_mmloader___ToolContext____error_count(obj) =  TAG_Int(0);
-  ATTR_mmloader___ToolContext____warning_count(obj) =  TAG_Int(0);
-  ATTR_mmloader___ToolContext____loaders(obj) = NEW_Array_array___Array___init() /*new Array[ModuleLoader]*/;
-  ATTR_mmloader___ToolContext____option_context(obj) = NEW_OptionContext_opts___OptionContext___init() /*new OptionContext*/;
-  /* Register variable[1]: Once String constant */
-  if (once_value_51 != NIT_NULL) variable[1] = once_value_51;
-  else {
-    variable[1] = NEW_String_string___String___with_native(BOX_NativeString("Show warnings"), TAG_Int(13)) /*new String*/;
-    once_value_51 = variable[1];
-  }
-  /* Register variable[1]: Result */
-  variable[2] = NEW_Array_array___Array___with_capacity(TAG_Int(2)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[3]: Once String constant */
-  if (once_value_52 != NIT_NULL) variable[3] = once_value_52;
-  else {
-    variable[3] = NEW_String_string___String___with_native(BOX_NativeString("-W"), TAG_Int(2)) /*new String*/;
-    once_value_52 = variable[3];
-  }
-  /* Register variable[3]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[3]) /*AbstractArray::add*/;
-  /* Register variable[4]: Once String constant */
-  if (once_value_53 != NIT_NULL) variable[4] = once_value_53;
-  else {
-    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("--warn"), TAG_Int(6)) /*new String*/;
-    once_value_53 = variable[4];
-  }
-  /* Register variable[4]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[2])(variable[2], variable[4]) /*AbstractArray::add*/;
-  /* Register variable[2]: Result */
-  ATTR_mmloader___ToolContext____opt_warn(obj) = NEW_OptionCount_opts___OptionCount___init(variable[1], variable[2]) /*new OptionCount*/;
-  /* Register variable[3]: Once String constant */
-  if (once_value_54 != NIT_NULL) variable[3] = once_value_54;
-  else {
-    variable[3] = NEW_String_string___String___with_native(BOX_NativeString("Set include path for loaders (may be used more than once)"), TAG_Int(57)) /*new String*/;
-    once_value_54 = variable[3];
-  }
-  /* Register variable[3]: Result */
-  variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(2)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[5]: Once String constant */
-  if (once_value_55 != NIT_NULL) variable[5] = once_value_55;
-  else {
-    variable[5] = NEW_String_string___String___with_native(BOX_NativeString("-I"), TAG_Int(2)) /*new String*/;
-    once_value_55 = variable[5];
-  }
-  /* Register variable[5]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
-  /* Register variable[6]: Once String constant */
-  if (once_value_56 != NIT_NULL) variable[6] = once_value_56;
-  else {
-    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("--path"), TAG_Int(6)) /*new String*/;
-    once_value_56 = variable[6];
-  }
-  /* Register variable[6]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[6]) /*AbstractArray::add*/;
-  /* Register variable[4]: Result */
-  ATTR_mmloader___ToolContext____opt_path(obj) = NEW_OptionArray_opts___OptionArray___init(variable[3], variable[4]) /*new OptionArray*/;
-  /* Register variable[5]: Once String constant */
-  if (once_value_57 != NIT_NULL) variable[5] = once_value_57;
-  else {
-    variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Generate various log files"), TAG_Int(26)) /*new String*/;
-    once_value_57 = variable[5];
-  }
-  /* Register variable[5]: Result */
-  variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[7]: Once String constant */
-  if (once_value_58 != NIT_NULL) variable[7] = once_value_58;
-  else {
-    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("--log"), TAG_Int(5)) /*new String*/;
-    once_value_58 = variable[7];
-  }
-  /* Register variable[7]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
-  /* Register variable[6]: Result */
-  ATTR_mmloader___ToolContext____opt_log(obj) = NEW_OptionBool_opts___OptionBool___init(variable[5], variable[6]) /*new OptionBool*/;
-  /* Register variable[7]: Once String constant */
-  if (once_value_59 != NIT_NULL) variable[7] = once_value_59;
-  else {
-    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Stop after meta-model processing"), TAG_Int(32)) /*new String*/;
-    once_value_59 = variable[7];
-  }
-  /* Register variable[7]: Result */
-  variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[9]: Once String constant */
-  if (once_value_60 != NIT_NULL) variable[9] = once_value_60;
-  else {
-    variable[9] = NEW_String_string___String___with_native(BOX_NativeString("--only-metamodel"), TAG_Int(16)) /*new String*/;
-    once_value_60 = variable[9];
-  }
-  /* Register variable[9]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
-  /* Register variable[8]: Result */
-  ATTR_mmloader___ToolContext____opt_only_metamodel(obj) = NEW_OptionBool_opts___OptionBool___init(variable[7], variable[8]) /*new OptionBool*/;
-  /* Register variable[9]: Once String constant */
-  if (once_value_61 != NIT_NULL) variable[9] = once_value_61;
-  else {
-    variable[9] = NEW_String_string___String___with_native(BOX_NativeString("Only proceed to parse step of loaders"), TAG_Int(37)) /*new String*/;
-    once_value_61 = variable[9];
-  }
-  /* Register variable[9]: Result */
-  variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[11]: Once String constant */
-  if (once_value_62 != NIT_NULL) variable[11] = once_value_62;
-  else {
-    variable[11] = NEW_String_string___String___with_native(BOX_NativeString("--only-parse"), TAG_Int(12)) /*new String*/;
-    once_value_62 = variable[11];
-  }
-  /* Register variable[11]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
-  /* Register variable[10]: Result */
-  ATTR_mmloader___ToolContext____opt_only_parse(obj) = NEW_OptionBool_opts___OptionBool___init(variable[9], variable[10]) /*new OptionBool*/;
-  /* Register variable[11]: Once String constant */
-  if (once_value_63 != NIT_NULL) variable[11] = once_value_63;
-  else {
-    variable[11] = NEW_String_string___String___with_native(BOX_NativeString("Show Help (This screen)"), TAG_Int(23)) /*new String*/;
-    once_value_63 = variable[11];
-  }
-  /* Register variable[11]: Result */
-  variable[12] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Literal array*/;
-  /* Register variable[13]: Once String constant */
-  if (once_value_64 != NIT_NULL) variable[13] = once_value_64;
-  else {
-    variable[13] = NEW_String_string___String___with_native(BOX_NativeString("-h"), TAG_Int(2)) /*new String*/;
-    once_value_64 = variable[13];
-  }
-  /* Register variable[13]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
-  /* Register variable[14]: Once String constant */
-  if (once_value_65 != NIT_NULL) variable[14] = once_value_65;
-  else {
-    variable[14] = NEW_String_string___String___with_native(BOX_NativeString("-?"), TAG_Int(2)) /*new String*/;
-    once_value_65 = variable[14];
-  }
-  /* Register variable[14]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[14]) /*AbstractArray::add*/;
-  /* Register variable[15]: Once String constant */
-  if (once_value_66 != NIT_NULL) variable[15] = once_value_66;
-  else {
-    variable[15] = NEW_String_string___String___with_native(BOX_NativeString("--help"), TAG_Int(6)) /*new String*/;
-    once_value_66 = variable[15];
-  }
-  /* Register variable[15]: Result */
-  CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[15]) /*AbstractArray::add*/;
-  /* Register variable[12]: Result */
-  ATTR_mmloader___ToolContext____opt_help(obj) = NEW_OptionBool_opts___OptionBool___init(variable[11], variable[12]) /*new OptionBool*/;
-  ATTR_mmloader___ToolContext____processing_modules(obj) = NEW_HashSet_hash___HashSet___init() /*new HashSet[Symbol]*/;
-  ATTR_mmloader___ToolContext____path_dirs(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[String, MMDirectory]*/;
-  ATTR_compiling_base___ToolContext____global(obj) =  TAG_Bool(false);
-  ATTR_compiling_base___ToolContext____boost(obj) =  TAG_Bool(false);
-  ATTR_compiling_base___ToolContext____no_cc(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AbstractCompiler(val_t self, char *from) {
-}
-val_t NEW_AbstractCompiler_abstracttool___AbstractCompiler___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_AbstractCompiler();
-  abstracttool___AbstractCompiler___init(self, init_table);
-  CHECKNEW_AbstractCompiler(self, "abstracttool::AbstractCompiler::init for AbstractCompiler");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute ReachableAsInitBuilder::_context */
+/* 3: Attribute ReachableAsInitBuilder::_program */
+void INIT_ATTRIBUTES__ReachableAsInitBuilder(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReachableAsInitBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//reachable_as_init_impl.nit:24 */
+  fra.me.REG[1] = NEW_ReachableAsInitAnalysisImpl_reachable_as_init_impl___ReachableAsInitAnalysisImpl___init();
+  ATTR_reachable_as_init_impl___ReachableAsInitBuilder____context(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_CompilerVisitor[68] = {
-  {(bigint) 163 /* 0: Identity */},
-  {(bigint) 3 /* 1: CompilerVisitor < Object: superclass typecheck marker */},
-  {(bigint) 163 /* 2: CompilerVisitor < CompilerVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ReachableAsInitBuilder(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_ReachableAsInitBuilder;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReachableAsInitBuilder(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReachableAsInitBuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_reachable_as_init_impl___ReachableAsInitBuilder____context(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_reachable_as_init_impl___ReachableAsInitBuilder____program(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_program", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReachableAsInitBuilder_reachable_as_init_impl___ReachableAsInitBuilder___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 36;
+  fra.me.meth = LOCATE_NEW_ReachableAsInitBuilder_reachable_as_init_impl___ReachableAsInitBuilder___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//reachable_as_init_impl.nit:36 */
+  fra.me.REG[1] = NEW_ReachableAsInitBuilder();
+  INIT_ATTRIBUTES__ReachableAsInitBuilder(fra.me.REG[1]);
+  reachable_as_init_impl___ReachableAsInitBuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_ReachableAsInitBuilder(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ReachableAsInitAnalysisImpl[50] = {
+  {(bigint) 1839 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReachableAsInitAnalysisImpl < Object: superclass typecheck marker */},
+  {(bigint) 79 /* 3: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysis: superclass typecheck marker */},
+  {(bigint) 1839 /* 4: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysisImpl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108158,14 +142629,9 @@ const classtable_elt_t VFT_CompilerVisitor[68] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) compiling_base___CompilerVisitor___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: CompilerVisitor < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ReachableAsInitAnalysisImpl < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -108173,7 +142639,6 @@ const classtable_elt_t VFT_CompilerVisitor[68] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -108181,73 +142646,96 @@ const classtable_elt_t VFT_CompilerVisitor[68] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___CompilerVisitor___compile_stmt},
-  {(bigint) compiling_methods___CompilerVisitor___compile_expr},
-  {(bigint) compiling_methods___CompilerVisitor___ensure_var},
-  {(bigint) compiling_methods___CompilerVisitor___add_assignment},
-  {(bigint) compiling_methods___CompilerVisitor___cfc},
-  {(bigint) compiling_methods___CompilerVisitor___cfc__eq},
-  {(bigint) compiling_methods___CompilerVisitor___nmc},
-  {(bigint) compiling_methods___CompilerVisitor___nmc__eq},
-  {(bigint) compiling_methods___CompilerVisitor___out_contexts},
-  {(bigint) compiling_methods___CompilerVisitor___out_contexts__eq},
-  {(bigint) compiling_methods___CompilerVisitor___printf_locate_error},
-  {(bigint) compiling_methods___CompilerVisitor___invoke_super_init_calls_after},
-  {(bigint) 1 /* 55: CompilerVisitor < CompilerVisitor: superclass init_table position */},
-  {(bigint) compiling_base___CompilerVisitor___add_decl},
-  {(bigint) compiling_base___CompilerVisitor___add_instr},
-  {(bigint) compiling_base___CompilerVisitor___new_number},
-  {(bigint) compiling_base___CompilerVisitor___indent},
-  {(bigint) compiling_base___CompilerVisitor___unindent},
-  {(bigint) compiling_base___CompilerVisitor___module},
-  {(bigint) compiling_base___CompilerVisitor___ctx},
-  {(bigint) compiling_base___CompilerVisitor___ctx__eq},
-  {(bigint) compiling_base___CompilerVisitor___indent_level},
-  {(bigint) compiling_base___CompilerVisitor___indent_level__eq},
-  {(bigint) compiling_base___CompilerVisitor___tc},
-  {(bigint) compiling_base___CompilerVisitor___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysis: superclass init_table position */},
+  {(bigint) reachable_as_init_impl___ReachableAsInitAnalysisImpl___is_method_reachable_as_init},
+  {(bigint) reachable_as_init___ReachableAsInitAnalysis___init},
+  {(bigint) 2 /* 48: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysisImpl: superclass init_table position */},
+  {(bigint) reachable_as_init_impl___ReachableAsInitAnalysisImpl___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute CompilerVisitor::_cfc */
-/* 2: Attribute CompilerVisitor::_nmc */
-/* 3: Attribute CompilerVisitor::_out_contexts */
-/* 4: Attribute CompilerVisitor::_number_cpt */
-/* 5: Attribute CompilerVisitor::_module */
-/* 6: Attribute CompilerVisitor::_ctx */
-/* 7: Attribute CompilerVisitor::_indent_level */
-/* 8: Attribute CompilerVisitor::_tc */
-val_t NEW_CompilerVisitor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_CompilerVisitor;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_compiling_base___CompilerVisitor____number_cpt(obj) =  TAG_Int(0);
-  ATTR_compiling_base___CompilerVisitor____ctx(obj) = NEW_CContext_compiling_base___CContext___init() /*new CContext*/;
-  ATTR_compiling_base___CompilerVisitor____indent_level(obj) =  TAG_Int(0);
-  ATTR_compiling_methods___CompilerVisitor____out_contexts(obj) = NEW_Array_array___Array___init() /*new Array[CContext]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_CompilerVisitor(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute ReachableAsInitAnalysisImpl::_methods */
+void INIT_ATTRIBUTES__ReachableAsInitAnalysisImpl(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReachableAsInitAnalysisImpl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//reachable_as_init_impl.nit:45 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_CompilerVisitor_compiling_base___CompilerVisitor___init(val_t p0, val_t p1) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_CompilerVisitor();
-  compiling_base___CompilerVisitor___init(self, p0, p1, init_table);
-  CHECKNEW_CompilerVisitor(self, "compiling_base::CompilerVisitor::init for CompilerVisitor");
-  return self;
-}
-const classtable_elt_t VFT_CContext[49] = {
-  {(bigint) 183 /* 0: Identity */},
-  {(bigint) 3 /* 1: CContext < Object: superclass typecheck marker */},
-  {(bigint) 183 /* 2: CContext < CContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_ReachableAsInitAnalysisImpl(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ReachableAsInitAnalysisImpl;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReachableAsInitAnalysisImpl(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReachableAsInitAnalysisImpl;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_reachable_as_init_impl___ReachableAsInitAnalysisImpl____methods(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_methods", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReachableAsInitAnalysisImpl_reachable_as_init_impl___ReachableAsInitAnalysisImpl___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 52;
+  fra.me.meth = LOCATE_NEW_ReachableAsInitAnalysisImpl_reachable_as_init_impl___ReachableAsInitAnalysisImpl___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./analysis//reachable_as_init_impl.nit:52 */
+  fra.me.REG[0] = NEW_ReachableAsInitAnalysisImpl();
+  INIT_ATTRIBUTES__ReachableAsInitAnalysisImpl(fra.me.REG[0]);
+  reachable_as_init_impl___ReachableAsInitAnalysisImpl___init(fra.me.REG[0], init_table);
+  CHECKNEW_ReachableAsInitAnalysisImpl(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_RAIVisitor[57] = {
+  {(bigint) 1855 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: RAIVisitor < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 3: RAIVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 1855 /* 4: RAIVisitor < RAIVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108260,14 +142748,9 @@ const classtable_elt_t VFT_CContext[49] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: CContext < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: RAIVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -108275,7 +142758,6 @@ const classtable_elt_t VFT_CContext[49] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -108283,45 +142765,105 @@ const classtable_elt_t VFT_CContext[49] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: CContext < CContext: superclass init_table position */},
-  {(bigint) compiling_base___CContext___decls},
-  {(bigint) compiling_base___CContext___instrs},
-  {(bigint) compiling_base___CContext___append},
-  {(bigint) compiling_base___CContext___merge},
-  {(bigint) compiling_base___CContext___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: RAIVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode_tools___ICodeVisitor___current_icode},
+  {(bigint) reachable_as_init_impl___RAIVisitor___visit_icode},
+  {(bigint) icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 53: RAIVisitor < RAIVisitor: superclass init_table position */},
+  {(bigint) reachable_as_init_impl___RAIVisitor___builder},
+  {(bigint) icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) reachable_as_init_impl___RAIVisitor___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute CContext::_decls */
-/* 2: Attribute CContext::_instrs */
-val_t NEW_CContext(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_CContext;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_compiling_base___CContext____decls(obj) = NEW_Array_array___Array___init() /*new Array[String]*/;
-  ATTR_compiling_base___CContext____instrs(obj) = NEW_Array_array___Array___init() /*new Array[String]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_CContext(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute RAIVisitor::_current_icode */
+/* 3: Attribute RAIVisitor::_builder */
+void INIT_ATTRIBUTES__RAIVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__RAIVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_tools.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_CContext_compiling_base___CContext___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_CContext();
-  compiling_base___CContext___init(self, init_table);
-  CHECKNEW_CContext(self, "compiling_base::CContext::init for CContext");
-  return self;
-}
-const classtable_elt_t VFT_PrimitiveInfo[48] = {
-  {(bigint) 47 /* 0: Identity */},
-  {(bigint) 3 /* 1: PrimitiveInfo < Object: superclass typecheck marker */},
-  {(bigint) 47 /* 2: PrimitiveInfo < PrimitiveInfo: superclass typecheck marker */},
+val_t NEW_RAIVisitor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_RAIVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_RAIVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_RAIVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_reachable_as_init_impl___RAIVisitor____builder(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_builder", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_RAIVisitor_reachable_as_init_impl___RAIVisitor___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 73;
+  fra.me.meth = LOCATE_NEW_RAIVisitor_reachable_as_init_impl___RAIVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//reachable_as_init_impl.nit:73 */
+  fra.me.REG[1] = NEW_RAIVisitor();
+  INIT_ATTRIBUTES__RAIVisitor(fra.me.REG[1]);
+  reachable_as_init_impl___RAIVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_RAIVisitor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ReachableFromInitMethodAnalysis[49] = {
+  {(bigint) 71 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ReachableFromInitMethodAnalysis < Object: superclass typecheck marker */},
+  {(bigint) 71 /* 3: ReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108335,14 +142877,9 @@ const classtable_elt_t VFT_PrimitiveInfo[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: PrimitiveInfo < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ReachableFromInitMethodAnalysis < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -108350,7 +142887,6 @@ const classtable_elt_t VFT_PrimitiveInfo[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -108358,44 +142894,79 @@ const classtable_elt_t VFT_PrimitiveInfo[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: PrimitiveInfo < PrimitiveInfo: superclass init_table position */},
-  {(bigint) compiling_base___PrimitiveInfo___name},
-  {(bigint) compiling_base___PrimitiveInfo___tagged},
-  {(bigint) compiling_base___PrimitiveInfo___cname},
-  {(bigint) compiling_base___PrimitiveInfo___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass init_table position */},
+  {(bigint) reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init},
+  {(bigint) reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_method_reachable_from_init},
+  {(bigint) reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute PrimitiveInfo::_name */
-/* 2: Attribute PrimitiveInfo::_tagged */
-/* 3: Attribute PrimitiveInfo::_cname */
-val_t NEW_PrimitiveInfo(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_PrimitiveInfo;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_PrimitiveInfo(val_t self, char *from) {
+/* 1: Object_id */
+void INIT_ATTRIBUTES__ReachableFromInitMethodAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ReachableFromInitMethodAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_PrimitiveInfo_compiling_base___PrimitiveInfo___init(val_t p0, val_t p1, val_t p2) {
+val_t NEW_ReachableFromInitMethodAnalysis(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_ReachableFromInitMethodAnalysis;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ReachableFromInitMethodAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ReachableFromInitMethodAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ReachableFromInitMethodAnalysis_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_PrimitiveInfo();
-  compiling_base___PrimitiveInfo___init(self, p0, p1, p2, init_table);
-  CHECKNEW_PrimitiveInfo(self, "compiling_base::PrimitiveInfo::init for PrimitiveInfo");
-  return self;
-}
-const classtable_elt_t VFT_CFunctionContext[57] = {
-  {(bigint) 179 /* 0: Identity */},
-  {(bigint) 3 /* 1: CFunctionContext < Object: superclass typecheck marker */},
-  {(bigint) 179 /* 2: CFunctionContext < CFunctionContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ReachableFromInitMethodAnalysis_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_ReachableFromInitMethodAnalysis();
+  INIT_ATTRIBUTES__ReachableFromInitMethodAnalysis(fra.me.REG[0]);
+  reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_ReachableFromInitMethodAnalysis(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_DefaultReachableFromInitMethodAnalysis[51] = {
+  {(bigint) 2075 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: DefaultReachableFromInitMethodAnalysis < Object: superclass typecheck marker */},
+  {(bigint) 71 /* 3: DefaultReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass typecheck marker */},
+  {(bigint) 2075 /* 4: DefaultReachableFromInitMethodAnalysis < DefaultReachableFromInitMethodAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108408,14 +142979,9 @@ const classtable_elt_t VFT_CFunctionContext[57] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: CFunctionContext < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: DefaultReachableFromInitMethodAnalysis < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -108423,7 +142989,6 @@ const classtable_elt_t VFT_CFunctionContext[57] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -108431,60 +142996,81 @@ const classtable_elt_t VFT_CFunctionContext[57] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: CFunctionContext < CFunctionContext: superclass init_table position */},
-  {(bigint) compiling_methods___CFunctionContext___visitor},
-  {(bigint) compiling_methods___CFunctionContext___closure},
-  {(bigint) compiling_methods___CFunctionContext___closure__eq},
-  {(bigint) compiling_methods___CFunctionContext___varname},
-  {(bigint) compiling_methods___CFunctionContext___get_var},
-  {(bigint) compiling_methods___CFunctionContext___register_variable},
-  {(bigint) compiling_methods___CFunctionContext___register_closurevariable},
-  {(bigint) compiling_methods___CFunctionContext___variable},
-  {(bigint) compiling_methods___CFunctionContext___closure_variable},
-  {(bigint) compiling_methods___CFunctionContext___is_valid_variable},
-  {(bigint) compiling_methods___CFunctionContext___free_var},
-  {(bigint) compiling_methods___CFunctionContext___generate_var_decls},
-  {(bigint) compiling_methods___CFunctionContext___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: DefaultReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass init_table position */},
+  {(bigint) reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init},
+  {(bigint) reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_method_reachable_from_init},
+  {(bigint) reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init},
+  {(bigint) 2 /* 49: DefaultReachableFromInitMethodAnalysis < DefaultReachableFromInitMethodAnalysis: superclass init_table position */},
+  {(bigint) reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute CFunctionContext::_visitor */
-/* 2: Attribute CFunctionContext::_variable_index */
-/* 3: Attribute CFunctionContext::_variable_index_max */
-/* 4: Attribute CFunctionContext::_varindexes */
-/* 5: Attribute CFunctionContext::_closure */
-/* 6: Attribute CFunctionContext::_closurevariable_index */
-val_t NEW_CFunctionContext(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
-  obj->vft = (classtable_elt_t*)VFT_CFunctionContext;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_compiling_methods___CFunctionContext____variable_index(obj) =  TAG_Int(0);
-  ATTR_compiling_methods___CFunctionContext____variable_index_max(obj) =  TAG_Int(0);
-  ATTR_compiling_methods___CFunctionContext____varindexes(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[Variable, Int]*/;
-  ATTR_compiling_methods___CFunctionContext____closure(obj) =  NIT_NULL /*null*/;
-  ATTR_compiling_methods___CFunctionContext____closurevariable_index(obj) =  TAG_Int(0);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_CFunctionContext(val_t self, char *from) {
-}
-val_t NEW_CFunctionContext_compiling_methods___CFunctionContext___init(val_t p0) {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_CFunctionContext();
-  compiling_methods___CFunctionContext___init(self, p0, init_table);
-  CHECKNEW_CFunctionContext(self, "compiling_methods::CFunctionContext::init for CFunctionContext");
-  return self;
+/* 1: Object_id */
+void INIT_ATTRIBUTES__DefaultReachableFromInitMethodAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__DefaultReachableFromInitMethodAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_NitMethodContext[60] = {
-  {(bigint) 75 /* 0: Identity */},
-  {(bigint) 3 /* 1: NitMethodContext < Object: superclass typecheck marker */},
-  {(bigint) 75 /* 2: NitMethodContext < NitMethodContext: superclass typecheck marker */},
+val_t NEW_DefaultReachableFromInitMethodAnalysis(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_DefaultReachableFromInitMethodAnalysis;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_DefaultReachableFromInitMethodAnalysis(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_DefaultReachableFromInitMethodAnalysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_DefaultReachableFromInitMethodAnalysis_reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 68;
+  fra.me.meth = LOCATE_NEW_DefaultReachableFromInitMethodAnalysis_reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./analysis//reachable_from_init_method_analysis.nit:68 */
+  fra.me.REG[0] = NEW_DefaultReachableFromInitMethodAnalysis();
+  INIT_ATTRIBUTES__DefaultReachableFromInitMethodAnalysis(fra.me.REG[0]);
+  reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_DefaultReachableFromInitMethodAnalysis(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_RFIMABuilder[50] = {
+  {(bigint) 83 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: RFIMABuilder < Object: superclass typecheck marker */},
+  {(bigint) 83 /* 3: RFIMABuilder < RFIMABuilder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108498,14 +143084,9 @@ const classtable_elt_t VFT_NitMethodContext[60] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: NitMethodContext < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: RFIMABuilder < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -108513,7 +143094,6 @@ const classtable_elt_t VFT_NitMethodContext[60] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -108521,64 +143101,105 @@ const classtable_elt_t VFT_NitMethodContext[60] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: NitMethodContext < NitMethodContext: superclass init_table position */},
-  {(bigint) compiling_methods___NitMethodContext___method},
-  {(bigint) compiling_methods___NitMethodContext___method_params},
-  {(bigint) compiling_methods___NitMethodContext___method_params__eq},
-  {(bigint) compiling_methods___NitMethodContext___return_label},
-  {(bigint) compiling_methods___NitMethodContext___return_label__eq},
-  {(bigint) compiling_methods___NitMethodContext___break_label},
-  {(bigint) compiling_methods___NitMethodContext___break_label__eq},
-  {(bigint) compiling_methods___NitMethodContext___continue_label},
-  {(bigint) compiling_methods___NitMethodContext___continue_label__eq},
-  {(bigint) compiling_methods___NitMethodContext___return_value},
-  {(bigint) compiling_methods___NitMethodContext___return_value__eq},
-  {(bigint) compiling_methods___NitMethodContext___break_value},
-  {(bigint) compiling_methods___NitMethodContext___break_value__eq},
-  {(bigint) compiling_methods___NitMethodContext___continue_value},
-  {(bigint) compiling_methods___NitMethodContext___continue_value__eq},
-  {(bigint) compiling_methods___NitMethodContext___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: RFIMABuilder < RFIMABuilder: superclass init_table position */},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMABuilder___program},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMABuilder___context},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMABuilder___init},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMABuilder___work},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute NitMethodContext::_method */
-/* 2: Attribute NitMethodContext::_method_params */
-/* 3: Attribute NitMethodContext::_return_label */
-/* 4: Attribute NitMethodContext::_break_label */
-/* 5: Attribute NitMethodContext::_continue_label */
-/* 6: Attribute NitMethodContext::_return_value */
-/* 7: Attribute NitMethodContext::_break_value */
-/* 8: Attribute NitMethodContext::_continue_value */
-val_t NEW_NitMethodContext(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_NitMethodContext;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute RFIMABuilder::_program */
+/* 3: Attribute RFIMABuilder::_context */
+void INIT_ATTRIBUTES__RFIMABuilder(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__RFIMABuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//reachable_from_init_method_analysis_impl.nit:26 */
+  fra.me.REG[1] = NEW_RFIMAContext_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init();
+  ATTR_reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_NitMethodContext(val_t self, char *from) {
+val_t NEW_RFIMABuilder(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_RFIMABuilder;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_RFIMABuilder(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_RFIMABuilder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_reachable_from_init_method_analysis_impl___RFIMABuilder____program(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_program", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_reachable_from_init_method_analysis_impl___RFIMABuilder____context(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_NitMethodContext_compiling_methods___NitMethodContext___init(val_t p0) {
+val_t NEW_RFIMABuilder_reachable_from_init_method_analysis_impl___RFIMABuilder___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[2] = {0, 0};
-  val_t self = NEW_NitMethodContext();
-  compiling_methods___NitMethodContext___init(self, p0, init_table);
-  CHECKNEW_NitMethodContext(self, "compiling_methods::NitMethodContext::init for NitMethodContext");
-  return self;
-}
-const classtable_elt_t VFT_AControlableBlock[88] = {
-  {(bigint) 4299 /* 0: Identity */},
-  {(bigint) 3 /* 1: AControlableBlock < Object: superclass typecheck marker */},
-  {(bigint) 63 /* 2: AControlableBlock < PNode: superclass typecheck marker */},
-  {(bigint) 3191 /* 3: AControlableBlock < Prod: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 28;
+  fra.me.meth = LOCATE_NEW_RFIMABuilder_reachable_from_init_method_analysis_impl___RFIMABuilder___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//reachable_from_init_method_analysis_impl.nit:28 */
+  fra.me.REG[1] = NEW_RFIMABuilder();
+  INIT_ATTRIBUTES__RFIMABuilder(fra.me.REG[1]);
+  reachable_from_init_method_analysis_impl___RFIMABuilder___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_RFIMABuilder(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_RFIMAContext[51] = {
+  {(bigint) 1851 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: RFIMAContext < Object: superclass typecheck marker */},
+  {(bigint) 71 /* 3: RFIMAContext < ReachableFromInitMethodAnalysis: superclass typecheck marker */},
+  {(bigint) 1851 /* 4: RFIMAContext < RFIMAContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3839 /* 5: AControlableBlock < PExpr: superclass typecheck marker */},
-  {(bigint) 4299 /* 6: AControlableBlock < AControlableBlock: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108588,14 +143209,11 @@ const classtable_elt_t VFT_AControlableBlock[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AControlableBlock < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: RFIMAContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -108603,7 +143221,6 @@ const classtable_elt_t VFT_AControlableBlock[88] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -108611,90 +143228,96 @@ const classtable_elt_t VFT_AControlableBlock[88] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) mmbuilder___PExpr___accept_class_builder},
-  {(bigint) mmbuilder___PNode___accept_class_specialization_builder},
-  {(bigint) mmbuilder___PNode___accept_class_ancestor_builder},
-  {(bigint) mmbuilder___PNode___accept_class_verifier},
-  {(bigint) mmbuilder___PExpr___accept_property_builder},
-  {(bigint) mmbuilder___PExpr___accept_property_verifier},
-  {(bigint) syntax_base___PNode___accept_abs_syntax_visitor},
-  {(bigint) parser_prod___PNode___parent},
-  {(bigint) parser_prod___PNode___parent__eq},
-  {(bigint) parser_prod___PNode___remove_child},
-  {(bigint) parser_prod___PNode___replace_child},
-  {(bigint) parser_prod___Prod___replace_with},
-  {(bigint) parser_prod___PNode___visit_all},
-  {(bigint) parser_prod___PNode___visit_all_reverse},
-  {(bigint) parser_prod___Prod___locate},
-  {(bigint) parser_prod___Prod___line_number},
-  {(bigint) parser_prod___PNode___printl},
-  {(bigint) 1 /* 60: AControlableBlock < PNode: superclass init_table position */},
-  {(bigint) parser_nodes___PNode___init},
-  {(bigint) typing___PNode___accept_typing},
-  {(bigint) typing___PNode___after_typing},
-  {(bigint) parser_prod___Prod___first_token},
-  {(bigint) parser_prod___Prod___first_token__eq},
-  {(bigint) parser_prod___Prod___last_token},
-  {(bigint) parser_prod___Prod___last_token__eq},
-  {(bigint) parser_prod___PNode___replace_with},
-  {(bigint) 2 /* 69: AControlableBlock < Prod: superclass init_table position */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) compiling_methods___PExpr___compile_expr},
-  {(bigint) compiling_methods___PExpr___prepare_compile_stmt},
-  {(bigint) compiling_methods___AControlableBlock___compile_stmt},
-  {(bigint) typing___PExpr___is_typed},
-  {(bigint) typing___PExpr___is_statement},
-  {(bigint) typing___PExpr___stype},
-  {(bigint) 3 /* 80: AControlableBlock < PExpr: superclass init_table position */},
-  {(bigint) typing___PExpr___is_implicit_self},
-  {(bigint) typing___PExpr___is_self},
-  {(bigint) typing___PExpr___its_variable},
-  {(bigint) typing___PExpr___if_true_variable_ctx},
-  {(bigint) typing___PExpr___if_false_variable_ctx},
-  {(bigint) 4 /* 86: AControlableBlock < AControlableBlock: superclass init_table position */},
-  {(bigint) compiling_methods___AControlableBlock___compile_inside_block},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AControlableBlock::_parent */
-/* 2: Attribute AControlableBlock::_first_token */
-/* 3: Attribute AControlableBlock::_last_token */
-/* Instance Hole :( */
-/* 5: Attribute AControlableBlock::_is_typed */
-/* 6: Attribute AControlableBlock::_stype */
-/* 7: Attribute AControlableBlock::_if_true_variable_ctx */
-/* 8: Attribute AControlableBlock::_if_false_variable_ctx */
-val_t NEW_AControlableBlock(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_AControlableBlock;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_typing___PExpr____is_typed(obj) =  TAG_Bool(false);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AControlableBlock(val_t self, char *from) {
-}
-val_t NEW_AControlableBlock_parser_nodes___PNode___init() {
-  int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_AControlableBlock();
-  parser_nodes___PNode___init(self, init_table);
-  CHECKNEW_AControlableBlock(self, "parser_nodes::PNode::init for AControlableBlock");
-  return self;
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: RFIMAContext < ReachableFromInitMethodAnalysis: superclass init_table position */},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMAContext___is_iroutine_reachable_from_init},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMAContext___is_method_reachable_from_init},
+  {(bigint) reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init},
+  {(bigint) 2 /* 49: RFIMAContext < RFIMAContext: superclass init_table position */},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute RFIMAContext::_reachable_from_init_iroutines */
+void INIT_ATTRIBUTES__RFIMAContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__RFIMAContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//reachable_from_init_method_analysis_impl.nit:53 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_reachable_from_init_method_analysis_impl___RFIMAContext____reachable_from_init_iroutines(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ColorContext[48] = {
-  {(bigint) 171 /* 0: Identity */},
-  {(bigint) 3 /* 1: ColorContext < Object: superclass typecheck marker */},
-  {(bigint) 171 /* 2: ColorContext < ColorContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_RFIMAContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_RFIMAContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_RFIMAContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_RFIMAContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_reachable_from_init_method_analysis_impl___RFIMAContext____reachable_from_init_iroutines(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_reachable_from_init_iroutines", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_RFIMAContext_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_RFIMAContext_reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_RFIMAContext();
+  INIT_ATTRIBUTES__RFIMAContext(fra.me.REG[0]);
+  reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init(fra.me.REG[0], init_table);
+  CHECKNEW_RFIMAContext(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_RFIMAVisitor[59] = {
+  {(bigint) 1847 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: RFIMAVisitor < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 3: RFIMAVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 1847 /* 4: RFIMAVisitor < RFIMAVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108707,14 +143330,9 @@ const classtable_elt_t VFT_ColorContext[48] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ColorContext < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: RFIMAVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -108722,7 +143340,6 @@ const classtable_elt_t VFT_ColorContext[48] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -108730,43 +143347,116 @@ const classtable_elt_t VFT_ColorContext[48] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ColorContext < ColorContext: superclass init_table position */},
-  {(bigint) compiling_global___ColorContext___color},
-  {(bigint) compiling_global___ColorContext___has_color},
-  {(bigint) compiling_global___ColorContext___color__eq},
-  {(bigint) compiling_global___ColorContext___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: RFIMAVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode_tools___ICodeVisitor___current_icode},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMAVisitor___visit_icode},
+  {(bigint) icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 53: RFIMAVisitor < RFIMAVisitor: superclass init_table position */},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMAVisitor___context},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMAVisitor___program},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMAVisitor___init},
+  {(bigint) reachable_from_init_method_analysis_impl___RFIMAVisitor___process_call},
+  {(bigint) icode_tools___ICodeVisitor___visit_icode},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute ColorContext::_colors */
-val_t NEW_ColorContext(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_ColorContext;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_compiling_global___ColorContext____colors(obj) =  NIT_NULL /*null*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ColorContext(val_t self, char *from) {
-}
-val_t NEW_ColorContext_compiling_global___ColorContext___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_ColorContext();
-  compiling_global___ColorContext___init(self, init_table);
-  CHECKNEW_ColorContext(self, "compiling_global::ColorContext::init for ColorContext");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute RFIMAVisitor::_current_icode */
+/* 3: Attribute RFIMAVisitor::_context */
+/* 4: Attribute RFIMAVisitor::_program */
+void INIT_ATTRIBUTES__RFIMAVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__RFIMAVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_tools.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_GlobalAnalysis[54] = {
-  {(bigint) 3331 /* 0: Identity */},
-  {(bigint) 3 /* 1: GlobalAnalysis < Object: superclass typecheck marker */},
-  {(bigint) 171 /* 2: GlobalAnalysis < ColorContext: superclass typecheck marker */},
-  {(bigint) 3331 /* 3: GlobalAnalysis < GlobalAnalysis: superclass typecheck marker */},
+val_t NEW_RFIMAVisitor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_RFIMAVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_RFIMAVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_RFIMAVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_reachable_from_init_method_analysis_impl___RFIMAVisitor____context(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_context", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_reachable_from_init_method_analysis_impl___RFIMAVisitor____program(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_program", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_RFIMAVisitor_reachable_from_init_method_analysis_impl___RFIMAVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 69;
+  fra.me.meth = LOCATE_NEW_RFIMAVisitor_reachable_from_init_method_analysis_impl___RFIMAVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./analysis//reachable_from_init_method_analysis_impl.nit:69 */
+  fra.me.REG[2] = NEW_RFIMAVisitor();
+  INIT_ATTRIBUTES__RFIMAVisitor(fra.me.REG[2]);
+  reachable_from_init_method_analysis_impl___RFIMAVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_RFIMAVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_InlineGetSetVisitor[57] = {
+  {(bigint) 1999 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: InlineGetSetVisitor < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 3: InlineGetSetVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 1999 /* 4: InlineGetSetVisitor < InlineGetSetVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108779,14 +143469,9 @@ const classtable_elt_t VFT_GlobalAnalysis[54] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: GlobalAnalysis < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: InlineGetSetVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -108794,7 +143479,6 @@ const classtable_elt_t VFT_GlobalAnalysis[54] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -108802,53 +143486,118 @@ const classtable_elt_t VFT_GlobalAnalysis[54] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: GlobalAnalysis < ColorContext: superclass init_table position */},
-  {(bigint) compiling_global___ColorContext___color},
-  {(bigint) compiling_global___ColorContext___has_color},
-  {(bigint) compiling_global___ColorContext___color__eq},
-  {(bigint) compiling_global___ColorContext___init},
-  {(bigint) 2 /* 48: GlobalAnalysis < GlobalAnalysis: superclass init_table position */},
-  {(bigint) compiling_global___GlobalAnalysis___compiled_classes},
-  {(bigint) compiling_global___GlobalAnalysis___module},
-  {(bigint) compiling_global___GlobalAnalysis___max_class_table_length},
-  {(bigint) compiling_global___GlobalAnalysis___max_class_table_length__eq},
-  {(bigint) compiling_global___GlobalAnalysis___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: InlineGetSetVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode_tools___ICodeVisitor___current_icode},
+  {(bigint) inline_get_and_set___InlineGetSetVisitor___visit_icode},
+  {(bigint) icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 53: InlineGetSetVisitor < InlineGetSetVisitor: superclass init_table position */},
+  {(bigint) inline_get_and_set___InlineGetSetVisitor___number_inlined},
+  {(bigint) icode_tools___ICodeVisitor___visit_icode},
+  {(bigint) inline_get_and_set___InlineGetSetVisitor___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute GlobalAnalysis::_colors */
-/* 2: Attribute GlobalAnalysis::_compiled_classes */
-/* 3: Attribute GlobalAnalysis::_module */
-/* 4: Attribute GlobalAnalysis::_max_class_table_length */
-val_t NEW_GlobalAnalysis(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute InlineGetSetVisitor::_current_icode */
+/* 3: Attribute InlineGetSetVisitor::_icb */
+/* 4: Attribute InlineGetSetVisitor::_number_inlined */
+void INIT_ATTRIBUTES__InlineGetSetVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__InlineGetSetVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//inline_get_and_set.nit:50 */
+  REGB0 = TAG_Int(0);
+  ATTR_inline_get_and_set___InlineGetSetVisitor____number_inlined(fra.me.REG[0]) = REGB0;
+  /* ./icode//icode_tools.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_InlineGetSetVisitor(void)
+{
   obj_t obj;
   obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_GlobalAnalysis;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_compiling_global___ColorContext____colors(obj) =  NIT_NULL /*null*/;
-  ATTR_compiling_global___GlobalAnalysis____compiled_classes(obj) = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMGlobalClass, CompiledClass]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_GlobalAnalysis(val_t self, char *from) {
-}
-val_t NEW_GlobalAnalysis_compiling_global___GlobalAnalysis___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_GlobalAnalysis();
-  compiling_global___GlobalAnalysis___init(self, p0, init_table);
-  CHECKNEW_GlobalAnalysis(self, "compiling_global::GlobalAnalysis::init for GlobalAnalysis");
-  return self;
-}
-const classtable_elt_t VFT_GlobalCompilerVisitor[71] = {
-  {(bigint) 3327 /* 0: Identity */},
-  {(bigint) 3 /* 1: GlobalCompilerVisitor < Object: superclass typecheck marker */},
-  {(bigint) 163 /* 2: GlobalCompilerVisitor < CompilerVisitor: superclass typecheck marker */},
-  {(bigint) 3327 /* 3: GlobalCompilerVisitor < GlobalCompilerVisitor: superclass typecheck marker */},
+  obj->vft = (classtable_elt_t*)VFT_InlineGetSetVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_InlineGetSetVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_InlineGetSetVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_inline_get_and_set___InlineGetSetVisitor____icb(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_inline_get_and_set___InlineGetSetVisitor____number_inlined(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_number_inlined", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_InlineGetSetVisitor_inline_get_and_set___InlineGetSetVisitor___init(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 79;
+  fra.me.meth = LOCATE_NEW_InlineGetSetVisitor_inline_get_and_set___InlineGetSetVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./analysis//inline_get_and_set.nit:79 */
+  fra.me.REG[2] = NEW_InlineGetSetVisitor();
+  INIT_ATTRIBUTES__InlineGetSetVisitor(fra.me.REG[2]);
+  inline_get_and_set___InlineGetSetVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
+  CHECKNEW_InlineGetSetVisitor(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_IssetCounter[56] = {
+  {(bigint) 1991 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: IssetCounter < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 3: IssetCounter < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 1991 /* 4: IssetCounter < IssetCounter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108861,14 +143610,9 @@ const classtable_elt_t VFT_GlobalCompilerVisitor[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) compiling_base___CompilerVisitor___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: GlobalCompilerVisitor < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: IssetCounter < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -108876,7 +143620,6 @@ const classtable_elt_t VFT_GlobalCompilerVisitor[71] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -108884,77 +143627,106 @@ const classtable_elt_t VFT_GlobalCompilerVisitor[71] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) compiling_methods___CompilerVisitor___compile_stmt},
-  {(bigint) compiling_methods___CompilerVisitor___compile_expr},
-  {(bigint) compiling_methods___CompilerVisitor___ensure_var},
-  {(bigint) compiling_methods___CompilerVisitor___add_assignment},
-  {(bigint) compiling_methods___CompilerVisitor___cfc},
-  {(bigint) compiling_methods___CompilerVisitor___cfc__eq},
-  {(bigint) compiling_methods___CompilerVisitor___nmc},
-  {(bigint) compiling_methods___CompilerVisitor___nmc__eq},
-  {(bigint) compiling_methods___CompilerVisitor___out_contexts},
-  {(bigint) compiling_methods___CompilerVisitor___out_contexts__eq},
-  {(bigint) compiling_methods___CompilerVisitor___printf_locate_error},
-  {(bigint) compiling_methods___CompilerVisitor___invoke_super_init_calls_after},
-  {(bigint) 1 /* 55: GlobalCompilerVisitor < CompilerVisitor: superclass init_table position */},
-  {(bigint) compiling_base___CompilerVisitor___add_decl},
-  {(bigint) compiling_base___CompilerVisitor___add_instr},
-  {(bigint) compiling_base___CompilerVisitor___new_number},
-  {(bigint) compiling_base___CompilerVisitor___indent},
-  {(bigint) compiling_base___CompilerVisitor___unindent},
-  {(bigint) compiling_base___CompilerVisitor___module},
-  {(bigint) compiling_base___CompilerVisitor___ctx},
-  {(bigint) compiling_base___CompilerVisitor___ctx__eq},
-  {(bigint) compiling_base___CompilerVisitor___indent_level},
-  {(bigint) compiling_base___CompilerVisitor___indent_level__eq},
-  {(bigint) compiling_base___CompilerVisitor___tc},
-  {(bigint) compiling_base___CompilerVisitor___init},
-  {(bigint) 2 /* 68: GlobalCompilerVisitor < GlobalCompilerVisitor: superclass init_table position */},
-  {(bigint) compiling_global___GlobalCompilerVisitor___global_analysis},
-  {(bigint) compiling_global___GlobalCompilerVisitor___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute GlobalCompilerVisitor::_cfc */
-/* 2: Attribute GlobalCompilerVisitor::_nmc */
-/* 3: Attribute GlobalCompilerVisitor::_out_contexts */
-/* 4: Attribute GlobalCompilerVisitor::_number_cpt */
-/* 5: Attribute GlobalCompilerVisitor::_module */
-/* 6: Attribute GlobalCompilerVisitor::_ctx */
-/* 7: Attribute GlobalCompilerVisitor::_indent_level */
-/* 8: Attribute GlobalCompilerVisitor::_tc */
-/* 9: Attribute GlobalCompilerVisitor::_global_analysis */
-val_t NEW_GlobalCompilerVisitor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 10);
-  obj->vft = (classtable_elt_t*)VFT_GlobalCompilerVisitor;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_compiling_base___CompilerVisitor____number_cpt(obj) =  TAG_Int(0);
-  ATTR_compiling_base___CompilerVisitor____ctx(obj) = NEW_CContext_compiling_base___CContext___init() /*new CContext*/;
-  ATTR_compiling_base___CompilerVisitor____indent_level(obj) =  TAG_Int(0);
-  ATTR_compiling_methods___CompilerVisitor____out_contexts(obj) = NEW_Array_array___Array___init() /*new Array[CContext]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_GlobalCompilerVisitor(val_t self, char *from) {
-}
-val_t NEW_GlobalCompilerVisitor_compiling_global___GlobalCompilerVisitor___init(val_t p0, val_t p1, val_t p2) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_GlobalCompilerVisitor();
-  compiling_global___GlobalCompilerVisitor___init(self, p0, p1, p2, init_table);
-  CHECKNEW_GlobalCompilerVisitor(self, "compiling_global::GlobalCompilerVisitor::init for GlobalCompilerVisitor");
-  return self;
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: IssetCounter < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode_tools___ICodeVisitor___current_icode},
+  {(bigint) remove_out_of_init_get_test___IssetCounter___visit_icode},
+  {(bigint) icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 53: IssetCounter < IssetCounter: superclass init_table position */},
+  {(bigint) remove_out_of_init_get_test___IssetCounter___nb_isset},
+  {(bigint) icode_tools___ICodeVisitor___visit_icode},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute IssetCounter::_current_icode */
+/* 3: Attribute IssetCounter::_nb_isset */
+void INIT_ATTRIBUTES__IssetCounter(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__IssetCounter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//remove_out_of_init_get_test.nit:59 */
+  REGB0 = TAG_Int(0);
+  ATTR_remove_out_of_init_get_test___IssetCounter____nb_isset(fra.me.REG[0]) = REGB0;
+  /* ./icode//icode_tools.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_CompiledClass[57] = {
-  {(bigint) 3359 /* 0: Identity */},
-  {(bigint) 3 /* 1: CompiledClass < Object: superclass typecheck marker */},
-  {(bigint) 171 /* 2: CompiledClass < ColorContext: superclass typecheck marker */},
-  {(bigint) 3359 /* 3: CompiledClass < CompiledClass: superclass typecheck marker */},
+val_t NEW_IssetCounter(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_IssetCounter;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_IssetCounter(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_IssetCounter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_remove_out_of_init_get_test___IssetCounter____nb_isset(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_nb_isset", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_IssetCounter_icode_tools___ICodeVisitor___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_IssetCounter_icode_tools___ICodeVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_IssetCounter();
+  INIT_ATTRIBUTES__IssetCounter(fra.me.REG[0]);
+  icode_tools___ICodeVisitor___init(fra.me.REG[0], init_table);
+  CHECKNEW_IssetCounter(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_GetterTestRemover[56] = {
+  {(bigint) 2047 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: GetterTestRemover < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 3: GetterTestRemover < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 2047 /* 4: GetterTestRemover < GetterTestRemover: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108967,14 +143739,9 @@ const classtable_elt_t VFT_CompiledClass[57] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: CompiledClass < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: GetterTestRemover < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -108982,7 +143749,6 @@ const classtable_elt_t VFT_CompiledClass[57] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -108990,62 +143756,106 @@ const classtable_elt_t VFT_CompiledClass[57] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: CompiledClass < ColorContext: superclass init_table position */},
-  {(bigint) compiling_global___ColorContext___color},
-  {(bigint) compiling_global___ColorContext___has_color},
-  {(bigint) compiling_global___ColorContext___color__eq},
-  {(bigint) compiling_global___ColorContext___init},
-  {(bigint) 2 /* 48: CompiledClass < CompiledClass: superclass init_table position */},
-  {(bigint) compiling_global___CompiledClass___local_class},
-  {(bigint) compiling_global___CompiledClass___id},
-  {(bigint) compiling_global___CompiledClass___id__eq},
-  {(bigint) compiling_global___CompiledClass___class_table},
-  {(bigint) compiling_global___CompiledClass___instance_table},
-  {(bigint) compiling_global___CompiledClass___class_layout},
-  {(bigint) compiling_global___CompiledClass___instance_layout},
-  {(bigint) compiling_global___CompiledClass___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: GetterTestRemover < ICodeVisitor: superclass init_table position */},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_read},
+  {(bigint) icode_tools___ICodeVisitor___visit_iregister_write},
+  {(bigint) icode_tools___ICodeVisitor___current_icode},
+  {(bigint) remove_out_of_init_get_test___GetterTestRemover___visit_icode},
+  {(bigint) icode_tools___ICodeVisitor___visit_closure_defs},
+  {(bigint) icode_tools___ICodeVisitor___visit_iroutine},
+  {(bigint) icode_tools___ICodeVisitor___init},
+  {(bigint) 2 /* 53: GetterTestRemover < GetterTestRemover: superclass init_table position */},
+  {(bigint) remove_out_of_init_get_test___GetterTestRemover___nb_optimized_isset},
+  {(bigint) icode_tools___ICodeVisitor___visit_icode},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute CompiledClass::_colors */
-/* 2: Attribute CompiledClass::_local_class */
-/* 3: Attribute CompiledClass::_id */
-/* 4: Attribute CompiledClass::_class_table */
-/* 5: Attribute CompiledClass::_instance_table */
-/* 6: Attribute CompiledClass::_class_layout */
-/* 7: Attribute CompiledClass::_instance_layout */
-val_t NEW_CompiledClass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
-  obj->vft = (classtable_elt_t*)VFT_CompiledClass;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_compiling_global___ColorContext____colors(obj) =  NIT_NULL /*null*/;
-  ATTR_compiling_global___CompiledClass____class_table(obj) = NEW_Array_array___Array___init() /*new Array[TableElt]*/;
-  ATTR_compiling_global___CompiledClass____instance_table(obj) = NEW_Array_array___Array___init() /*new Array[TableElt]*/;
-  ATTR_compiling_global___CompiledClass____class_layout(obj) = NEW_TableEltComposite_compiling_global___TableEltComposite___init(variable[0]) /*new TableEltComposite*/;
-  ATTR_compiling_global___CompiledClass____instance_layout(obj) = NEW_TableEltComposite_compiling_global___TableEltComposite___init(variable[0]) /*new TableEltComposite*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_CompiledClass(val_t self, char *from) {
-}
-val_t NEW_CompiledClass_compiling_global___CompiledClass___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_CompiledClass();
-  compiling_global___CompiledClass___init(self, p0, init_table);
-  CHECKNEW_CompiledClass(self, "compiling_global::CompiledClass::init for CompiledClass");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute GetterTestRemover::_current_icode */
+/* 3: Attribute GetterTestRemover::_nb_optimized_isset */
+void INIT_ATTRIBUTES__GetterTestRemover(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__GetterTestRemover;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//remove_out_of_init_get_test.nit:73 */
+  REGB0 = TAG_Int(0);
+  ATTR_remove_out_of_init_get_test___GetterTestRemover____nb_optimized_isset(fra.me.REG[0]) = REGB0;
+  /* ./icode//icode_tools.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_AbsTableElt[46] = {
-  {(bigint) 195 /* 0: Identity */},
-  {(bigint) 3 /* 1: AbsTableElt < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: AbsTableElt < AbsTableElt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+val_t NEW_GetterTestRemover(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_GetterTestRemover;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_GetterTestRemover(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_GetterTestRemover;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_remove_out_of_init_get_test___GetterTestRemover____nb_optimized_isset(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_nb_optimized_isset", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_GetterTestRemover_icode_tools___ICodeVisitor___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_GetterTestRemover_icode_tools___ICodeVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_GetterTestRemover();
+  INIT_ATTRIBUTES__GetterTestRemover(fra.me.REG[0]);
+  icode_tools___ICodeVisitor___init(fra.me.REG[0], init_table);
+  CHECKNEW_GetterTestRemover(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_FileICodeDumper[61] = {
+  {(bigint) 2051 /* 0: Identity */},
+  {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: FileICodeDumper < Object: superclass typecheck marker */},
+  {(bigint) 207 /* 3: FileICodeDumper < ICodeDumper: superclass typecheck marker */},
+  {(bigint) 2051 /* 4: FileICodeDumper < FileICodeDumper: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109058,14 +143868,9 @@ const classtable_elt_t VFT_AbsTableElt[46] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AbsTableElt < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: FileICodeDumper < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109073,7 +143878,6 @@ const classtable_elt_t VFT_AbsTableElt[46] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109081,39 +143885,172 @@ const classtable_elt_t VFT_AbsTableElt[46] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: AbsTableElt < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling_global___AbsTableElt___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: FileICodeDumper < ICodeDumper: superclass init_table position */},
+  {(bigint) icode_dump___ICodeDumper___dump_locations},
+  {(bigint) icode_dump___ICodeDumper___dump_line_numbers},
+  {(bigint) icode_dump___ICodeDumper___init},
+  {(bigint) icode_dump___ICodeDumper___register},
+  {(bigint) icode_dump___ICodeDumper___register_all},
+  {(bigint) icode_dump___ICodeDumper___closdecl},
+  {(bigint) icode_dump___ICodeDumper___lab},
+  {(bigint) icode_dump___ICodeDumper___line},
+  {(bigint) icode_dump___ICodeDumper___has_lab},
+  {(bigint) icode_generator___FileICodeDumper___write},
+  {(bigint) icode_dump___ICodeDumper___indent_level},
+  {(bigint) icode_dump___ICodeDumper___indent},
+  {(bigint) icode_dump___ICodeDumper___unindent},
+  {(bigint) 2 /* 59: FileICodeDumper < FileICodeDumper: superclass init_table position */},
+  {(bigint) icode_generator___FileICodeDumper___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_AbsTableElt(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_AbsTableElt;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AbsTableElt(val_t self, char *from) {
-}
-val_t NEW_AbsTableElt_compiling_global___AbsTableElt___init() {
-  int init_table[2] = {0, 0};
-  val_t self = NEW_AbsTableElt();
-  compiling_global___AbsTableElt___init(self, init_table);
-  CHECKNEW_AbsTableElt(self, "compiling_global::AbsTableElt::init for AbsTableElt");
-  return self;
+/* 1: Object_id */
+/* 2: Attribute FileICodeDumper::_dump_locations */
+/* 3: Attribute FileICodeDumper::_dump_line_numbers */
+/* 4: Attribute FileICodeDumper::_ids */
+/* 5: Attribute FileICodeDumper::_last_value */
+/* 6: Attribute FileICodeDumper::_last_clos */
+/* 7: Attribute FileICodeDumper::_last_label */
+/* 8: Attribute FileICodeDumper::_last_line */
+/* 9: Attribute FileICodeDumper::_indent_level */
+/* 10: Attribute FileICodeDumper::_file */
+void INIT_ATTRIBUTES__FileICodeDumper(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__FileICodeDumper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//icode_dump.nit:70 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_icode_dump___ICodeDumper____ids(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./analysis//icode_dump.nit:71 */
+  REGB0 = TAG_Int(0);
+  ATTR_icode_dump___ICodeDumper____last_value(fra.me.REG[0]) = REGB0;
+  /* ./analysis//icode_dump.nit:118 */
+  REGB0 = TAG_Int(0);
+  ATTR_icode_dump___ICodeDumper____last_clos(fra.me.REG[0]) = REGB0;
+  /* ./analysis//icode_dump.nit:134 */
+  REGB0 = TAG_Int(0);
+  ATTR_icode_dump___ICodeDumper____last_label(fra.me.REG[0]) = REGB0;
+  /* ./analysis//icode_dump.nit:149 */
+  REGB0 = TAG_Int(0);
+  ATTR_icode_dump___ICodeDumper____last_line(fra.me.REG[0]) = REGB0;
+  /* ./analysis//icode_dump.nit:178 */
+  REGB0 = TAG_Int(0);
+  ATTR_icode_dump___ICodeDumper____indent_level(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_TableElt[51] = {
-  {(bigint) 211 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableElt < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableElt < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 211 /* 3: TableElt < TableElt: superclass typecheck marker */},
+val_t NEW_FileICodeDumper(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_FileICodeDumper;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_FileICodeDumper(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_FileICodeDumper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_icode_generator___FileICodeDumper____file(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_file", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____dump_locations(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_dump_locations", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____dump_line_numbers(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_dump_line_numbers", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____ids(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_ids", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____last_value(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_last_value", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____last_clos(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_last_clos", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____last_label(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_last_label", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____last_line(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_last_line", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode_dump___ICodeDumper____indent_level(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_indent_level", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_FileICodeDumper_icode_generator___FileICodeDumper___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 40;
+  fra.me.meth = LOCATE_NEW_FileICodeDumper_icode_generator___FileICodeDumper___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//icode_generator.nit:40 */
+  fra.me.REG[1] = NEW_FileICodeDumper();
+  INIT_ATTRIBUTES__FileICodeDumper(fra.me.REG[1]);
+  icode_generator___FileICodeDumper___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_FileICodeDumper(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ColorContext[50] = {
+  {(bigint) 247 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ColorContext < Object: superclass typecheck marker */},
+  {(bigint) 247 /* 3: ColorContext < ColorContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109126,14 +144063,10 @@ const classtable_elt_t VFT_TableElt[51] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableElt < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: ColorContext < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109141,7 +144074,6 @@ const classtable_elt_t VFT_TableElt[51] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109149,45 +144081,96 @@ const classtable_elt_t VFT_TableElt[51] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableElt < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling_global___AbsTableElt___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 2 /* 46: TableElt < TableElt: superclass init_table position */},
-  {(bigint) compiling_global___TableElt___is_related_to},
-  {(bigint) compiling_global___TableElt___length},
-  {(bigint) compiling_global___TableElt___item},
-  {(bigint) compiling_global___TableElt___compile_to_c},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: ColorContext < ColorContext: superclass init_table position */},
+  {(bigint) table_computation___ColorContext___color},
+  {(bigint) table_computation___ColorContext___has_color},
+  {(bigint) table_computation___ColorContext___color__eq},
+  {(bigint) table_computation___ColorContext___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_TableElt(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_TableElt;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
+/* 1: Object_id */
+/* 2: Attribute ColorContext::_colors */
+void INIT_ATTRIBUTES__ColorContext(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ColorContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:27 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_table_computation___ColorContext____colors(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-void CHECKNEW_TableElt(val_t self, char *from) {
-}
-val_t NEW_TableElt_compiling_global___AbsTableElt___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_TableElt();
-  compiling_global___AbsTableElt___init(self, init_table);
-  CHECKNEW_TableElt(self, "compiling_global::AbsTableElt::init for TableElt");
-  return self;
+val_t NEW_ColorContext(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ColorContext;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ColorContext(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ColorContext;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___ColorContext____colors(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_colors", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-const classtable_elt_t VFT_ModuleTableElt[53] = {
-  {(bigint) 3231 /* 0: Identity */},
-  {(bigint) 3 /* 1: ModuleTableElt < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: ModuleTableElt < AbsTableElt: superclass typecheck marker */},
+val_t NEW_ColorContext_table_computation___ColorContext___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ColorContext_table_computation___ColorContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_ColorContext();
+  INIT_ATTRIBUTES__ColorContext(fra.me.REG[0]);
+  table_computation___ColorContext___init(fra.me.REG[0], init_table);
+  CHECKNEW_ColorContext(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_TableInformation[53] = {
+  {(bigint) 299 /* 0: Identity */},
+  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableInformation < Object: superclass typecheck marker */},
+  {(bigint) 247 /* 3: TableInformation < ColorContext: superclass typecheck marker */},
+  {(bigint) 299 /* 4: TableInformation < TableInformation: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3231 /* 4: ModuleTableElt < ModuleTableElt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109199,14 +144182,9 @@ const classtable_elt_t VFT_ModuleTableElt[53] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ModuleTableElt < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: TableInformation < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109214,7 +144192,6 @@ const classtable_elt_t VFT_ModuleTableElt[53] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109222,48 +144199,109 @@ const classtable_elt_t VFT_ModuleTableElt[53] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ModuleTableElt < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling_global___AbsTableElt___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 51: ModuleTableElt < ModuleTableElt: superclass init_table position */},
-  {(bigint) compiling_global___ModuleTableElt___value},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: TableInformation < ColorContext: superclass init_table position */},
+  {(bigint) table_computation___ColorContext___color},
+  {(bigint) table_computation___ColorContext___has_color},
+  {(bigint) table_computation___ColorContext___color__eq},
+  {(bigint) table_computation___ColorContext___init},
+  {(bigint) 2 /* 50: TableInformation < TableInformation: superclass init_table position */},
+  {(bigint) table_computation___TableInformation___max_class_table_length},
+  {(bigint) table_computation___TableInformation___max_class_table_length__eq},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ModuleTableElt(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ModuleTableElt;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ModuleTableElt(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute TableInformation::_colors */
+/* 3: Attribute TableInformation::_max_class_table_length */
+void INIT_ATTRIBUTES__TableInformation(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableInformation;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:57 */
+  REGB0 = TAG_Int(0);
+  ATTR_table_computation___TableInformation____max_class_table_length(fra.me.REG[0]) = REGB0;
+  /* ./compiling//table_computation.nit:27 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_table_computation___ColorContext____colors(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ModuleTableElt_compiling_global___AbsTableElt___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ModuleTableElt();
-  compiling_global___AbsTableElt___init(self, init_table);
-  CHECKNEW_ModuleTableElt(self, "compiling_global::AbsTableElt::init for ModuleTableElt");
-  return self;
-}
-const classtable_elt_t VFT_ModuleTableEltGroup[55] = {
-  {(bigint) 3895 /* 0: Identity */},
-  {(bigint) 3 /* 1: ModuleTableEltGroup < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: ModuleTableEltGroup < AbsTableElt: superclass typecheck marker */},
+val_t NEW_TableInformation(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_TableInformation;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableInformation(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableInformation;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___TableInformation____max_class_table_length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_max_class_table_length", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___ColorContext____colors(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_colors", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableInformation_table_computation___ColorContext___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TableInformation_table_computation___ColorContext___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_TableInformation();
+  INIT_ATTRIBUTES__TableInformation(fra.me.REG[0]);
+  table_computation___ColorContext___init(fra.me.REG[0], init_table);
+  CHECKNEW_TableInformation(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_CompiledClass[61] = {
+  {(bigint) 2099 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: CompiledClass < Object: superclass typecheck marker */},
+  {(bigint) 247 /* 3: CompiledClass < ColorContext: superclass typecheck marker */},
+  {(bigint) 2099 /* 4: CompiledClass < CompiledClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3231 /* 4: ModuleTableEltGroup < ModuleTableElt: superclass typecheck marker */},
-  {(bigint) 3895 /* 5: ModuleTableEltGroup < ModuleTableEltGroup: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109274,14 +144312,10 @@ const classtable_elt_t VFT_ModuleTableEltGroup[55] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ModuleTableEltGroup < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: CompiledClass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109289,7 +144323,6 @@ const classtable_elt_t VFT_ModuleTableEltGroup[55] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109297,52 +144330,167 @@ const classtable_elt_t VFT_ModuleTableEltGroup[55] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ModuleTableEltGroup < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling_global___ModuleTableEltGroup___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2 /* 51: ModuleTableEltGroup < ModuleTableElt: superclass init_table position */},
-  {(bigint) compiling_global___ModuleTableEltGroup___value},
-  {(bigint) 3 /* 53: ModuleTableEltGroup < ModuleTableEltGroup: superclass init_table position */},
-  {(bigint) compiling_global___ModuleTableEltGroup___elements},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: CompiledClass < ColorContext: superclass init_table position */},
+  {(bigint) table_computation___ColorContext___color},
+  {(bigint) table_computation___ColorContext___has_color},
+  {(bigint) table_computation___ColorContext___color__eq},
+  {(bigint) table_computation___ColorContext___init},
+  {(bigint) 2 /* 50: CompiledClass < CompiledClass: superclass init_table position */},
+  {(bigint) table_computation___CompiledClass___local_class},
+  {(bigint) table_computation___CompiledClass___id},
+  {(bigint) table_computation___CompiledClass___id__eq},
+  {(bigint) table_computation___CompiledClass___class_table},
+  {(bigint) table_computation___CompiledClass___instance_table},
+  {(bigint) table_computation___CompiledClass___class_layout},
+  {(bigint) table_computation___CompiledClass___class_layout__eq},
+  {(bigint) table_computation___CompiledClass___instance_layout},
+  {(bigint) table_computation___CompiledClass___instance_layout__eq},
+  {(bigint) table_computation___CompiledClass___init},
 };
 /* 0: Pointer to the classtable */
-/* 1: Attribute ModuleTableEltGroup::_elements */
-val_t NEW_ModuleTableEltGroup(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_ModuleTableEltGroup;
-  variable[0] = OBJ2VAL(obj);
-  ATTR_compiling_global___ModuleTableEltGroup____elements(obj) = NEW_Array_array___Array___init() /*new Array[TableElt]*/;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ModuleTableEltGroup(val_t self, char *from) {
+/* 1: Object_id */
+/* 2: Attribute CompiledClass::_colors */
+/* 3: Attribute CompiledClass::_local_class */
+/* 4: Attribute CompiledClass::_id */
+/* 5: Attribute CompiledClass::_class_table */
+/* 6: Attribute CompiledClass::_instance_table */
+/* 7: Attribute CompiledClass::_class_layout */
+/* 8: Attribute CompiledClass::_instance_layout */
+void INIT_ATTRIBUTES__CompiledClass(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__CompiledClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:67 */
+  REGB0 = TAG_Int(0);
+  ATTR_table_computation___CompiledClass____id(fra.me.REG[0]) = REGB0;
+  /* ./compiling//table_computation.nit:70 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_table_computation___CompiledClass____class_table(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//table_computation.nit:73 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_table_computation___CompiledClass____instance_table(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//table_computation.nit:75 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./compiling//table_computation.nit:76 */
+  fra.me.REG[1] = NEW_TableEltComposite_table_computation___TableEltComposite___init(fra.me.REG[1]);
+  ATTR_table_computation___CompiledClass____class_layout(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//table_computation.nit:78 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./compiling//table_computation.nit:79 */
+  fra.me.REG[1] = NEW_TableEltComposite_table_computation___TableEltComposite___init(fra.me.REG[1]);
+  ATTR_table_computation___CompiledClass____instance_layout(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//table_computation.nit:27 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_table_computation___ColorContext____colors(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ModuleTableEltGroup_compiling_global___AbsTableElt___init() {
-  int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_ModuleTableEltGroup();
-  compiling_global___AbsTableElt___init(self, init_table);
-  CHECKNEW_ModuleTableEltGroup(self, "compiling_global::AbsTableElt::init for ModuleTableEltGroup");
-  return self;
-}
-const classtable_elt_t VFT_TableEltProp[53] = {
-  {(bigint) 3411 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableEltProp < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableEltProp < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 211 /* 3: TableEltProp < TableElt: superclass typecheck marker */},
-  {(bigint) 3411 /* 4: TableEltProp < TableEltProp: superclass typecheck marker */},
+val_t NEW_CompiledClass(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 9);
+  obj->vft = (classtable_elt_t*)VFT_CompiledClass;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_CompiledClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_CompiledClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___CompiledClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___CompiledClass____id(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_id", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___CompiledClass____class_table(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_class_table", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___CompiledClass____instance_table(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_instance_table", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___CompiledClass____class_layout(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_class_layout", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___CompiledClass____instance_layout(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_instance_layout", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___ColorContext____colors(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_colors", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_CompiledClass_table_computation___CompiledClass___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 81;
+  fra.me.meth = LOCATE_NEW_CompiledClass_table_computation___CompiledClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:81 */
+  fra.me.REG[1] = NEW_CompiledClass();
+  INIT_ATTRIBUTES__CompiledClass(fra.me.REG[1]);
+  table_computation___CompiledClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_CompiledClass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_ModuleTableEltGroup[57] = {
+  {(bigint) 2583 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: ModuleTableEltGroup < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: ModuleTableEltGroup < AbsTableElt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 1899 /* 5: ModuleTableEltGroup < ModuleTableElt: superclass typecheck marker */},
+  {(bigint) 2583 /* 6: ModuleTableEltGroup < ModuleTableEltGroup: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109353,14 +144501,9 @@ const classtable_elt_t VFT_TableEltProp[53] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableEltProp < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: ModuleTableEltGroup < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109368,7 +144511,6 @@ const classtable_elt_t VFT_TableEltProp[53] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109376,49 +144518,104 @@ const classtable_elt_t VFT_TableEltProp[53] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableEltProp < AbsTableElt: superclass init_table position */},
-  {(bigint) compiling_global___AbsTableElt___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 2 /* 46: TableEltProp < TableElt: superclass init_table position */},
-  {(bigint) compiling_global___TableElt___is_related_to},
-  {(bigint) compiling_global___TableElt___length},
-  {(bigint) compiling_global___TableElt___item},
-  {(bigint) compiling_global___TableElt___compile_to_c},
-  {(bigint) 3 /* 51: TableEltProp < TableEltProp: superclass init_table position */},
-  {(bigint) compiling_global___TableEltProp___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TableEltProp::_property */
-val_t NEW_TableEltProp(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_global___ModuleTableEltGroup___compile_macros},
+  {(bigint) 1 /* 46: ModuleTableEltGroup < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) compiling_global___ModuleTableEltGroup___value},
+  {(bigint) 0 /* 54: ModuleTableEltGroup < ModuleTableElt: superclass init_table position */},
+  {(bigint) 3 /* 55: ModuleTableEltGroup < ModuleTableEltGroup: superclass init_table position */},
+  {(bigint) table_computation___ModuleTableEltGroup___elements},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ModuleTableEltGroup::_elements */
+void INIT_ATTRIBUTES__ModuleTableEltGroup(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__ModuleTableEltGroup;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:436 */
+  fra.me.REG[1] = NEW_Array_array___Array___init();
+  ATTR_table_computation___ModuleTableEltGroup____elements(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ModuleTableEltGroup(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
-  obj->vft = (classtable_elt_t*)VFT_TableEltProp;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TableEltProp(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_ModuleTableEltGroup;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_ModuleTableEltGroup(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_ModuleTableEltGroup;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___ModuleTableEltGroup____elements(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_elements", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltProp_compiling_global___TableEltProp___init(val_t p0) {
+val_t NEW_ModuleTableEltGroup_table_computation___AbsTableElt___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TableEltProp();
-  compiling_global___TableEltProp___init(self, p0, init_table);
-  CHECKNEW_TableEltProp(self, "compiling_global::TableEltProp::init for TableEltProp");
-  return self;
-}
-const classtable_elt_t VFT_TableEltMeth[54] = {
-  {(bigint) 4003 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableEltMeth < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableEltMeth < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 211 /* 3: TableEltMeth < TableElt: superclass typecheck marker */},
-  {(bigint) 3411 /* 4: TableEltMeth < TableEltProp: superclass typecheck marker */},
-  {(bigint) 4003 /* 5: TableEltMeth < TableEltMeth: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ModuleTableEltGroup_table_computation___AbsTableElt___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_ModuleTableEltGroup();
+  INIT_ATTRIBUTES__ModuleTableEltGroup(fra.me.REG[0]);
+  table_computation___AbsTableElt___init(fra.me.REG[0], init_table);
+  CHECKNEW_ModuleTableEltGroup(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_TableEltMeth[57] = {
+  {(bigint) 2887 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltMeth < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltMeth < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltMeth < TableElt: superclass typecheck marker */},
+  {(bigint) 2155 /* 5: TableEltMeth < TableEltProp: superclass typecheck marker */},
+  {(bigint) 2887 /* 6: TableEltMeth < TableEltMeth: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109429,14 +144626,9 @@ const classtable_elt_t VFT_TableEltMeth[54] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableEltMeth < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: TableEltMeth < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109444,7 +144636,6 @@ const classtable_elt_t VFT_TableEltMeth[54] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109452,50 +144643,101 @@ const classtable_elt_t VFT_TableEltMeth[54] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableEltMeth < AbsTableElt: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling_global___TableEltMeth___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 2 /* 46: TableEltMeth < TableElt: superclass init_table position */},
-  {(bigint) compiling_global___TableElt___is_related_to},
-  {(bigint) compiling_global___TableElt___length},
-  {(bigint) compiling_global___TableElt___item},
+  {(bigint) 2 /* 46: TableEltMeth < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
   {(bigint) compiling_global___TableEltMeth___compile_to_c},
-  {(bigint) 3 /* 51: TableEltMeth < TableEltProp: superclass init_table position */},
-  {(bigint) compiling_global___TableEltProp___init},
-  {(bigint) 4 /* 53: TableEltMeth < TableEltMeth: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TableEltMeth::_property */
-val_t NEW_TableEltMeth(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 1 /* 49: TableEltMeth < TableElt: superclass init_table position */},
+  {(bigint) table_computation___TableElt___is_related_to},
+  {(bigint) table_computation___TableElt___length},
+  {(bigint) table_computation___TableElt___item},
+  {(bigint) 0 /* 53: TableEltMeth < TableEltProp: superclass init_table position */},
+  {(bigint) table_computation___TableEltProp___property},
+  {(bigint) table_computation___TableEltProp___init},
+  {(bigint) 4 /* 56: TableEltMeth < TableEltMeth: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TableEltMeth::_property */
+void INIT_ATTRIBUTES__TableEltMeth(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltMeth;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltMeth(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
+  obj = alloc(sizeof(val_t) * 3);
   obj->vft = (classtable_elt_t*)VFT_TableEltMeth;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TableEltMeth(val_t self, char *from) {
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltMeth(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltMeth;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___TableEltProp____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltMeth_compiling_global___TableEltProp___init(val_t p0) {
+val_t NEW_TableEltMeth_table_computation___TableEltProp___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_TableEltMeth();
-  compiling_global___TableEltProp___init(self, p0, init_table);
-  CHECKNEW_TableEltMeth(self, "compiling_global::TableEltProp::init for TableEltMeth");
-  return self;
-}
-const classtable_elt_t VFT_TableEltSuper[54] = {
-  {(bigint) 3999 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableEltSuper < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableEltSuper < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 211 /* 3: TableEltSuper < TableElt: superclass typecheck marker */},
-  {(bigint) 3411 /* 4: TableEltSuper < TableEltProp: superclass typecheck marker */},
-  {(bigint) 3999 /* 5: TableEltSuper < TableEltSuper: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 444;
+  fra.me.meth = LOCATE_NEW_TableEltMeth_table_computation___TableEltProp___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:444 */
+  fra.me.REG[1] = NEW_TableEltMeth();
+  INIT_ATTRIBUTES__TableEltMeth(fra.me.REG[1]);
+  table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TableEltMeth(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TableEltSuper[57] = {
+  {(bigint) 2883 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltSuper < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltSuper < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltSuper < TableElt: superclass typecheck marker */},
+  {(bigint) 2155 /* 5: TableEltSuper < TableEltProp: superclass typecheck marker */},
+  {(bigint) 2883 /* 6: TableEltSuper < TableEltSuper: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109506,14 +144748,9 @@ const classtable_elt_t VFT_TableEltSuper[54] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableEltSuper < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: TableEltSuper < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109521,7 +144758,6 @@ const classtable_elt_t VFT_TableEltSuper[54] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109529,50 +144765,101 @@ const classtable_elt_t VFT_TableEltSuper[54] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableEltSuper < AbsTableElt: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling_global___TableEltSuper___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 2 /* 46: TableEltSuper < TableElt: superclass init_table position */},
-  {(bigint) compiling_global___TableElt___is_related_to},
-  {(bigint) compiling_global___TableElt___length},
-  {(bigint) compiling_global___TableElt___item},
+  {(bigint) 2 /* 46: TableEltSuper < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
   {(bigint) compiling_global___TableEltSuper___compile_to_c},
-  {(bigint) 3 /* 51: TableEltSuper < TableEltProp: superclass init_table position */},
-  {(bigint) compiling_global___TableEltProp___init},
-  {(bigint) 4 /* 53: TableEltSuper < TableEltSuper: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TableEltSuper::_property */
-val_t NEW_TableEltSuper(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 1 /* 49: TableEltSuper < TableElt: superclass init_table position */},
+  {(bigint) table_computation___TableElt___is_related_to},
+  {(bigint) table_computation___TableElt___length},
+  {(bigint) table_computation___TableElt___item},
+  {(bigint) 0 /* 53: TableEltSuper < TableEltProp: superclass init_table position */},
+  {(bigint) table_computation___TableEltProp___property},
+  {(bigint) table_computation___TableEltProp___init},
+  {(bigint) 4 /* 56: TableEltSuper < TableEltSuper: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TableEltSuper::_property */
+void INIT_ATTRIBUTES__TableEltSuper(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltSuper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltSuper(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
+  obj = alloc(sizeof(val_t) * 3);
   obj->vft = (classtable_elt_t*)VFT_TableEltSuper;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TableEltSuper(val_t self, char *from) {
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltSuper(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltSuper;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___TableEltProp____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltSuper_compiling_global___TableEltProp___init(val_t p0) {
+val_t NEW_TableEltSuper_table_computation___TableEltProp___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_TableEltSuper();
-  compiling_global___TableEltProp___init(self, p0, init_table);
-  CHECKNEW_TableEltSuper(self, "compiling_global::TableEltProp::init for TableEltSuper");
-  return self;
-}
-const classtable_elt_t VFT_TableEltAttr[54] = {
-  {(bigint) 4015 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableEltAttr < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableEltAttr < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 211 /* 3: TableEltAttr < TableElt: superclass typecheck marker */},
-  {(bigint) 3411 /* 4: TableEltAttr < TableEltProp: superclass typecheck marker */},
-  {(bigint) 4015 /* 5: TableEltAttr < TableEltAttr: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 444;
+  fra.me.meth = LOCATE_NEW_TableEltSuper_table_computation___TableEltProp___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:444 */
+  fra.me.REG[1] = NEW_TableEltSuper();
+  INIT_ATTRIBUTES__TableEltSuper(fra.me.REG[1]);
+  table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TableEltSuper(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TableEltAttr[57] = {
+  {(bigint) 2899 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltAttr < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltAttr < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltAttr < TableElt: superclass typecheck marker */},
+  {(bigint) 2155 /* 5: TableEltAttr < TableEltProp: superclass typecheck marker */},
+  {(bigint) 2899 /* 6: TableEltAttr < TableEltAttr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109583,14 +144870,9 @@ const classtable_elt_t VFT_TableEltAttr[54] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableEltAttr < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 3 /* 19: TableEltAttr < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109598,7 +144880,6 @@ const classtable_elt_t VFT_TableEltAttr[54] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109606,50 +144887,101 @@ const classtable_elt_t VFT_TableEltAttr[54] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableEltAttr < AbsTableElt: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling_global___TableEltAttr___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 2 /* 46: TableEltAttr < TableElt: superclass init_table position */},
-  {(bigint) compiling_global___TableElt___is_related_to},
-  {(bigint) compiling_global___TableElt___length},
-  {(bigint) compiling_global___TableElt___item},
+  {(bigint) 2 /* 46: TableEltAttr < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
   {(bigint) compiling_global___TableEltAttr___compile_to_c},
-  {(bigint) 3 /* 51: TableEltAttr < TableEltProp: superclass init_table position */},
-  {(bigint) compiling_global___TableEltProp___init},
-  {(bigint) 4 /* 53: TableEltAttr < TableEltAttr: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TableEltAttr::_property */
-val_t NEW_TableEltAttr(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 1 /* 49: TableEltAttr < TableElt: superclass init_table position */},
+  {(bigint) table_computation___TableElt___is_related_to},
+  {(bigint) table_computation___TableElt___length},
+  {(bigint) table_computation___TableElt___item},
+  {(bigint) 0 /* 53: TableEltAttr < TableEltProp: superclass init_table position */},
+  {(bigint) table_computation___TableEltProp___property},
+  {(bigint) table_computation___TableEltProp___init},
+  {(bigint) 4 /* 56: TableEltAttr < TableEltAttr: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TableEltAttr::_property */
+void INIT_ATTRIBUTES__TableEltAttr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltAttr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltAttr(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
+  obj = alloc(sizeof(val_t) * 3);
   obj->vft = (classtable_elt_t*)VFT_TableEltAttr;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TableEltAttr(val_t self, char *from) {
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltAttr(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltAttr;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___TableEltProp____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltAttr_compiling_global___TableEltProp___init(val_t p0) {
+val_t NEW_TableEltAttr_table_computation___TableEltProp___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_TableEltAttr();
-  compiling_global___TableEltProp___init(self, p0, init_table);
-  CHECKNEW_TableEltAttr(self, "compiling_global::TableEltProp::init for TableEltAttr");
-  return self;
-}
-const classtable_elt_t VFT_AbsTableEltClass[56] = {
-  {(bigint) 3391 /* 0: Identity */},
-  {(bigint) 3 /* 1: AbsTableEltClass < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: AbsTableEltClass < AbsTableElt: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 444;
+  fra.me.meth = LOCATE_NEW_TableEltAttr_table_computation___TableEltProp___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:444 */
+  fra.me.REG[1] = NEW_TableEltAttr();
+  INIT_ATTRIBUTES__TableEltAttr(fra.me.REG[1]);
+  table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TableEltAttr(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_AbsTableEltClass[59] = {
+  {(bigint) 2135 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: AbsTableEltClass < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: AbsTableEltClass < AbsTableElt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3391 /* 5: AbsTableEltClass < AbsTableEltClass: superclass typecheck marker */},
+  {(bigint) 2135 /* 6: AbsTableEltClass < AbsTableEltClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109660,14 +144992,9 @@ const classtable_elt_t VFT_AbsTableEltClass[56] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: AbsTableEltClass < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 1 /* 19: AbsTableEltClass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109675,7 +145002,6 @@ const classtable_elt_t VFT_AbsTableEltClass[56] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109683,13 +145009,20 @@ const classtable_elt_t VFT_AbsTableEltClass[56] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: AbsTableEltClass < AbsTableElt: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
+  {(bigint) 0 /* 46: AbsTableEltClass < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109697,39 +145030,83 @@ const classtable_elt_t VFT_AbsTableEltClass[56] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2 /* 53: AbsTableEltClass < AbsTableEltClass: superclass init_table position */},
-  {(bigint) compiling_global___AbsTableEltClass___init},
   {(bigint) compiling_global___AbsTableEltClass___symbol},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute AbsTableEltClass::_local_class */
-val_t NEW_AbsTableEltClass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 2 /* 56: AbsTableEltClass < AbsTableEltClass: superclass init_table position */},
+  {(bigint) table_computation___AbsTableEltClass___local_class},
+  {(bigint) table_computation___AbsTableEltClass___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute AbsTableEltClass::_local_class */
+void INIT_ATTRIBUTES__AbsTableEltClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__AbsTableEltClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AbsTableEltClass(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
+  obj = alloc(sizeof(val_t) * 3);
   obj->vft = (classtable_elt_t*)VFT_AbsTableEltClass;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_AbsTableEltClass(val_t self, char *from) {
-}
-val_t NEW_AbsTableEltClass_compiling_global___AbsTableEltClass___init(val_t p0) {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_AbsTableEltClass();
-  compiling_global___AbsTableEltClass___init(self, p0, init_table);
-  CHECKNEW_AbsTableEltClass(self, "compiling_global::AbsTableEltClass::init for AbsTableEltClass");
-  return self;
-}
-const classtable_elt_t VFT_TableEltClass[57] = {
-  {(bigint) 3427 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableEltClass < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableEltClass < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 211 /* 3: TableEltClass < TableElt: superclass typecheck marker */},
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_AbsTableEltClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_AbsTableEltClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___AbsTableEltClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_AbsTableEltClass_table_computation___AbsTableEltClass___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[3] = {0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 471;
+  fra.me.meth = LOCATE_NEW_AbsTableEltClass_table_computation___AbsTableEltClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:471 */
+  fra.me.REG[1] = NEW_AbsTableEltClass();
+  INIT_ATTRIBUTES__AbsTableEltClass(fra.me.REG[1]);
+  table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_AbsTableEltClass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TableEltClass[60] = {
+  {(bigint) 2179 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltClass < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltClass < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltClass < TableElt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3391 /* 5: TableEltClass < AbsTableEltClass: superclass typecheck marker */},
-  {(bigint) 3427 /* 6: TableEltClass < TableEltClass: superclass typecheck marker */},
+  {(bigint) 2135 /* 6: TableEltClass < AbsTableEltClass: superclass typecheck marker */},
+  {(bigint) 2179 /* 7: TableEltClass < TableEltClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109739,14 +145116,9 @@ const classtable_elt_t VFT_TableEltClass[57] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableEltClass < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TableEltClass < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109754,7 +145126,6 @@ const classtable_elt_t VFT_TableEltClass[57] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109762,53 +145133,104 @@ const classtable_elt_t VFT_TableEltClass[57] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableEltClass < AbsTableElt: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 2 /* 46: TableEltClass < TableElt: superclass init_table position */},
-  {(bigint) compiling_global___TableEltClass___is_related_to},
-  {(bigint) compiling_global___TableElt___length},
-  {(bigint) compiling_global___TableElt___item},
+  {(bigint) 1 /* 46: TableEltClass < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
   {(bigint) compiling_global___TableElt___compile_to_c},
+  {(bigint) 0 /* 49: TableEltClass < TableElt: superclass init_table position */},
+  {(bigint) table_computation___TableEltClass___is_related_to},
+  {(bigint) table_computation___TableElt___length},
+  {(bigint) table_computation___TableElt___item},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3 /* 53: TableEltClass < AbsTableEltClass: superclass init_table position */},
-  {(bigint) compiling_global___AbsTableEltClass___init},
   {(bigint) compiling_global___AbsTableEltClass___symbol},
-  {(bigint) 4 /* 56: TableEltClass < TableEltClass: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TableEltClass::_local_class */
-val_t NEW_TableEltClass(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 3 /* 56: TableEltClass < AbsTableEltClass: superclass init_table position */},
+  {(bigint) table_computation___AbsTableEltClass___local_class},
+  {(bigint) table_computation___AbsTableEltClass___init},
+  {(bigint) 4 /* 59: TableEltClass < TableEltClass: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TableEltClass::_local_class */
+void INIT_ATTRIBUTES__TableEltClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltClass(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
+  obj = alloc(sizeof(val_t) * 3);
   obj->vft = (classtable_elt_t*)VFT_TableEltClass;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TableEltClass(val_t self, char *from) {
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltClass(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltClass;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___AbsTableEltClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltClass_compiling_global___AbsTableEltClass___init(val_t p0) {
+val_t NEW_TableEltClass_table_computation___AbsTableEltClass___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_TableEltClass();
-  compiling_global___AbsTableEltClass___init(self, p0, init_table);
-  CHECKNEW_TableEltClass(self, "compiling_global::AbsTableEltClass::init for TableEltClass");
-  return self;
-}
-const classtable_elt_t VFT_TableEltClassId[56] = {
-  {(bigint) 3423 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableEltClassId < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableEltClassId < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 3423 /* 3: TableEltClassId < TableEltClassId: superclass typecheck marker */},
-  {(bigint) 3231 /* 4: TableEltClassId < ModuleTableElt: superclass typecheck marker */},
-  {(bigint) 3391 /* 5: TableEltClassId < AbsTableEltClass: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 471;
+  fra.me.meth = LOCATE_NEW_TableEltClass_table_computation___AbsTableEltClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:471 */
+  fra.me.REG[1] = NEW_TableEltClass();
+  INIT_ATTRIBUTES__TableEltClass(fra.me.REG[1]);
+  table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TableEltClass(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TableEltClassId[59] = {
+  {(bigint) 2175 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltClassId < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltClassId < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 2175 /* 4: TableEltClassId < TableEltClassId: superclass typecheck marker */},
+  {(bigint) 1899 /* 5: TableEltClassId < ModuleTableElt: superclass typecheck marker */},
+  {(bigint) 2135 /* 6: TableEltClassId < AbsTableEltClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109819,14 +145241,9 @@ const classtable_elt_t VFT_TableEltClassId[56] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableEltClassId < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TableEltClassId < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109834,7 +145251,6 @@ const classtable_elt_t VFT_TableEltClassId[56] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109842,54 +145258,105 @@ const classtable_elt_t VFT_TableEltClassId[56] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableEltClassId < AbsTableElt: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 4 /* 46: TableEltClassId < TableEltClassId: superclass init_table position */},
+  {(bigint) 1 /* 46: TableEltClassId < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
+  {(bigint) 4 /* 48: TableEltClassId < TableEltClassId: superclass init_table position */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2 /* 51: TableEltClassId < ModuleTableElt: superclass init_table position */},
   {(bigint) compiling_global___TableEltClassId___value},
-  {(bigint) 3 /* 53: TableEltClassId < AbsTableEltClass: superclass init_table position */},
-  {(bigint) compiling_global___AbsTableEltClass___init},
+  {(bigint) 0 /* 54: TableEltClassId < ModuleTableElt: superclass init_table position */},
   {(bigint) compiling_global___TableEltClassId___symbol},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TableEltClassId::_local_class */
-val_t NEW_TableEltClassId(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 3 /* 56: TableEltClassId < AbsTableEltClass: superclass init_table position */},
+  {(bigint) table_computation___AbsTableEltClass___local_class},
+  {(bigint) table_computation___AbsTableEltClass___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TableEltClassId::_local_class */
+void INIT_ATTRIBUTES__TableEltClassId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltClassId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltClassId(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
+  obj = alloc(sizeof(val_t) * 3);
   obj->vft = (classtable_elt_t*)VFT_TableEltClassId;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TableEltClassId(val_t self, char *from) {
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltClassId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltClassId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___AbsTableEltClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltClassId_compiling_global___AbsTableEltClass___init(val_t p0) {
+val_t NEW_TableEltClassId_table_computation___AbsTableEltClass___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[5] = {0, 0, 0, 0, 0};
-  val_t self = NEW_TableEltClassId();
-  compiling_global___AbsTableEltClass___init(self, p0, init_table);
-  CHECKNEW_TableEltClassId(self, "compiling_global::AbsTableEltClass::init for TableEltClassId");
-  return self;
-}
-const classtable_elt_t VFT_TableEltClassInitTable[58] = {
-  {(bigint) 4007 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableEltClassInitTable < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableEltClassInitTable < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 211 /* 3: TableEltClassInitTable < TableElt: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 471;
+  fra.me.meth = LOCATE_NEW_TableEltClassId_table_computation___AbsTableEltClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:471 */
+  fra.me.REG[1] = NEW_TableEltClassId();
+  INIT_ATTRIBUTES__TableEltClassId(fra.me.REG[1]);
+  table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TableEltClassId(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TableEltClassInitTable[61] = {
+  {(bigint) 2891 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltClassInitTable < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltClassInitTable < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltClassInitTable < TableElt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3391 /* 5: TableEltClassInitTable < AbsTableEltClass: superclass typecheck marker */},
-  {(bigint) 3427 /* 6: TableEltClassInitTable < TableEltClass: superclass typecheck marker */},
-  {(bigint) 4007 /* 7: TableEltClassInitTable < TableEltClassInitTable: superclass typecheck marker */},
+  {(bigint) 2135 /* 6: TableEltClassInitTable < AbsTableEltClass: superclass typecheck marker */},
+  {(bigint) 2179 /* 7: TableEltClassInitTable < TableEltClass: superclass typecheck marker */},
+  {(bigint) 2891 /* 8: TableEltClassInitTable < TableEltClassInitTable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109898,14 +145365,9 @@ const classtable_elt_t VFT_TableEltClassInitTable[58] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableEltClassInitTable < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TableEltClassInitTable < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109913,7 +145375,6 @@ const classtable_elt_t VFT_TableEltClassInitTable[58] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -109921,56 +145382,107 @@ const classtable_elt_t VFT_TableEltClassInitTable[58] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableEltClassInitTable < AbsTableElt: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 2 /* 46: TableEltClassInitTable < TableElt: superclass init_table position */},
-  {(bigint) compiling_global___TableEltClass___is_related_to},
-  {(bigint) compiling_global___TableElt___length},
-  {(bigint) compiling_global___TableElt___item},
+  {(bigint) 1 /* 46: TableEltClassInitTable < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
   {(bigint) compiling_global___TableEltClassInitTable___compile_to_c},
+  {(bigint) 0 /* 49: TableEltClassInitTable < TableElt: superclass init_table position */},
+  {(bigint) table_computation___TableEltClass___is_related_to},
+  {(bigint) table_computation___TableElt___length},
+  {(bigint) table_computation___TableElt___item},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3 /* 53: TableEltClassInitTable < AbsTableEltClass: superclass init_table position */},
-  {(bigint) compiling_global___AbsTableEltClass___init},
   {(bigint) compiling_global___TableEltClassInitTable___symbol},
-  {(bigint) 4 /* 56: TableEltClassInitTable < TableEltClass: superclass init_table position */},
-  {(bigint) 5 /* 57: TableEltClassInitTable < TableEltClassInitTable: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TableEltClassInitTable::_local_class */
-val_t NEW_TableEltClassInitTable(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 3 /* 56: TableEltClassInitTable < AbsTableEltClass: superclass init_table position */},
+  {(bigint) table_computation___AbsTableEltClass___local_class},
+  {(bigint) table_computation___AbsTableEltClass___init},
+  {(bigint) 4 /* 59: TableEltClassInitTable < TableEltClass: superclass init_table position */},
+  {(bigint) 5 /* 60: TableEltClassInitTable < TableEltClassInitTable: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TableEltClassInitTable::_local_class */
+void INIT_ATTRIBUTES__TableEltClassInitTable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltClassInitTable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltClassInitTable(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
+  obj = alloc(sizeof(val_t) * 3);
   obj->vft = (classtable_elt_t*)VFT_TableEltClassInitTable;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TableEltClassInitTable(val_t self, char *from) {
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltClassInitTable(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltClassInitTable;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___AbsTableEltClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltClassInitTable_compiling_global___AbsTableEltClass___init(val_t p0) {
+val_t NEW_TableEltClassInitTable_table_computation___AbsTableEltClass___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[6] = {0, 0, 0, 0, 0, 0};
-  val_t self = NEW_TableEltClassInitTable();
-  compiling_global___AbsTableEltClass___init(self, p0, init_table);
-  CHECKNEW_TableEltClassInitTable(self, "compiling_global::AbsTableEltClass::init for TableEltClassInitTable");
-  return self;
-}
-const classtable_elt_t VFT_TableEltClassColor[58] = {
-  {(bigint) 4011 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableEltClassColor < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableEltClassColor < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 211 /* 3: TableEltClassColor < TableElt: superclass typecheck marker */},
-  {(bigint) 3231 /* 4: TableEltClassColor < ModuleTableElt: superclass typecheck marker */},
-  {(bigint) 3391 /* 5: TableEltClassColor < AbsTableEltClass: superclass typecheck marker */},
-  {(bigint) 3427 /* 6: TableEltClassColor < TableEltClass: superclass typecheck marker */},
-  {(bigint) 4011 /* 7: TableEltClassColor < TableEltClassColor: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 471;
+  fra.me.meth = LOCATE_NEW_TableEltClassInitTable_table_computation___AbsTableEltClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:471 */
+  fra.me.REG[1] = NEW_TableEltClassInitTable();
+  INIT_ATTRIBUTES__TableEltClassInitTable(fra.me.REG[1]);
+  table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TableEltClassInitTable(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TableEltClassColor[61] = {
+  {(bigint) 2895 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltClassColor < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltClassColor < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltClassColor < TableElt: superclass typecheck marker */},
+  {(bigint) 1899 /* 5: TableEltClassColor < ModuleTableElt: superclass typecheck marker */},
+  {(bigint) 2135 /* 6: TableEltClassColor < AbsTableEltClass: superclass typecheck marker */},
+  {(bigint) 2179 /* 7: TableEltClassColor < TableEltClass: superclass typecheck marker */},
+  {(bigint) 2895 /* 8: TableEltClassColor < TableEltClassColor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109979,14 +145491,9 @@ const classtable_elt_t VFT_TableEltClassColor[58] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableEltClassColor < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TableEltClassColor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -109994,7 +145501,6 @@ const classtable_elt_t VFT_TableEltClassColor[58] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -110002,53 +145508,104 @@ const classtable_elt_t VFT_TableEltClassColor[58] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableEltClassColor < AbsTableElt: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 2 /* 46: TableEltClassColor < TableElt: superclass init_table position */},
-  {(bigint) compiling_global___TableEltClass___is_related_to},
-  {(bigint) compiling_global___TableElt___length},
-  {(bigint) compiling_global___TableElt___item},
+  {(bigint) 1 /* 46: TableEltClassColor < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
   {(bigint) compiling_global___TableEltClassColor___compile_to_c},
-  {(bigint) 5 /* 51: TableEltClassColor < ModuleTableElt: superclass init_table position */},
+  {(bigint) 0 /* 49: TableEltClassColor < TableElt: superclass init_table position */},
+  {(bigint) table_computation___TableEltClass___is_related_to},
+  {(bigint) table_computation___TableElt___length},
+  {(bigint) table_computation___TableElt___item},
   {(bigint) compiling_global___TableEltClassColor___value},
-  {(bigint) 3 /* 53: TableEltClassColor < AbsTableEltClass: superclass init_table position */},
-  {(bigint) compiling_global___AbsTableEltClass___init},
+  {(bigint) 5 /* 54: TableEltClassColor < ModuleTableElt: superclass init_table position */},
   {(bigint) compiling_global___TableEltClassColor___symbol},
-  {(bigint) 4 /* 56: TableEltClassColor < TableEltClass: superclass init_table position */},
-  {(bigint) 6 /* 57: TableEltClassColor < TableEltClassColor: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TableEltClassColor::_local_class */
-val_t NEW_TableEltClassColor(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 3 /* 56: TableEltClassColor < AbsTableEltClass: superclass init_table position */},
+  {(bigint) table_computation___AbsTableEltClass___local_class},
+  {(bigint) table_computation___AbsTableEltClass___init},
+  {(bigint) 4 /* 59: TableEltClassColor < TableEltClass: superclass init_table position */},
+  {(bigint) 6 /* 60: TableEltClassColor < TableEltClassColor: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TableEltClassColor::_local_class */
+void INIT_ATTRIBUTES__TableEltClassColor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltClassColor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltClassColor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 2);
+  obj = alloc(sizeof(val_t) * 3);
   obj->vft = (classtable_elt_t*)VFT_TableEltClassColor;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TableEltClassColor(val_t self, char *from) {
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltClassColor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltClassColor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___AbsTableEltClass____local_class(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltClassColor_compiling_global___AbsTableEltClass___init(val_t p0) {
+val_t NEW_TableEltClassColor_table_computation___AbsTableEltClass___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
-  val_t self = NEW_TableEltClassColor();
-  compiling_global___AbsTableEltClass___init(self, p0, init_table);
-  CHECKNEW_TableEltClassColor(self, "compiling_global::AbsTableEltClass::init for TableEltClassColor");
-  return self;
-}
-const classtable_elt_t VFT_TableEltComposite[54] = {
-  {(bigint) 3415 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableEltComposite < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableEltComposite < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 211 /* 3: TableEltComposite < TableElt: superclass typecheck marker */},
-  {(bigint) 3415 /* 4: TableEltComposite < TableEltComposite: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 471;
+  fra.me.meth = LOCATE_NEW_TableEltClassColor_table_computation___AbsTableEltClass___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:471 */
+  fra.me.REG[1] = NEW_TableEltClassColor();
+  INIT_ATTRIBUTES__TableEltClassColor(fra.me.REG[1]);
+  table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TableEltClassColor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TableEltComposite[56] = {
+  {(bigint) 2163 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltComposite < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltComposite < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltComposite < TableElt: superclass typecheck marker */},
+  {(bigint) 2163 /* 5: TableEltComposite < TableEltComposite: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110060,14 +145617,9 @@ const classtable_elt_t VFT_TableEltComposite[54] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableEltComposite < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TableEltComposite < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -110075,7 +145627,6 @@ const classtable_elt_t VFT_TableEltComposite[54] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -110083,51 +145634,111 @@ const classtable_elt_t VFT_TableEltComposite[54] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableEltComposite < AbsTableElt: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling_global___AbsTableElt___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 2 /* 46: TableEltComposite < TableElt: superclass init_table position */},
-  {(bigint) compiling_global___TableEltComposite___is_related_to},
-  {(bigint) compiling_global___TableEltComposite___length},
-  {(bigint) compiling_global___TableEltComposite___item},
+  {(bigint) 1 /* 46: TableEltComposite < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
   {(bigint) compiling_global___TableEltComposite___compile_to_c},
-  {(bigint) 3 /* 51: TableEltComposite < TableEltComposite: superclass init_table position */},
-  {(bigint) compiling_global___TableEltComposite___add},
-  {(bigint) compiling_global___TableEltComposite___init},
-};
-/* 0: Pointer to the classtable */
-/* 1: Attribute TableEltComposite::_table */
-/* 2: Attribute TableEltComposite::_cc */
-/* 3: Attribute TableEltComposite::_offsets */
-val_t NEW_TableEltComposite(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 0 /* 49: TableEltComposite < TableElt: superclass init_table position */},
+  {(bigint) table_computation___TableEltComposite___is_related_to},
+  {(bigint) table_computation___TableEltComposite___length},
+  {(bigint) table_computation___TableEltComposite___item},
+  {(bigint) 3 /* 53: TableEltComposite < TableEltComposite: superclass init_table position */},
+  {(bigint) table_computation___TableEltComposite___add},
+  {(bigint) table_computation___TableEltComposite___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TableEltComposite::_table */
+/* 3: Attribute TableEltComposite::_cc */
+/* 4: Attribute TableEltComposite::_offsets */
+void INIT_ATTRIBUTES__TableEltComposite(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltComposite;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltComposite(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
+  obj = alloc(sizeof(val_t) * 5);
   obj->vft = (classtable_elt_t*)VFT_TableEltComposite;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TableEltComposite(val_t self, char *from) {
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltComposite(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltComposite;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_table_computation___TableEltComposite____table(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_table", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___TableEltComposite____cc(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cc", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_table_computation___TableEltComposite____offsets(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_offsets", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_TableEltComposite_compiling_global___TableEltComposite___init(val_t p0) {
+val_t NEW_TableEltComposite_table_computation___TableEltComposite___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TableEltComposite();
-  compiling_global___TableEltComposite___init(self, p0, init_table);
-  CHECKNEW_TableEltComposite(self, "compiling_global::TableEltComposite::init for TableEltComposite");
-  return self;
-}
-const classtable_elt_t VFT_TableEltClassSelfId[52] = {
-  {(bigint) 3419 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableEltClassSelfId < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableEltClassSelfId < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 211 /* 3: TableEltClassSelfId < TableElt: superclass typecheck marker */},
-  {(bigint) 3419 /* 4: TableEltClassSelfId < TableEltClassSelfId: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 525;
+  fra.me.meth = LOCATE_NEW_TableEltComposite_table_computation___TableEltComposite___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:525 */
+  fra.me.REG[1] = NEW_TableEltComposite();
+  INIT_ATTRIBUTES__TableEltComposite(fra.me.REG[1]);
+  table_computation___TableEltComposite___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_TableEltComposite(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_TableEltClassSelfId[54] = {
+  {(bigint) 2167 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltClassSelfId < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltClassSelfId < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltClassSelfId < TableElt: superclass typecheck marker */},
+  {(bigint) 2167 /* 5: TableEltClassSelfId < TableEltClassSelfId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110139,14 +145750,9 @@ const classtable_elt_t VFT_TableEltClassSelfId[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableEltClassSelfId < Object: superclass init_table position */},
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TableEltClassSelfId < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -110154,7 +145760,6 @@ const classtable_elt_t VFT_TableEltClassSelfId[52] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -110162,46 +145767,85 @@ const classtable_elt_t VFT_TableEltClassSelfId[52] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableEltClassSelfId < AbsTableElt: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling_global___AbsTableElt___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 2 /* 46: TableEltClassSelfId < TableElt: superclass init_table position */},
-  {(bigint) compiling_global___TableEltClassSelfId___is_related_to},
-  {(bigint) compiling_global___TableElt___length},
-  {(bigint) compiling_global___TableElt___item},
+  {(bigint) 1 /* 46: TableEltClassSelfId < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
   {(bigint) compiling_global___TableEltClassSelfId___compile_to_c},
-  {(bigint) 3 /* 51: TableEltClassSelfId < TableEltClassSelfId: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_TableEltClassSelfId(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 0 /* 49: TableEltClassSelfId < TableElt: superclass init_table position */},
+  {(bigint) table_computation___TableEltClassSelfId___is_related_to},
+  {(bigint) table_computation___TableElt___length},
+  {(bigint) table_computation___TableElt___item},
+  {(bigint) 3 /* 53: TableEltClassSelfId < TableEltClassSelfId: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+void INIT_ATTRIBUTES__TableEltClassSelfId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltClassSelfId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltClassSelfId(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
+  obj = alloc(sizeof(val_t) * 2);
   obj->vft = (classtable_elt_t*)VFT_TableEltClassSelfId;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TableEltClassSelfId(val_t self, char *from) {
-}
-val_t NEW_TableEltClassSelfId_compiling_global___AbsTableElt___init() {
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltClassSelfId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltClassSelfId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltClassSelfId_table_computation___AbsTableElt___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TableEltClassSelfId();
-  compiling_global___AbsTableElt___init(self, init_table);
-  CHECKNEW_TableEltClassSelfId(self, "compiling_global::AbsTableElt::init for TableEltClassSelfId");
-  return self;
-}
-const classtable_elt_t VFT_TableEltVftPointer[52] = {
-  {(bigint) 3407 /* 0: Identity */},
-  {(bigint) 3 /* 1: TableEltVftPointer < Object: superclass typecheck marker */},
-  {(bigint) 195 /* 2: TableEltVftPointer < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 211 /* 3: TableEltVftPointer < TableElt: superclass typecheck marker */},
-  {(bigint) 3407 /* 4: TableEltVftPointer < TableEltVftPointer: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TableEltClassSelfId_table_computation___AbsTableElt___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_TableEltClassSelfId();
+  INIT_ATTRIBUTES__TableEltClassSelfId(fra.me.REG[0]);
+  table_computation___AbsTableElt___init(fra.me.REG[0], init_table);
+  CHECKNEW_TableEltClassSelfId(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_TableEltClassObjectSize[54] = {
+  {(bigint) 2171 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltClassObjectSize < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltClassObjectSize < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltClassObjectSize < TableElt: superclass typecheck marker */},
+  {(bigint) 2171 /* 5: TableEltClassObjectSize < TableEltClassObjectSize: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110213,14 +145857,223 @@ const classtable_elt_t VFT_TableEltVftPointer[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TableEltClassObjectSize < Object: superclass init_table position */},
+  {(bigint) kernel___Object___object_id},
+  {(bigint) kernel___Object___is_same_type},
+  {(bigint) kernel___Object_____eqeq},
+  {(bigint) kernel___Object_____neq},
+  {(bigint) kernel___Object___output},
+  {(bigint) kernel___Object___exit},
+  {(bigint) kernel___Object___sys},
+  {(bigint) file___Object___printn},
+  {(bigint) file___Object___print},
+  {(bigint) file___Object___getc},
+  {(bigint) file___Object___gets},
+  {(bigint) file___Object___stdin},
+  {(bigint) file___Object___stdout},
+  {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
+  {(bigint) math___Object___atan2},
+  {(bigint) math___Object___pi},
+  {(bigint) math___Object___srand_from},
+  {(bigint) math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
+  {(bigint) compiling_global___AbsTableElt___compile_macros},
+  {(bigint) 1 /* 46: TableEltClassObjectSize < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
+  {(bigint) compiling_global___TableEltClassObjectSize___compile_to_c},
+  {(bigint) 0 /* 49: TableEltClassObjectSize < TableElt: superclass init_table position */},
+  {(bigint) table_computation___TableEltClassObjectSize___is_related_to},
+  {(bigint) table_computation___TableElt___length},
+  {(bigint) table_computation___TableElt___item},
+  {(bigint) 3 /* 53: TableEltClassObjectSize < TableEltClassObjectSize: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+void INIT_ATTRIBUTES__TableEltClassObjectSize(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltClassObjectSize;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltClassObjectSize(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_TableEltClassObjectSize;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltClassObjectSize(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltClassObjectSize;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltClassObjectSize_table_computation___AbsTableElt___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TableEltClassObjectSize_table_computation___AbsTableElt___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_TableEltClassObjectSize();
+  INIT_ATTRIBUTES__TableEltClassObjectSize(fra.me.REG[0]);
+  table_computation___AbsTableElt___init(fra.me.REG[0], init_table);
+  CHECKNEW_TableEltClassObjectSize(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_TableEltObjectId[54] = {
+  {(bigint) 2159 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltObjectId < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltObjectId < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltObjectId < TableElt: superclass typecheck marker */},
+  {(bigint) 2159 /* 5: TableEltObjectId < TableEltObjectId: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TableEltObjectId < Object: superclass init_table position */},
+  {(bigint) kernel___Object___object_id},
+  {(bigint) kernel___Object___is_same_type},
+  {(bigint) kernel___Object_____eqeq},
+  {(bigint) kernel___Object_____neq},
+  {(bigint) kernel___Object___output},
+  {(bigint) kernel___Object___exit},
+  {(bigint) kernel___Object___sys},
+  {(bigint) file___Object___printn},
+  {(bigint) file___Object___print},
+  {(bigint) file___Object___getc},
+  {(bigint) file___Object___gets},
+  {(bigint) file___Object___stdin},
+  {(bigint) file___Object___stdout},
+  {(bigint) file___Object___stderr},
   {(bigint) string___Object___to_s},
   {(bigint) string___Object___inspect},
   {(bigint) string___Object___inspect_head},
   {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: TableEltVftPointer < Object: superclass init_table position */},
+  {(bigint) hash___Object___hash},
+  {(bigint) math___Object___atan2},
+  {(bigint) math___Object___pi},
+  {(bigint) math___Object___srand_from},
+  {(bigint) math___Object___srand},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) compiling_global___AbsTableElt___compile_macros},
+  {(bigint) 1 /* 46: TableEltObjectId < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
+  {(bigint) compiling_global___TableEltObjectId___compile_to_c},
+  {(bigint) 0 /* 49: TableEltObjectId < TableElt: superclass init_table position */},
+  {(bigint) table_computation___TableEltObjectId___is_related_to},
+  {(bigint) table_computation___TableElt___length},
+  {(bigint) table_computation___TableElt___item},
+  {(bigint) 3 /* 53: TableEltObjectId < TableEltObjectId: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+void INIT_ATTRIBUTES__TableEltObjectId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltObjectId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltObjectId(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 2);
+  obj->vft = (classtable_elt_t*)VFT_TableEltObjectId;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltObjectId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltObjectId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltObjectId_table_computation___AbsTableElt___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TableEltObjectId_table_computation___AbsTableElt___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_TableEltObjectId();
+  INIT_ATTRIBUTES__TableEltObjectId(fra.me.REG[0]);
+  table_computation___AbsTableElt___init(fra.me.REG[0], init_table);
+  CHECKNEW_TableEltObjectId(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_TableEltVftPointer[54] = {
+  {(bigint) 2151 /* 0: Identity */},
+  {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: TableEltVftPointer < Object: superclass typecheck marker */},
+  {(bigint) 271 /* 3: TableEltVftPointer < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltVftPointer < TableElt: superclass typecheck marker */},
+  {(bigint) 2151 /* 5: TableEltVftPointer < TableEltVftPointer: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 2 /* 19: TableEltVftPointer < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -110228,7 +146081,6 @@ const classtable_elt_t VFT_TableEltVftPointer[52] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -110236,45 +146088,83 @@ const classtable_elt_t VFT_TableEltVftPointer[52] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: TableEltVftPointer < AbsTableElt: superclass init_table position */},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling_global___AbsTableElt___compile_macros},
-  {(bigint) compiling_global___AbsTableElt___init},
-  {(bigint) 2 /* 46: TableEltVftPointer < TableElt: superclass init_table position */},
-  {(bigint) compiling_global___TableEltVftPointer___is_related_to},
-  {(bigint) compiling_global___TableElt___length},
-  {(bigint) compiling_global___TableElt___item},
+  {(bigint) 1 /* 46: TableEltVftPointer < AbsTableElt: superclass init_table position */},
+  {(bigint) table_computation___AbsTableElt___init},
   {(bigint) compiling_global___TableEltVftPointer___compile_to_c},
-  {(bigint) 3 /* 51: TableEltVftPointer < TableEltVftPointer: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-val_t NEW_TableEltVftPointer(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+  {(bigint) 0 /* 49: TableEltVftPointer < TableElt: superclass init_table position */},
+  {(bigint) table_computation___TableEltVftPointer___is_related_to},
+  {(bigint) table_computation___TableElt___length},
+  {(bigint) table_computation___TableElt___item},
+  {(bigint) 3 /* 53: TableEltVftPointer < TableEltVftPointer: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+void INIT_ATTRIBUTES__TableEltVftPointer(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__TableEltVftPointer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltVftPointer(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
+  obj = alloc(sizeof(val_t) * 2);
   obj->vft = (classtable_elt_t*)VFT_TableEltVftPointer;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_TableEltVftPointer(val_t self, char *from) {
-}
-val_t NEW_TableEltVftPointer_compiling_global___AbsTableElt___init() {
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_TableEltVftPointer(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_TableEltVftPointer;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltVftPointer_table_computation___AbsTableElt___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
-  val_t self = NEW_TableEltVftPointer();
-  compiling_global___AbsTableElt___init(self, init_table);
-  CHECKNEW_TableEltVftPointer(self, "compiling_global::AbsTableElt::init for TableEltVftPointer");
-  return self;
-}
-const classtable_elt_t VFT_ClassSorter[52] = {
-  {(bigint) 3371 /* 0: Identity */},
-  {(bigint) 3 /* 1: ClassSorter < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 2: ClassSorter < AbstractSorter: superclass typecheck marker */},
-  {(bigint) 3371 /* 3: ClassSorter < ClassSorter: superclass typecheck marker */},
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_TableEltVftPointer_table_computation___AbsTableElt___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = NEW_TableEltVftPointer();
+  INIT_ATTRIBUTES__TableEltVftPointer(fra.me.REG[0]);
+  table_computation___AbsTableElt___init(fra.me.REG[0], init_table);
+  CHECKNEW_TableEltVftPointer(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_I2CCompilerVisitor[75] = {
+  {(bigint) 223 /* 0: Identity */},
+  {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3 /* 2: I2CCompilerVisitor < Object: superclass typecheck marker */},
+  {(bigint) 223 /* 3: I2CCompilerVisitor < I2CCompilerVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110287,14 +146177,10 @@ const classtable_elt_t VFT_ClassSorter[52] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) utils___Object___cmangle},
-  {(bigint) utils___Object___cmangle_table},
-  {(bigint) hash___Object___hash},
-  {(bigint) string___Object___to_s},
-  {(bigint) string___Object___inspect},
-  {(bigint) string___Object___inspect_head},
-  {(bigint) string___Object___args},
-  {(bigint) 0 /* 23: ClassSorter < Object: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) time___Object___get_time},
+  {(bigint) 0 /* 19: I2CCompilerVisitor < Object: superclass init_table position */},
   {(bigint) kernel___Object___object_id},
   {(bigint) kernel___Object___is_same_type},
   {(bigint) kernel___Object_____eqeq},
@@ -110302,7 +146188,6 @@ const classtable_elt_t VFT_ClassSorter[52] = {
   {(bigint) kernel___Object___output},
   {(bigint) kernel___Object___exit},
   {(bigint) kernel___Object___sys},
-  {(bigint) time___Object___get_time},
   {(bigint) file___Object___printn},
   {(bigint) file___Object___print},
   {(bigint) file___Object___getc},
@@ -110310,45 +146195,230 @@ const classtable_elt_t VFT_ClassSorter[52] = {
   {(bigint) file___Object___stdin},
   {(bigint) file___Object___stdout},
   {(bigint) file___Object___stderr},
+  {(bigint) string___Object___to_s},
+  {(bigint) string___Object___inspect},
+  {(bigint) string___Object___inspect_head},
+  {(bigint) string___Object___args},
+  {(bigint) hash___Object___hash},
   {(bigint) math___Object___atan2},
   {(bigint) math___Object___pi},
   {(bigint) math___Object___srand_from},
   {(bigint) math___Object___srand},
-  {(bigint) 1 /* 43: ClassSorter < AbstractSorter: superclass init_table position */},
-  {(bigint) compiling_global___ClassSorter___compare},
-  {(bigint) sorter___AbstractSorter___sort},
-  {(bigint) sorter___AbstractSorter___sub_sort},
-  {(bigint) sorter___AbstractSorter___quick_sort},
-  {(bigint) sorter___AbstractSorter___bubble_sort},
-  {(bigint) sorter___AbstractSorter___init},
-  {(bigint) 2 /* 50: ClassSorter < ClassSorter: superclass init_table position */},
-  {(bigint) compiling_global___ClassSorter___init},
+  {(bigint) utils___Object___cmangle},
+  {(bigint) utils___Object___cmangle_table},
+  {(bigint) 1 /* 45: I2CCompilerVisitor < I2CCompilerVisitor: superclass init_table position */},
+  {(bigint) compiling_icode___I2CCompilerVisitor___register},
+  {(bigint) compiling_icode___I2CCompilerVisitor___registers},
+  {(bigint) compiling_icode___I2CCompilerVisitor___new_number},
+  {(bigint) compiling_icode___I2CCompilerVisitor___lab},
+  {(bigint) compiling_icode___I2CCompilerVisitor___closures},
+  {(bigint) compiling_icode___I2CCompilerVisitor___clostypes},
+  {(bigint) compiling_icode___I2CCompilerVisitor___local_labels},
+  {(bigint) compiling_icode___I2CCompilerVisitor___local_labels__eq},
+  {(bigint) compiling_icode___I2CCompilerVisitor___escaped_labels},
+  {(bigint) compiling_icode___I2CCompilerVisitor___escaped_labels__eq},
+  {(bigint) compiling_icode___I2CCompilerVisitor___register_escape_label},
+  {(bigint) compiling_icode___I2CCompilerVisitor___add_label},
+  {(bigint) compiling_icode___I2CCompilerVisitor___add_goto},
+  {(bigint) compiling_icode___I2CCompilerVisitor___marks_to_seq},
+  {(bigint) compiling_icode___I2CCompilerVisitor___closure},
+  {(bigint) compiling_icode___I2CCompilerVisitor___closure__eq},
+  {(bigint) compiling_icode___I2CCompilerVisitor___visitor},
+  {(bigint) compiling_icode___I2CCompilerVisitor___iroutine},
+  {(bigint) compiling_icode___I2CCompilerVisitor___return_label},
+  {(bigint) compiling_icode___I2CCompilerVisitor___return_label__eq},
+  {(bigint) compiling_icode___I2CCompilerVisitor___add_decl},
+  {(bigint) compiling_icode___I2CCompilerVisitor___new_instr},
+  {(bigint) compiling_icode___I2CCompilerVisitor___add_instr},
+  {(bigint) compiling_icode___I2CCompilerVisitor___indent},
+  {(bigint) compiling_icode___I2CCompilerVisitor___unindent},
+  {(bigint) compiling_icode___I2CCompilerVisitor___add_assignment},
+  {(bigint) compiling_icode___I2CCompilerVisitor___add_location},
+  {(bigint) compiling_icode___I2CCompilerVisitor___basecname},
+  {(bigint) compiling_icode___I2CCompilerVisitor___init},
 };
 /* 0: Pointer to the classtable */
-val_t NEW_ClassSorter(void) {
-  val_t variable[1];
-  struct WBT_ **closurevariable = NULL;
-  /* Register variable[0]: Local variable */
+/* 1: Object_id */
+/* 2: Attribute I2CCompilerVisitor::_ids */
+/* 3: Attribute I2CCompilerVisitor::_ids2 */
+/* 4: Attribute I2CCompilerVisitor::_last_number */
+/* 5: Attribute I2CCompilerVisitor::_closures */
+/* 6: Attribute I2CCompilerVisitor::_clostypes */
+/* 7: Attribute I2CCompilerVisitor::_local_labels */
+/* 8: Attribute I2CCompilerVisitor::_escaped_labels */
+/* 9: Attribute I2CCompilerVisitor::_marks_to_seq */
+/* 10: Attribute I2CCompilerVisitor::_closure */
+/* 11: Attribute I2CCompilerVisitor::_visitor */
+/* 12: Attribute I2CCompilerVisitor::_iroutine */
+/* 13: Attribute I2CCompilerVisitor::_return_label */
+/* 14: Attribute I2CCompilerVisitor::_last_location */
+/* 15: Attribute I2CCompilerVisitor::_next_location */
+/* 16: Attribute I2CCompilerVisitor::_basecname */
+void INIT_ATTRIBUTES__I2CCompilerVisitor(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__I2CCompilerVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_icode.nit:27 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_icode.nit:29 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_compiling_icode___I2CCompilerVisitor____ids2(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_icode.nit:76 */
+  REGB0 = TAG_Int(0);
+  ATTR_compiling_icode___I2CCompilerVisitor____last_number(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_icode.nit:97 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_compiling_icode___I2CCompilerVisitor____closures(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_icode.nit:100 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_compiling_icode___I2CCompilerVisitor____clostypes(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_icode.nit:103 */
+  fra.me.REG[1] = NEW_HashSet_hash_collection___HashSet___init();
+  ATTR_compiling_icode___I2CCompilerVisitor____local_labels(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_icode.nit:107 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_icode.nit:143 */
+  fra.me.REG[1] = NEW_HashMap_hash_collection___HashMap___init();
+  ATTR_compiling_icode___I2CCompilerVisitor____marks_to_seq(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_icode.nit:146 */
+  REGB0 = TAG_Bool(false);
+  ATTR_compiling_icode___I2CCompilerVisitor____closure(fra.me.REG[0]) = REGB0;
+  /* ./compiling//compiling_icode.nit:154 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_icode___I2CCompilerVisitor____return_label(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_icode.nit:201 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_icode___I2CCompilerVisitor____last_location(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_icode.nit:202 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_compiling_icode___I2CCompilerVisitor____next_location(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_I2CCompilerVisitor(void)
+{
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 1);
-  obj->vft = (classtable_elt_t*)VFT_ClassSorter;
-  variable[0] = OBJ2VAL(obj);
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_ClassSorter(val_t self, char *from) {
+  obj = alloc(sizeof(val_t) * 17);
+  obj->vft = (classtable_elt_t*)VFT_I2CCompilerVisitor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_I2CCompilerVisitor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_I2CCompilerVisitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_ids", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____ids2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_ids2", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____last_number(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_last_number", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____closures(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_closures", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____clostypes(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_clostypes", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____local_labels(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_local_labels", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_escaped_labels", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____marks_to_seq(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_marks_to_seq", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____closure(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____visitor(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____iroutine(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_iroutine", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_compiling_icode___I2CCompilerVisitor____basecname(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_basecname", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
 }
-val_t NEW_ClassSorter_compiling_global___ClassSorter___init() {
-  int init_table[3] = {0, 0, 0};
-  val_t self = NEW_ClassSorter();
-  compiling_global___ClassSorter___init(self, init_table);
-  CHECKNEW_ClassSorter(self, "compiling_global::ClassSorter::init for ClassSorter");
-  return self;
+val_t NEW_I2CCompilerVisitor_compiling_icode___I2CCompilerVisitor___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  int init_table[2] = {0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 221;
+  fra.me.meth = LOCATE_NEW_I2CCompilerVisitor_compiling_icode___I2CCompilerVisitor___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./compiling//compiling_icode.nit:221 */
+  fra.me.REG[3] = NEW_I2CCompilerVisitor();
+  INIT_ATTRIBUTES__I2CCompilerVisitor(fra.me.REG[3]);
+  compiling_icode___I2CCompilerVisitor___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_I2CCompilerVisitor(fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[3];
 }
 classtable_t TAG2VFT[4] = {NULL, (const classtable_t)VFT_Int, (const classtable_t)VFT_Char, (const classtable_t)VFT_Bool};
 int main(int argc, char **argv) {
   prepare_signals();
   glob_argc = argc; glob_argv = argv;
   G_sys = NEW_Sys();
+  register_static_object(&G_sys);
   nitc___Sys___main(G_sys);
   return 0;
 }